作息鬧鈴控制器設計方案
主程序流程
本系統(tǒng)主程序在考慮可設置每天最多40個打鈴時間點,而時間點精確的分鐘,因此每個時間點信息包括時、分兩個字節(jié)存儲,共需80字節(jié)作為打鈴時間點存儲緩沖區(qū),此緩沖區(qū)在AT89C52內存中采用數(shù)組的形式定義,同時當打鈴時間點設置好時,將此數(shù)據(jù)保存到CAT24WC02串行芯片中以防止掉電丟失,在下次啟動首先從CAT24WC02芯片中讀取數(shù)據(jù)保存到對應數(shù)據(jù)緩沖區(qū)中。運行主程序是首先讀取時鐘芯片時間數(shù)據(jù)并在數(shù)碼管顯示相關信息,隨后將當前時間與各打鈴時間點相比較看是否需要打鈴,最后進行鍵盤信息處理,分別完成時間設定和打鈴時間點設定等相關操作,具體流程如圖4所示。
圖4 主程序流程圖
本設計中共采用8個按鍵,其中時間設置按鍵和鬧鈴設置按鍵為復用鍵,由圖4可知當運行主程序時,按下相應鍵則程序進入時間設置或鬧鈴時間設置程序處理中,在鬧鈴時間設置程序中,此二鍵亦分別用于添加鬧鈴和刪除鬧鈴設置,當6位數(shù)碼管顯示信息均處于閃爍狀態(tài)時,此時按下添加鍵,則表示新添加一鬧鈴時間點,按下刪除鍵則表示刪除對應鬧鈴時間點,如6位數(shù)碼管顯示信息不全閃爍,則此二鍵不起作用。左移和右移按鍵則分別用來選擇所要設置數(shù)據(jù)位(時或分),選擇對應位后相應數(shù)據(jù)進入閃爍狀態(tài),此時操作增加或減小鍵進入相應數(shù)值設置,當僅鬧鈴時間序號閃爍時,增加和減小鍵同時有依次進行查詢所有鬧鈴時間點的功能。信息設置完后當按下確認鍵則表示信息設置完成,此時所設置鬧鈴信息會統(tǒng)一進行從小到大排序(用于查詢時從小到大顯示),然后分別保存到單片機相應內存和CAT24WC02串行EEPROM中以防掉電丟失。如按下取消鍵,則表示放棄所設置信息,此時重新從CAT24WC02串行EEPROM中讀取原鬧鈴時間信息到單片機相應內存相應緩沖區(qū)。具體流程圖如圖5所示。
圖5 主程序流程圖
鬧鈴時間信息顯示程序則由顯示程序void Display專門負責,鬧鈴設置時的數(shù)據(jù)分別放在臨時顯示緩沖區(qū),結合其閃爍狀態(tài)值一起傳遞給顯示程序進一步處理,從而決定哪位數(shù)碼管顯示信息進行閃爍,閃爍狀態(tài)值FlagBit共有5個取值參數(shù),分別為0、1、2、3、4,其中0表示不閃爍, 1表示鬧鈴時間分值閃爍,2表示鬧鈴時間時值閃爍,3表示鬧鈴時間序號閃爍,4表示全部顯示數(shù)值一起閃爍。具體閃爍控制則由定時中斷服務程序里對閃爍標志不斷取反,顯示程序里根據(jù)此標志位的變化進行閃爍控制。
時間設置處理程序則主要是通過按鍵設置好時間后對DS1302進行數(shù)據(jù)更新, 具體過程與鬧鈴設置程序類似,篇幅原因不在多述。
結語
實驗初期本設計主要通過仿真軟件完成,由于受實驗條件影響,數(shù)碼管顯示部分采用靜態(tài)顯示方法完成,如考慮節(jié)約成本,在實際電路中本設計亦可采用動態(tài)顯示電路或串行顯示電路完成。
評論