實例92 開機顯示PC機時分秒的時鐘1302(LED數(shù)碼管顯示)
摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版
時鐘顯示除了用LCD顯示,還可以用LED顯示。
⒈ 電路設(shè)計
設(shè)計時鐘DS1302并LED數(shù)碼管顯示電路如圖7-8所示,電路分成兩部分:左半部分是時鐘DS1302讀寫控制電路,右半部分是LED數(shù)碼管動態(tài)顯示電路。
圖7-8.jpg (74.36 KB, 下載次數(shù): 39)
下載附件
2016-5-5 22:02 上傳
⑴ 時鐘DS1302讀寫控制電路
時鐘DS1302讀寫控制電路與實例 90、 91中相同,晶振32768Hz與DS1302 X1、X2端連接;VCC2為主電源,接+5V電源;VCC1為備用電源,接3.6V鋰電池;串行數(shù)據(jù)輸入/輸出端I/O、串行時鐘脈沖輸入端SCLK和復位/片選端 分別與80C51 P1.7、P1.6和P1.5連接。
⑵ LED數(shù)碼管動態(tài)顯示電路
LED數(shù)碼管動態(tài)顯示 電路與實例 65、 66、 71、 72、 73中相同,80C51 P1.2~P1.0與138譯碼輸入端CBA(A為低位)連接;譯碼輸出端 ~ (低電平有效)作為位碼,選通6位共陰型LED數(shù)碼管;138片選端E1接+5V, 、 接地,始終有效;80C51 接74LS377時鐘端CLK;P2.7接門控端 ;P0口接數(shù)據(jù)輸入端D0~D7,377 Q0~Q7輸出段碼,與數(shù)碼管筆段a~g、Dp連接。
74LS377和74LS138特性已分別在實例34和實例58中介紹,此處不再重復。
⒉ 程序設(shè)計
按圖7-8電路,要求開機即能直接顯示PC機時分秒數(shù)據(jù),時分秒數(shù)據(jù)間用小數(shù)點分隔,其中秒數(shù)據(jù)閃爍(亮600ms,暗400ms),并不斷更新。
實例92.jpg (181.02 KB, 下載次數(shù): 51)
下載附件
2016-5-5 22:03 上傳
實例92m.jpg (154.45 KB, 下載次數(shù): 42)
下載附件
2016-5-5 22:03 上傳
需要說明的是,T0 4ms中斷有3個作用:一是用于動態(tài)掃描顯示,每隔4ms更換顯示位;二是用于秒閃爍,4ms計數(shù),前600ms亮,后400ms暗;三是用于在接近1秒(0.996秒)時突發(fā)讀時鐘。然后隔4ms再讀一次,即在0.996s和1s兩個時點突發(fā)讀時鐘。若在這兩個時點發(fā)現(xiàn)秒數(shù)據(jù)更新,就更新顯示值,爾后4ms計數(shù)重新開始。既做到及時更新,又避免在T0每一次4ms中斷時均去突發(fā)讀時鐘。為什么不在4ms計數(shù)1秒時一次性去突發(fā)讀時鐘呢?主要考慮4ms計數(shù)與1302實時時鐘可能(多數(shù))存在時差,若4ms計數(shù)1秒小于1302實時時鐘1秒,實時時鐘顯示滯后將超過1秒,而且這種“滯后”幾乎會一直保持下去(需累計時差大于一秒后才“正確”一次)。但若在0.996s和1s兩個時點突發(fā)讀時鐘,有時差時,“滯后”只有一次,第二次即被更正,而且這種“正確”幾乎會一直保持下去(需累計時差大于4ms后才再“滯后”一次)。
⒊ Keil調(diào)試
本題Keil調(diào)試同上例。因涉及外圍元件DS1302,在Keil軟件調(diào)試中無法得到外圍元件的有效信號。因此,僅在Keil中,按實例1所述步驟,編譯鏈接,語法糾錯,自動生成Hex文件,并在變量觀察窗口Watch頁中設(shè)置(設(shè)置方法參閱圖8-30)全局變量b(時鐘數(shù)據(jù)數(shù)組)和d(時鐘顯示數(shù)組),獲得數(shù)組b[]和d[]的首地址(分別為0x08、0x0f,用于在Proteus仿真中觀測)。
需要注意的是,引用實例90的3個子函數(shù)必須插入,否則Keil調(diào)試將顯示出錯。
⒋ Proteus仿真
⑴ 按實例23所述Proteus仿真步驟,打開Proteus ISIS軟件,按表7-5選擇和放置元器件,并連接線路,畫出Proteus仿真電路如圖7-9所示。
表7-5.jpg (67.17 KB, 下載次數(shù): 30)
下載附件
2016-5-5 22:04 上傳
圖7-9 .jpg (75.25 KB, 下載次數(shù): 41)
下載附件
2016-5-5 22:05 上傳
⑵ 鼠標左鍵雙擊Proteus ISIS仿真電路中AT89C51,裝入Keil調(diào)試后自動生成的Hex文件。
⑶ 全速運行后,LED顯示屏顯示PC時分秒實時數(shù)據(jù),中間用小數(shù)點分隔,秒數(shù)據(jù)閃爍。
⑷ 按暫停按鈕,打開80C51片內(nèi)RAM(主菜單“Debug”→“80C51 CPU”→“Internal(IDATA)Memory -U1”),可看到08H~0EH和0FH~14H已經(jīng)依次存放了時鐘數(shù)據(jù)數(shù)組b[]和顯示字段碼數(shù)組d[]的即時數(shù)據(jù),如圖 7-10所示。
⑸ 終止程序運行,可按停止按鈕。
⒌ 思考與練習
本例程序中,T0 4ms中斷有什么作用?
|