0 引言
本設計根據(jù)學校常規(guī)教學和臨時教學活動(如考試等)對打鈴時間的要求,對打鈴器的設計進行了改進,使其可分別工作在夏制、冬制、臨時三種模式下。每種工作模式支持多達80個時間點的打鈴輸出,并且根日期的設置,打鈴器可以自動切換冬夏兩種工作模式,實現(xiàn)不同時制的打鈴。如需臨時改變打鈴時間,將系統(tǒng)切換至臨時工作模式,設置打鈴時間即可,極大地簡化了打鈴器的操作。通過電路設計的優(yōu)化改進,提高了設備的可靠性和操作易用性,并在使用過程中表現(xiàn)出了較高穩(wěn)定性和實用性。
1 系統(tǒng)硬件設計
打鈴器由ATmega8單片機最小系統(tǒng)、DS1302時鐘電路、LED數(shù)碼顯示電路、串行口通訊電路、按鍵電路和打鈴輸出控制電路構(gòu)成,系統(tǒng)電路如圖1所示。
ATmage8單片機是美國ATEMEL公司的一款高性能、低功耗的8位AVR微處理器,內(nèi)含32個8位通用工作寄存器、RC時鐘振蕩電路、8K字節(jié)的系統(tǒng)內(nèi)可編程Flash、512字節(jié)的EEPROM及1K的SRAM。ATmega8內(nèi)含豐富的總線接口,并有專門的SPI接口,可方便實現(xiàn)與時鐘電路的連接。
時鐘芯片采用的是DS1302。它是一種高性能、低功耗、帶RAM的實時時鐘電路,可以對年、月、日、周日、時、分、秒進行計時。在工作過程中,SCM對這些時鐘單元的數(shù)據(jù)循環(huán)讀取,將讀到的時間與打鈴時間比對,以確定是否打鈴。通過修改相應的時間單元,可實現(xiàn)系統(tǒng)時間的調(diào)整。
時間顯示采用了4位共陽LED數(shù)碼管動態(tài)顯示方式,PC口與數(shù)碼管的段碼相連,PB0、PB1、PB6、PB7作為位選信號分別控制數(shù)碼管的共陽極;S1~S4分別與PD4、PD5、PD6、PD7相連,用于系統(tǒng)設置和時間調(diào)整;串行通訊接口電路分別與ATmega8的RXD和TXD引腳相連,通過與PC聯(lián)機,可快速完成打鈴器的系統(tǒng)設置、打鈴時間設定及系統(tǒng)時間的調(diào)整;SPI接口與DS1302的數(shù)據(jù)I/O相連,從DS1302中讀取實時時鐘。
PD2與打鈴控制電路相連,電路如圖2所示,打鈴輸出時,該引腳被置為低電平,三極管Q1飽和導通,經(jīng)光耦隔離并觸發(fā)Q2飽和導通,繼電器JD1得電閉合,并觸發(fā)雙向晶閘管AK極導通,AC220V電源經(jīng)BT136的AK極,電鈴線圈得電響鈴。當響鈴時間結(jié)束后,PD2被置為高電平,Q1截止,后續(xù)電路均失電,響鈴停止。
2 軟件設計
打鈴器上電后,SCM將從片內(nèi)的EEPROM中讀取設置參數(shù)進行系統(tǒng)的初始化,然后讀取DS1302時間單元,將時間通過定時中斷程序顯示出來。在工作過程中,每個打鈴時間點用兩個字節(jié)分別表示小時和分鐘的時間值,當秒單元為‘00’時,系統(tǒng)將調(diào)用一次打鈴時間比較子程序,以確定當前時間是否打鈴,系統(tǒng)的主程序流程如圖3所示。
打鈴器可工作在冬制、夏制和臨時打鈴三種模式,每種工作模式最多可設置80個打鈴時間點,基本滿足任何工作場合要求。每個打鈴時間點用2個字節(jié)表示,3種工作模式共占480字節(jié)的存儲空間,根據(jù)工作模式的不同,打鈴時間分3個區(qū)存放在ATmage8的EEPROM存儲器中。系統(tǒng)上電后,SCM根據(jù)模式特征字自動判別工作模式,并將對應區(qū)間的打鈴數(shù)據(jù)復制到SCM片內(nèi)的SRAM區(qū)。
2.1 打鈴時間比較子程序
在主程序中,SCM讀取DS1302的數(shù)據(jù)后,對秒數(shù)據(jù)進行判斷。當秒單元為“00”時,程序立即調(diào)用打鈴時間比較子程序,否則將不執(zhí)行該子程序的調(diào)用。在打鈴時間比較子程序中,SCM首先從片內(nèi)的EEPROM區(qū)取出當前工作模式的打鈴次數(shù)字,將其復制到Ring cnt計數(shù)變量中,然后將當前模式的第一組打鈴時間與系統(tǒng)時間進行比較,若打鈴時間與當前時間相等,置PD0引腳為低電平,打鈴控制電路接通并響鈴,同時置響鈴標志位為‘1’,程序返回。若不相等,Ring cnt變量減一,繼續(xù)比較下一組打鈴時間,直到時間相等或Ring cnt變量減為‘0’,則子程序返回。程序流程圖如圖4所示。響鈴標志位置‘1’后,系統(tǒng)將啟動15s定時,定時結(jié)束后,PD0置高電平當,電鈴停止工作,同時將響鈴標志位也置‘0’。
2.2 串口通訊子程序
打鈴器的時間設定、查詢和系統(tǒng)設置可通過鍵盤操作完成。為了準確快捷地完成打鈴器設置,系統(tǒng)還支持串口操作功能,通過串行口與PC機進行通訊,在上位機上可以完成打鈴器的相關設置。上位機軟件通過串行口向打鈴器發(fā)送命令,完成打鈴器參數(shù)的設置與查詢,命令格式為:命令字+數(shù)據(jù)+結(jié)束標識,其具體組成如表1所示。在通訊過程中,SCM在RAM區(qū)開辟一塊存儲空間接收上位機發(fā)送的數(shù)據(jù)。每接收到一個字節(jié)都判斷其是否為結(jié)束標識,若為結(jié)束標識,則停止接收,否則繼續(xù)接收。當數(shù)據(jù)接收完成后,程序便開始查詢命令字狀態(tài),并根據(jù)表1中命令字含義進行數(shù)據(jù)的相關處理。若命令字為查詢命令字時,則SCM根據(jù)命令字含義返回相應的數(shù)據(jù)至PC,并通過上位機軟件顯示出來,上位機軟件如圖5所示。
3 結(jié)束語
本打鈴器電路簡潔,價格低廉,且簡單易用。通過在學校一年多的使用檢驗,打鈴器走時精準,性能穩(wěn)定可靠,具有較高的推廣價值。