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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 作息鬧鈴控制器設(shè)計(jì)

          作息鬧鈴控制器設(shè)計(jì)

          作者: 時(shí)間:2013-11-01 來(lái)源:網(wǎng)絡(luò) 收藏

          系統(tǒng)軟件實(shí)現(xiàn)

          主程序流程

          本系統(tǒng)主程序在考慮可設(shè)置每天最多40個(gè)打鈴時(shí)間點(diǎn),而時(shí)間點(diǎn)精確的分鐘,因此每個(gè)時(shí)間點(diǎn)信息包括時(shí)、分兩個(gè)字節(jié)存儲(chǔ),共需80字節(jié)作為打鈴時(shí)間點(diǎn)存儲(chǔ)緩沖區(qū),此緩沖區(qū)在內(nèi)存中采用數(shù)組的形式定義,同時(shí)當(dāng)打鈴時(shí)間點(diǎn)設(shè)置好時(shí),將此數(shù)據(jù)保存到CAT24WC02串行芯片中以防止掉電丟失,在下次啟動(dòng)首先從CAT24WC02芯片中讀取數(shù)據(jù)保存到對(duì)應(yīng)數(shù)據(jù)緩沖區(qū)中。運(yùn)行主程序是首先讀取時(shí)鐘芯片時(shí)間數(shù)據(jù)并在數(shù)碼管顯示相關(guān)信息,隨后將當(dāng)前時(shí)間與各打鈴時(shí)間點(diǎn)相比較看是否需要打鈴,最后進(jìn)行鍵盤信息處理,分別完成時(shí)間設(shè)定和打鈴時(shí)間點(diǎn)設(shè)定等相關(guān)操作,具體流程如圖4所示。

          作息鬧鈴控制器設(shè)計(jì)
          圖4 主程序流程圖

          鬧鈴時(shí)間設(shè)置程序設(shè)計(jì)

          本設(shè)計(jì)中共采用8個(gè)按鍵,其中時(shí)間設(shè)置按鍵和鬧鈴設(shè)置按鍵為復(fù)用鍵,由圖4可知當(dāng)運(yùn)行主程序時(shí),按下相應(yīng)鍵則程序進(jìn)入時(shí)間設(shè)置或鬧鈴時(shí)間設(shè)置程序處理中,在鬧鈴時(shí)間設(shè)置程序中,此二鍵亦分別用于添加鬧鈴和刪除鬧鈴設(shè)置,當(dāng)6位數(shù)碼管顯示信息均處于閃爍狀態(tài)時(shí),此時(shí)按下添加鍵,則表示新添加一鬧鈴時(shí)間點(diǎn),按下刪除鍵則表示刪除對(duì)應(yīng)鬧鈴時(shí)間點(diǎn),如6位數(shù)碼管顯示信息不全閃爍,則此二鍵不起作用。左移和右移按鍵則分別用來(lái)選擇所要設(shè)置數(shù)據(jù)位(時(shí)或分),選擇對(duì)應(yīng)位后相應(yīng)數(shù)據(jù)進(jìn)入閃爍狀態(tài),此時(shí)操作增加或減小鍵進(jìn)入相應(yīng)數(shù)值設(shè)置,當(dāng)僅鬧鈴時(shí)間序號(hào)閃爍時(shí),增加和減小鍵同時(shí)有依次進(jìn)行查詢所有鬧鈴時(shí)間點(diǎn)的功能。信息設(shè)置完后當(dāng)按下確認(rèn)鍵則表示信息設(shè)置完成,此時(shí)所設(shè)置鬧鈴信息會(huì)統(tǒng)一進(jìn)行從小到大排序(用于查詢時(shí)從小到大顯示),然后分別保存到單片機(jī)相應(yīng)內(nèi)存和CAT24WC02串行EEPROM中以防掉電丟失。如按下取消鍵,則表示放棄所設(shè)置信息,此時(shí)重新從CAT24WC02串行EEPROM中讀取原鬧鈴時(shí)間信息到單片機(jī)相應(yīng)內(nèi)存相應(yīng)緩沖區(qū)。具體流程圖如圖5所示。

          作息鬧鈴控制器設(shè)計(jì)
          圖5 主程序流程圖

          鬧鈴時(shí)間信息顯示程序則由顯示程序void Display專門負(fù)責(zé),鬧鈴設(shè)置時(shí)的數(shù)據(jù)分別放在臨時(shí)顯示緩沖區(qū),結(jié)合其閃爍狀態(tài)值一起傳遞給顯示程序進(jìn)一步處理,從而決定哪位數(shù)碼管顯示信息進(jìn)行閃爍,閃爍狀態(tài)值FlagBit共有5個(gè)取值參數(shù),分別為0、1、2、3、4,其中0表示不閃爍, 1表示鬧鈴時(shí)間分值閃爍,2表示鬧鈴時(shí)間時(shí)值閃爍,3表示鬧鈴時(shí)間序號(hào)閃爍,4表示全部顯示數(shù)值一起閃爍。具體閃爍控制則由定時(shí)中斷服務(wù)程序里對(duì)閃爍標(biāo)志不斷取反,顯示程序里根據(jù)此標(biāo)志位的變化進(jìn)行閃爍控制。

          時(shí)間設(shè)置處理程序則主要是通過(guò)按鍵設(shè)置好時(shí)間后對(duì)DS1302進(jìn)行數(shù)據(jù)更新, 具體過(guò)程與鬧鈴設(shè)置程序類似,篇幅原因不在多述。

          結(jié)語(yǔ)

          實(shí)驗(yàn)初期本設(shè)計(jì)主要通過(guò)仿真軟件完成,由于受實(shí)驗(yàn)條件影響,數(shù)碼管顯示部分采用靜態(tài)顯示方法完成, 如考慮節(jié)約成本,在實(shí)際電路中本設(shè)計(jì)亦可采用動(dòng)態(tài)顯示電路或串行顯示電路完成。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(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); })();