【正文】
U3 LM7805C10C5 圖 電源模塊電路原理圖 5. 系統(tǒng)軟件設(shè)計(jì) 分析 DS1302模塊程序設(shè)計(jì) 在首次對(duì) DS1302 進(jìn)行操作之前,必須對(duì)它進(jìn)行初始化, 本設(shè)計(jì)采用的做法是第一次設(shè)定好一個(gè)準(zhǔn)確的時(shí)間后,由于備用電池的存在掉電后時(shí)間信息也不會(huì)丟失,所以以后只需 從 DS1302 中讀出數(shù)據(jù), 程序只需從 DS1302 各寄存 器中讀出年、周、月、日、 時(shí)、分、秒等數(shù)據(jù),再處理即可 ,送給顯示緩 沖單元。 DS1302 模塊的讀、寫(xiě) 流程圖 如圖 所示。 寫(xiě) 寄 存 器 地 址數(shù) 據(jù) 十 進(jìn) 制 B C D 轉(zhuǎn) 換寫(xiě) 入 數(shù) 據(jù)寫(xiě) 寄 存 器 地 址讀 出 數(shù) 據(jù)數(shù) 據(jù) B C D 十 進(jìn) 制 轉(zhuǎn) 換返 回 數(shù) 據(jù) 圖 DS1302 模塊的讀、寫(xiě)流程圖 定時(shí)器模塊程序設(shè)計(jì) 本系統(tǒng)軟件程序的設(shè)計(jì)采用實(shí)時(shí)操作系統(tǒng)的程序設(shè)計(jì)思想,定時(shí)器用來(lái)產(chǎn)生 1ms時(shí) 17 基,通過(guò)計(jì)數(shù)器 t計(jì)數(shù)產(chǎn)生不同 是 時(shí)基從而分時(shí)執(zhí)行不同的任務(wù),系統(tǒng)中用到了 3個(gè)時(shí)基,分別是 10ms、 100 ms、 500ms, 同時(shí)數(shù)碼管掃描函數(shù) display( )在定時(shí)器中 2ms執(zhí)行一次循環(huán)掃描, 通過(guò) iloop++循環(huán)移位掃描數(shù)碼管。 通過(guò) 此外定時(shí)器 還用于按鍵 軟件 去抖。定時(shí)器模塊流程圖如下: 定 時(shí) 器 初 始 化t++c n t % 2 = = 0 ?c n t % 1 0 = = 0 ?c n t % 1 0 0 = = 0 ?c n t % 5 0 0 = = 0 ?數(shù) 碼 管 掃 描1 0 m s 標(biāo) 志 = 11 0 0 m s 標(biāo) 志 = 15 0 0 m s 標(biāo) 志 = 1c n t清 零YYY定 時(shí) 器 賦 初 值YNNNN 圖 定時(shí)器模塊流程圖 按鍵模塊程序設(shè)計(jì) 本系統(tǒng)共有 4個(gè)按鍵,分別為 KEY1P3 KEY2P3 KEY3P3 KEY4P35。 系統(tǒng)的設(shè) 18 定及顯示 狀態(tài)通過(guò)按鍵實(shí)現(xiàn)。 KEY1鍵切換循環(huán)顯示時(shí)間、日期、星期、鬧鐘; 按 KEY2鍵時(shí) 如果有鬧鐘報(bào)警按下則關(guān)閉鬧鐘,如果沒(méi)有鬧鐘則進(jìn)入鬧鐘設(shè)置模式; KEY3和 KEY4分別在進(jìn)入鬧鐘設(shè)置模式時(shí)進(jìn)行時(shí)間的加減。 其中按鍵函數(shù)分為按鍵掃描函數(shù)和按鍵功能執(zhí)行函數(shù) , 按鍵掃描函數(shù)用于按鍵去抖判斷按鍵是否有效,按鍵有效后按鍵執(zhí)行函數(shù)執(zhí)行相應(yīng)的按鍵設(shè)定功能。按鍵流 程圖如下: 是 否 有 按 鍵 按 下 ?K e y _ c n t = = 1 0 ?對(duì) 應(yīng) 按 鍵 標(biāo) 志 置 1YYK e y _ c n t 清 零N 圖 按鍵掃描函數(shù)流程圖 19 d i s p _ m o d e = = 0 ?K E Y 1 _ F 標(biāo) 志 清 零d i s p _ m o d e + +K E Y 1 _ F 標(biāo) 志 = = 1 ?d i s p _ m o d e = = 1 ?顯 示 時(shí) 間 顯 示 日 期d i s p _ m o d e = = 2 ? d i s p _ m o d e = = 3 ?顯 示 星 期 顯 示 鬧 鐘d i s p _ m o d e = 4 ?d i s p _ m o d e 清 零鬧 鐘 是 否 報(bào) 警 ?K E Y 2 _ F 標(biāo) 志 清 零K E Y 2 _ F 標(biāo) 志 = = 1 ?關(guān) 閉 鬧 鐘k e y 2 _ f l a g + +YNk e y 2 _ f l a g = = 1 ? k e y 2 _ f l a g = = 2 ?d i s p _ m o d e = 3設(shè) 置 鬧 鐘 時(shí)K E Y 3 、 K E Y 4 加 減設(shè) 置 鬧 鐘 分K E Y 3 、 K E Y 4 加 減k e y 2 _ f l a g = = 3 ? k e y 2 _ f l a g = = 4 ?設(shè) 置 鬧 鐘 秒K E Y 3 、 K E Y 4 加 減鬧 鐘 設(shè) 置 完 成d i s p _ m o d e = 0 圖 按鍵功能執(zhí)行函數(shù)流程圖 數(shù)碼管顯示模塊程序設(shè)計(jì) 數(shù)碼管 顯示模塊通過(guò)判斷 disp_mode標(biāo)志位的值來(lái)顯示不同的時(shí)間、日期等內(nèi)容,同時(shí)當(dāng)進(jìn)入鬧鐘設(shè)置時(shí)相應(yīng)的時(shí)分秒位會(huì)閃爍 ,其中閃爍標(biāo)志位 Flash_flag在定時(shí)器中每200ms取反一次 。數(shù)碼的 動(dòng)態(tài) 掃描時(shí)間通過(guò)定時(shí)器控制,每 2ms掃描一位數(shù)碼管, 從第 0位到第 7位不停循環(huán), 這樣使得數(shù)碼 管亮度均勻且無(wú)閃爍抖動(dòng)現(xiàn)象,顯示效果非常好。數(shù)碼管模塊流程圖如圖 。 20 k e y 2 _ f l a g = 0 ?Y關(guān) 顯 示P 0 口 送 段 碼P 0 口 送 段 碼 0 x 0 0P 0 口 送 段 碼NF l a s h _ f l a g = = 1 F l a s h _ f l a g = = 0P 2 口 送 位 碼 圖 數(shù)碼管模塊流程圖 蜂鳴器報(bào)警模塊程序設(shè)計(jì) 蜂鳴器報(bào)警模塊程序比較簡(jiǎn)單,通過(guò)監(jiān)測(cè)實(shí)時(shí)時(shí)間是否等于鬧鐘設(shè)定時(shí)間,如果等于則報(bào)警, P10輸出低電平。蜂鳴器報(bào)警程序每 500ms監(jiān)測(cè)掃描一次實(shí)時(shí)時(shí)間。 是 否 等 于 設(shè) 定 時(shí) 間掃 描 實(shí) 時(shí) 時(shí) 間報(bào) 警YN 圖 蜂鳴器報(bào)警模塊 流程圖 主程序設(shè)計(jì) 本系統(tǒng)采用模塊化編程和實(shí)時(shí)操作系統(tǒng)的程序思想,使得主 程序的非常簡(jiǎn)單 ,同時(shí)程序具有很高的執(zhí)行效率和很好的可讀性和移植性。 主程序主要包括 10ms時(shí)基函數(shù)、 100ms時(shí)基函數(shù)、 500ms時(shí)基函數(shù),其中 10ms時(shí)基函數(shù)中執(zhí)行 按鍵掃描函數(shù) , 100ms時(shí)基函數(shù)中執(zhí)行 按鍵功能執(zhí)行函數(shù) , 500ms時(shí)基函數(shù)中執(zhí)行 DS1302數(shù)據(jù)讀取轉(zhuǎn)換函數(shù)、鬧鐘監(jiān)測(cè)函數(shù),主程序流程圖如下。 21 系 統(tǒng) 初 始 化執(zhí) 行1 0 m s 時(shí) 基 函 數(shù)執(zhí) 行1 0 0 m s 時(shí) 基 函 數(shù)執(zhí) 行5 0 0 m s 時(shí) 基 函 數(shù) 圖 主程序流程圖 6. 總結(jié) 根據(jù)要求 設(shè)計(jì)出完整的系統(tǒng)原理圖和編寫(xiě)系統(tǒng)程序,并做出硬件實(shí)物,通過(guò)認(rèn)真仔細(xì)的布局,整個(gè)作品顯得非常美觀(guān)漂亮。通過(guò) 實(shí)際調(diào)試測(cè)試,本設(shè)計(jì)已達(dá)到設(shè)計(jì)要求。通過(guò)編寫(xiě)按鍵掃描和執(zhí)行函數(shù),使得按鍵響應(yīng)非常及時(shí)有效,不存在抖動(dòng)現(xiàn)象。 數(shù)碼管采用了很好的掃描方法,使得數(shù)碼管的掃描效果非常好,不存在抖動(dòng)和閃爍,靜態(tài)效果非常好,效果堪比靜態(tài)掃描。 通過(guò)觀(guān)察 測(cè)試 發(fā)現(xiàn)每 24小時(shí) 時(shí)鐘會(huì)快 2秒左右,這可能是DS1302所使用的晶振有所偏差所致??偟膩?lái)說(shuō)本設(shè)計(jì)的硬件電路相對(duì)比較簡(jiǎn)單,但程序的設(shè)計(jì)方面下足了功夫,整個(gè)系統(tǒng)的程序執(zhí)行效率非常高。 22 7. 參考文獻(xiàn) [1] 郭天祥 . 新概念 51 單片機(jī) C語(yǔ)言教程 [M].北京:電子工業(yè)出版社, 2021. [2] 魏永生 .DS1302 實(shí)時(shí)時(shí)鐘編程及仿真 [J].機(jī)電信息 ,2021,27. [3] 陳 冬 ,彭德遲 ,胡榮強(qiáng) .DS1302 實(shí)時(shí)鐘在嵌入式系統(tǒng)中的應(yīng)用 [J].黃石理工學(xué)院學(xué)報(bào) ,2021,22(3). [4] 黃明強(qiáng) .DS1302 在單片機(jī)系統(tǒng)中的應(yīng)用 [J].保定專(zhuān)科師范學(xué)校學(xué)報(bào), 2021, 17(2). [5] 姚德法 ,張洪林 .串行時(shí)鐘芯片 DS1302 的原理與使用 [J]. 信息技術(shù)與信息化 ,2021,1. [6] 崔惠柳 .串行實(shí)時(shí)時(shí)鐘芯片 DS1302 及其應(yīng)用 [J].廣西工學(xué)院學(xué)報(bào) ,1998,9(1). [7] 祝鳳蓮 .基于 DS1302 的數(shù)字鐘設(shè)計(jì) [J].科技廣場(chǎng), 2021, 7. [8] 馮大捷 . 基于 DS1302 電子時(shí)鐘的設(shè)計(jì) [J].科技視界 ,2021,2. [9] 王偉 .高性能、低功耗帶 RAM實(shí)時(shí)時(shí)鐘芯片 DS1302(上) , 電子世界 :第一期 , [10] 康華光 .電子技術(shù)基礎(chǔ) .模擬 部分 [M].第五版 .北京 :高等教育出版社 . [11] 康華光 .電子技術(shù)基礎(chǔ) .數(shù)字電路 [M].第五版 .北京 :高等教育出版社 . [12] 何立民 . MCS51 系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù) [M]. 北京:北京航空航天大學(xué)出 版社, 1990: 8387. 8. 致謝