基于ATmage8的打鈴器設(shè)計(jì)
打鈴器可工作在冬制、夏制和臨時(shí)打鈴三種模式,每種工作模式最多可設(shè)置80個(gè)打鈴時(shí)間點(diǎn),基本滿(mǎn)足任何工作場(chǎng)合要求。每個(gè)打鈴時(shí)間點(diǎn)用2個(gè)字節(jié)表示,3種工作模式共占480字節(jié)的存儲(chǔ)空間,根據(jù)工作模式的不同,打鈴時(shí)間分3個(gè)區(qū)存放在ATmage8的EEPROM存儲(chǔ)器中。系統(tǒng)上電后,SCM根據(jù)模式特征字自動(dòng)判別工作模式,并將對(duì)應(yīng)區(qū)間的打鈴數(shù)據(jù)復(fù)制到SCM片內(nèi)的SRAM區(qū)。
2.1 打鈴時(shí)間比較子程序
在主程序中,SCM讀取DS1302的數(shù)據(jù)后,對(duì)秒數(shù)據(jù)進(jìn)行判斷。當(dāng)秒單元為“00”時(shí),程序立即調(diào)用打鈴時(shí)間比較子程序,否則將不執(zhí)行該子程序的調(diào)用。在打鈴時(shí)間比較子程序中,SCM首先從片內(nèi)的EEPROM區(qū)取出當(dāng)前工作模式的打鈴次數(shù)字,將其復(fù)制到Ring cnt計(jì)數(shù)變量中,然后將當(dāng)前模式的第一組打鈴時(shí)間與系統(tǒng)時(shí)間進(jìn)行比較,若打鈴時(shí)間與當(dāng)前時(shí)間相等,置PD0引腳為低電平,打鈴控制電路接通并響鈴,同時(shí)置響鈴標(biāo)志位為‘1’,程序返回。若不相等,Ring cnt變量減一,繼續(xù)比較下一組打鈴時(shí)間,直到時(shí)間相等或Ring cnt變量減為‘0’,則子程序返回。程序流程圖如圖4所示。響鈴標(biāo)志位置‘1’后,系統(tǒng)將啟動(dòng)15s定時(shí),定時(shí)結(jié)束后,PD0置高電平當(dāng),電鈴?fù)V构ぷ?,同時(shí)將響鈴標(biāo)志位也置‘0’。
2.2 串口通訊子程序
打鈴器的時(shí)間設(shè)定、查詢(xún)和系統(tǒng)設(shè)置可通過(guò)鍵盤(pán)操作完成。為了準(zhǔn)確快捷地完成打鈴器設(shè)置,系統(tǒng)還支持串口操作功能,通過(guò)串行口與PC機(jī)進(jìn)行通訊,在上位機(jī)上可以完成打鈴器的相關(guān)設(shè)置。上位機(jī)軟件通過(guò)串行口向打鈴器發(fā)送命令,完成打鈴器參數(shù)的設(shè)置與查詢(xún),命令格式為:命令字+數(shù)據(jù)+結(jié)束標(biāo)識(shí),其具體組成如表1所示。在通訊過(guò)程中,SCM在RAM區(qū)開(kāi)辟一塊存儲(chǔ)空間接收上位機(jī)發(fā)送的數(shù)據(jù)。每接收到一個(gè)字節(jié)都判斷其是否為結(jié)束標(biāo)識(shí),若為結(jié)束標(biāo)識(shí),則停止接收,否則繼續(xù)接收。當(dāng)數(shù)據(jù)接收完成后,程序便開(kāi)始查詢(xún)命令字狀態(tài),并根據(jù)表1中命令字含義進(jìn)行數(shù)據(jù)的相關(guān)處理。若命令字為查詢(xún)命令字時(shí),則SCM根據(jù)命令字含義返回相應(yīng)的數(shù)據(jù)至PC,并通過(guò)上位機(jī)軟件顯示出來(lái),上位機(jī)軟件如圖5所示。
評(píng)論