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