<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ATmage8的打鈴器設(shè)計(jì)

          基于ATmage8的打鈴器設(shè)計(jì)

          作者: 時間:2011-04-04 來源:網(wǎng)絡(luò) 收藏

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


          關(guān)鍵詞: 設(shè)計(jì) ATmage8 基于

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();