AVR具有512個字節(jié)的片內(nèi)EEPROM,利用它可以記錄事先設(shè)定的打鈴時間(如果每個時間條需要2個字節(jié),則存儲的時間條可以200多個),然后將AVR制作成電子鐘,在某個時間內(nèi),掃描并取出片內(nèi)存儲的時間條,與當前時間進行對比,如果吻合,則打鈴。
下面是打鈴儀(成熟產(chǎn)品)的具體設(shè)計思路:
1、硬件方面:用有備用電池供電的日歷芯片DS1302作電子鐘的標準時間,AVR外置I2C存儲器,LED作狀態(tài)和時間顯示,四至五個輕觸開關(guān)作控制,輸出采用無觸點方案。供電:12V直流/220V兩用,沒有市電自動轉(zhuǎn)換12V蓄電池供電。
控制開關(guān)的分配:時分調(diào)整2個,功能轉(zhuǎn)換1個,存儲或顯示記錄打鈴點1個,備用1個。
2、軟件方面:從存儲器中取出所有打鈴點(一般要限額),每分鐘對比一次,查詢是否存在打鈴點。如果有則執(zhí)行打鈴程序。如果打鈴點作了調(diào)整,則再次取出打鈴點。
本人不負自己期望,在學習應(yīng)用AVR單片機方面取得重大的進展。本人已經(jīng)具備初步應(yīng)用AVR制作打鈴儀的設(shè)計、編程能力。雖然現(xiàn)在制作的模型仍存在一些缺點而不能推廣、應(yīng)用,但設(shè)計思路已經(jīng)相當清晰,制作成功已指日可待。
下面是部分源程序:
time();
jinwei();
scankey();
if(hour==hour00&min==min00&out==1)//三個條件缺一不可
{
savenum=savenum+2;
hour00=EEPROMread(savenum);
_NOP();_NOP();_NOP();
min00=EEPROMread(savenum+1);
daling();
}