找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3771|回復: 0
打印 上一主題 下一主題
收起左側(cè)

開機顯示PC機時分秒的時鐘1302

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111634 發(fā)表于 2016-5-5 22:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

實例92 開機顯示PC機時分秒的時鐘1302LED數(shù)碼管顯示)

摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版

時鐘顯示除了用LCD顯示,還可以用LED顯示。

電路設(shè)計

設(shè)計時鐘DS1302LED數(shù)碼管顯示電路如圖7-8所示,電路分成兩部分:左半部分是時鐘DS1302讀寫控制電路,右半部分是LED數(shù)碼管動態(tài)顯示電路。




時鐘DS1302讀寫控制電路

時鐘DS1302讀寫控制電路與實例90、91中相同,晶振32768HzDS1302 X1、X2端連接;VCC2為主電源,接+5V電源;VCC1備用電源,接3.6V鋰電池;串行數(shù)據(jù)輸入/輸出端I/O、串行時鐘脈沖輸入端SCLK和復位/片選端分別與80C51 P1.7、P1.6P1.5連接。

LED數(shù)碼管動態(tài)顯示電路

LED數(shù)碼管動態(tài)顯示電路與實例65、6671、7273中相同,80C51 P1.2P1.0138譯碼輸入端CBAA為低位)連接;譯碼輸出端(低電平有效)作為位碼,選通6位共陰型LED數(shù)碼管;138片選端E1+5V、接地,始終有效;80C5174LS377時鐘端CLK;P2.7接門控端P0口接數(shù)據(jù)輸入端D0D7,377 Q0Q7輸出段碼,與數(shù)碼管筆段a~g、Dp連接。

74LS37774LS138特性已分別在實例34實例58中介紹,此處不再重復。

程序設(shè)計

7-8電路,要求開機即能直接顯示PC時分秒數(shù)據(jù),時分秒數(shù)據(jù)間用小數(shù)點分隔,其中秒數(shù)據(jù)閃爍(亮600ms,暗400ms),并不斷更新。






需要說明的是,T0 4ms中斷有3個作用:一是用于動態(tài)掃描顯示,每隔4ms更換顯示位;二是用于秒閃爍,4ms計數(shù),前600ms亮,后400ms暗;三是用于在接近1秒(0.996秒)時突發(fā)讀時鐘。然后隔4ms再讀一次,即在0.996s1s兩個時點突發(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.996s1s兩個時點突發(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仿真中觀測)。

需要注意的是,引用實例903個子函數(shù)必須插入,否則Keil調(diào)試將顯示出錯。

Proteus仿真

實例23所述Proteus仿真步驟,打開Proteus ISIS軟件,按7-5選擇和放置元器件,并連接線路,畫出Proteus仿真電路如7-9所示。







鼠標左鍵雙擊Proteus ISIS仿真電路中AT89C51,裝入Keil調(diào)試后自動生成的Hex文件。

全速運行后,LED顯示屏顯示PC時分秒實時數(shù)據(jù),中間用小數(shù)點分隔,秒數(shù)據(jù)閃爍。

按暫停按鈕,打開80C51片內(nèi)RAM(主菜單“Debug”→“80C51 CPU”→“InternalIDATAMemory -U1”),可看到08H0EH0FH14H已經(jīng)依次存放了時鐘數(shù)據(jù)數(shù)組b[]和顯示字段碼數(shù)組d[]的即時數(shù)據(jù),如7-10所示。

終止程序運行,可按停止按鈕。

思考與練習

本例程序中,T0 4ms中斷有什么作用?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表