基于CPLD的電器定時(shí)開(kāi)關(guān)控制系統設計
2系統功能及操作
系統上電時(shí)復位,時(shí)鐘顯示為0時(shí)0分0秒,按下時(shí)間設置鍵設定時(shí)間,數字鐘開(kāi)始工作,數碼管顯示當前時(shí)間;按下開(kāi)啟電器編號設置鍵,再按下要定時(shí)開(kāi)啟的電器編號,對應發(fā)光二極管亮,表示設置有效;按下電器開(kāi)啟時(shí)間設置按鍵;再依次輸入4位十進(jìn)制的小時(shí)和分鐘,作為開(kāi)啟時(shí)間;按下電器關(guān)閉時(shí)間設置按鍵,再依次輸入4位十進(jìn)制的小時(shí)和分鐘,作為關(guān)閉時(shí)間。至此定時(shí)開(kāi)關(guān)設置完成,對于電飯鍋等具有保持功能的電器,則不用設置定時(shí)關(guān)閉。使用Verilog HDL編寫(xiě)CPLD程序,理論上可同時(shí)設置多個(gè)電器的定時(shí)自動(dòng)開(kāi)啟,本設計可同時(shí)設置3個(gè)電器。
3硬件設計
硬件設計采用Altera公司的CPLD EPM7128SLC84-6,簡(jiǎn)化了外圍電路,穩定性和可靠性高,成本低。220 V、50 Hz工頻電源經(jīng)變壓器、電橋整流后通過(guò)三端穩壓器,提供工作電壓,其電源電路如圖1所示。
本系統設計使用6個(gè)數碼管顯示時(shí)間,3個(gè)發(fā)光二極管標志是否定時(shí)。電器開(kāi)啟信號經(jīng)三極管放大后接繼電器,通過(guò)繼電器吸合導通電源線(xiàn),開(kāi)啟電器。
4軟件設計
Verilog HDL是硬件設計人員和QuartusⅡ界面之間的交互手段,其具體物理建模能力強,設計方便,可讀性好,語(yǔ)法類(lèi)似C語(yǔ)言,與VHDL相比,更容易學(xué)習和掌握,與原理圖設計法相比,設計和分析更容易,可避免考慮畫(huà)面的布局及美觀(guān),修改也方便。本設計CPLD部分完全使用Verilog HDL編寫(xiě)。
4.1按鍵掃描及鍵值讀取
CPLD檢測到kb下降沿時(shí),表示有鍵按下時(shí),為防止按鍵抖動(dòng),延時(shí)一段時(shí)間再檢測,若確有鍵按下,CPLD采用低電平逐行掃描,待找到按鍵時(shí),根據掃捕得到的數值,確定按鍵值。對于無(wú)效按鍵,設按鍵值為15。輸入信號kb的下降沿觸發(fā)對鍵值的讀取,可保證對于每一次按鍵,僅作一次處理。主要程序如下:
4.2功能鍵的判斷
程序初始化時(shí)為設定時(shí)間、開(kāi)啟電器編號、電器開(kāi)啟時(shí)間、電器關(guān)閉時(shí)間4個(gè)功能鍵設置對應按鍵值。定義功能標志寄存器fun,并使用格雷碼標志各個(gè)功能,相鄰兩個(gè)功能的編碼僅有一位不同,可避免狀態(tài)跳變,比目前常用的獨熱碼節省CPLD邏輯單元。由于本設計中寄存器fun只有5個(gè)狀態(tài),選用3位格雷碼,并對編碼方式進(jìn)行改進(jìn)。根據上一步得到的按鍵值判斷具體要實(shí)現哪個(gè)功能,并依此設置fun的值,如下所示:
4.3數字鍵的判斷和處理
先根據鍵值判斷是哪一個(gè)數字鍵,再根據功能標志寄存器fun判斷進(jìn)行哪項設置。若正在進(jìn)行的是時(shí)間設置,則將時(shí)間寄存器左移4位,將數字值存入低位;若為設定需要開(kāi)啟電器的編號狀態(tài),則電器編號數組num對應位置1,并通過(guò)電阻使相應發(fā)光二極管點(diǎn)亮,否則為0;若為設定電器開(kāi)啟時(shí)間狀態(tài),相應電器的開(kāi)啟時(shí)間寄存器timeon左移4位,將數字值存入低位;若為設定電器關(guān)閉時(shí)間狀態(tài),相應電器的關(guān)閉時(shí)間寄存器timeoff左移4位,將數字值存人低位。若為無(wú)效按鍵,則不進(jìn)行任何操作。
4.4數字鐘的工作
本系統設計作為數字鐘和定時(shí)器,對計時(shí)準確性要求較高.由有源晶體振蕩器提供系統時(shí)鐘,可保證其穩定度。在頂層模塊中對系統時(shí)鐘分頻,得到1 Hz時(shí)鐘,作為數字鐘部分行波時(shí)鐘。這樣減少了片內各觸發(fā)器之間的時(shí)鐘偏移,事實(shí)證明,對設計時(shí)序無(wú)不良影響。 先將沒(méi)定的時(shí)間送人小時(shí)、分鐘對應的寄存器hour和min,為了顯示和用戶(hù)操作方便,用6位二進(jìn)制寄存器,以8421BCD碼表示時(shí)間。如果秒為8'h59則秒寄存器sec清零,分鐘值加1,若秒值末位為9,則秒值末位清零,秒值十位加1。
4.5判斷電器的開(kāi)啟和關(guān)閉
若當前時(shí)間與某個(gè)已定時(shí)的電器的開(kāi)啟時(shí)間相同,則開(kāi)啟寄存器數組on對應位輸出高電平,開(kāi)啟對應電器;若與某個(gè)已定時(shí)的電器的關(guān)閉時(shí)間相同,則開(kāi)啟寄存器數組on對應位輸出低電平,關(guān)閉對應電器。
4.6顯示
對應不同的狀態(tài),數碼管顯示不同值。時(shí)鐘設置狀態(tài),顯示當前時(shí)間;開(kāi)啟電器編號設置狀態(tài),顯示欲開(kāi)啟的電器編號;電器開(kāi)啟時(shí)間設置狀態(tài),屁示電器應開(kāi)啟的時(shí)間;電器關(guān)閉時(shí)間設置狀態(tài),顯示電器應關(guān)閉的時(shí)間。
具體實(shí)現時(shí),由系統時(shí)鐘控制,分時(shí)點(diǎn)亮各個(gè)數碼管,可節約能源。由于時(shí)間很快,而人眼存在視覺(jué)暫留,看上去6個(gè)數碼管均同時(shí)顯示。在CPLD中編程實(shí)現數碼管的七段譯碼,可節省外同電路。
5 結語(yǔ)
本設備設定開(kāi)啟、關(guān)閉時(shí)間為一天之內的任意時(shí)間,滿(mǎn)足一般使用要求,亦可作為數字時(shí)鐘使用。由晶體振蕩器提供時(shí)鐘,計時(shí)精準,使用常見(jiàn)器件設計,實(shí)現方便,成本低,耗電少,體積小,重量輕,工作可靠??捎糜诙〞r(shí)開(kāi)啟家用電器,如通過(guò)提前設置,下班回家時(shí)電飯鍋已經(jīng)把飯做熟??照{已經(jīng)開(kāi)啟,飲水機已經(jīng)燒好開(kāi)水,熱水器已經(jīng)燒好洗澡水等。也可用于辦公樓里上下班自動(dòng)響鈴裝置,工廠(chǎng)里需要定時(shí)開(kāi)關(guān)的設備,以及一些手動(dòng)操作開(kāi)關(guān)不安全的地方,具有實(shí)用價(jià)值。
評論