當前位置:首頁 > 模擬 > 模擬
[導讀]利用89C51設計一個簡易日歷時鐘系統(tǒng),時鐘系統(tǒng)硬件主要由單片機控制的計時電路、復位等輔助電路、按鍵電路、數(shù)碼管顯示電路、電源系統(tǒng)等組成。

    利用89C51設計一個簡易日歷時鐘系統(tǒng),時鐘系統(tǒng)硬件主要由單片機控制的計時電路、復位等輔助電路、按鍵電路、數(shù)碼管顯示電路、電源系統(tǒng)等組成。日歷時鐘可以顯示年、月、時、分、秒;可以設置年、月、時、分。其中計時控制電路由AT89C51單片機控制;按鍵電路包含時間設置;時間顯示屏電路由7個數(shù)碼管組成;電源系統(tǒng)由小功率整流濾波穩(wěn)壓電路組成,輸出直流電壓5 V,向主電路及顯示電路供電。系統(tǒng)框圖如圖1所示。

    在計時過程中,系統(tǒng)利用89C51自身的計時器T0作為時鐘基準,計時器中斷的準確度直接關系到整個系統(tǒng)的精度,因此獲取精確的定時時鐘信號成為該系統(tǒng)的關鍵。MCS-51單片機內(nèi)有2個可編程的16位定時器/計數(shù)器,在本系統(tǒng)設計中采用AT89C51的定時器T0,并工作在方式l下,晶振頻率為12MHz。

1 T0定時中斷
    定時器/計數(shù)器T0工作方式1的電路邏輯結構如圖2所示。TO定時特性功能寄存器由TL0(低8位)和TH0(高8位)構成。特殊功能寄存器TMOD控制定時寄存器的工作方式;TCON則用于控制定時器T0和T1的啟動和停止計數(shù),同時管理定時器TO和T1的溢出標志等。程序開始時需對TL0和TH0進行初始化編程,以定義它們的工作方式,并控制T0和T1的計數(shù)。在系統(tǒng)的設計中,計時單位以s為基準,并要求日誤差≤10 s,如果用循環(huán)去做,無法滿足精度要求。選用12 MHz的晶體可得到lμs的精度,經(jīng)分析確定使用定時器0的方式l。這個方式下 定時器0是16位定時器,也就是最大定時值為jFFFFH,12 MHz晶體的每個定時周期為1 μs,最多可以定時FFFFH×1 μs=65635 μs,即使使用最大值也無法一次定時1 s,設計中使用1次定時20 ms,50次定時中斷得到1 s。20 ms定時中斷的定時值為:FFFFH-20 ms/l μs=B1DFH[1]. 

2 程序測試與調(diào)整
在Keil uVision3平臺下利用C語言實現(xiàn)如下代碼:
#include<reg52.h>
#define uehar unsigned char
uehar data MScond=0; //ms
uchar data Scond=0; //s
uchar data Minure=0; //rain
uchar data Hollr=0; //h
void main(void){
EA=1; //允許CPU中斷
ET0=1; //定時器0中斷打開
TMOD=0xl; //設定時器0為方式1
TH0=0xBl:
TL0=0xDF~ //設定時值為20 000 μs(20 ms)
TR0=1; //開始定時
while(1);
}
void Time0(void)interrupt 1 using 1
{TH0=0xBl; //20 ms斷點 (1)
TL0=0xDF; //設定時值
MScond=MScond+1 ;
if(MScond==50)
{MScond=0;
Scond=Scond+1;
if(Seond==60)
{Scond=0;
Minute=Minute+1; //分斷點 (2)
if(Minute==60)
{Minute=0;
Hour=Hour+1; //d,時斷點 (3)
if(Hour==24)
{Hour=0;}}}}

    首先調(diào)試每20 ms中斷時的精度,在選項中設定調(diào)試晶振為12 MHz,在(1)處設置一個斷點再運行,這時記錄下每次中斷時的時間,如圖3所示。在初始化中費時為551 μs,每一次中斷時間應該考慮該項的影響。在實際處理中可以利用兩次中斷時間的差來作為定時器的中斷時間間隔。

    通過測試,得到第一次為0.020 568 00 s,第二次為0.040 580 00 s,第三次為0.060 59Z 00 s??梢钥闯?,每中斷一次會比定時值長了12 μs。如果將斷點設定在(2)處,并通過Logic Analyzer tool,得到分鐘第一次中斷的時間為60.036 57 s,第二次中斷的時間為120.072 57 s,則每分鐘的實際時間為60.036 s。再將斷點設定在(3)處,得到小時第一次中斷的時間為3 602.160 576 s,第二次中斷的時間為7 204.320 576 s,可以得到小時的實際時間為3 602.16 s,如圖4所示。


    為什么會產(chǎn)生這些誤差呢?通過對中斷程序的匯編源碼進行分析,實際上中斷程序入堆棧時使用了兩條語句:PUSH ACC和PUSH PSW。執(zhí)行人棧指令花費了4個機器周期,加上重新對TH0和TL0的加載又用去2個機器周期,計數(shù)值加1花費了2個機器周期,中斷返回約4個機器周期共約12個機器周期。為了消除這些因素的影響,需要在對T0設置計數(shù)值時減去12個機器周期,將計算得到的初始值B1DFH加上12(0CH)得到:B1DFH+12=B1EBH作為新的定時器初值,修改后的程序為:
#include<reg52.h>
#define uchar unsigned char
uchar data MScond=0;//ms
uehar data Seond=0; //s
uchar data Minute:0; //rain
uchar data Hour=0; //h
void main(void){
EA=1; //允許CPU中斷
ET0=1; //定時器0中斷打開
TMOD=Oxl; //設定時器0為方式1
TH0=0xBl;
TL0=OxEB; //設定時值為20 000 μs(20 ms)減去12 μs
TR0=1; //開始定時
while(1);
void Time0(void)interrupt 1 using 1
{TH0=0xBl; //20 ms斷點 (1)
TL0=0xDF‘ //設定時值
MSeond=MScond+1:
if(MSeond==50)
{MScond=0;
Seond=Seond+1 ;
if(Scond==60)
{Scond=0;
Minute=Minute+1;//分斷點 (2)
if(Minute==60)
{Minure=0;
Hour=Hour+1; I/d,時斷點 (3)
if(Hour==24)
{Hour=0;}}}}

    重新調(diào)試程序,仍然在選項中設定調(diào)試晶振為12 MHz,重新測試20 ms定時器的實際時間,在(1)處設置一個斷點后運行,重新記錄下每次中斷時的時間,如圖5所示。初始化時間為556 μs,為消除其影響,使用兩次中斷時間間隔來作為定時器實際獲得的基準時鐘。


    得到第一次中斷時的時間為0.020 556。O s,第二次為O.040 556 000 s,第三次為0.060 556。O s,可以看出每次中斷間隔剛好20 ms。如果將斷點設定在(2)處,并通過Logle Analyzer tool,得到第一次中斷時時間為60.000 57 s,第二次為120.000 57 s,間隔剛好60 s。將斷點設定在(3)處,得到第一次中斷的時間為3 600.000 578 s,第二次中斷時間為7 200.000 578 s,時間間隔為3 600 s,測試結果如圖6所示,完全可以滿足系統(tǒng)設計的需要。

3 總結
    通過對定時器的誤差分析和校正,可以提高系統(tǒng)的精確度。當然,上面的分析是在軟環(huán)境下理想晶振頻率下實現(xiàn)的,在現(xiàn)實中會因晶振偏差等因素而造成誤差[2]。在該測試中,主程序沒有進行其他處理,而在日歷設計中還要涉及到計時器T1的中斷來完成對掃描顯示電路的處理,還包括外部中斷對時鐘進行了調(diào)整,加上一些鬧鐘功能,這必然會對T0的定時精確性產(chǎn)生影響。另外,當中斷程序中語句越多,占用的機器周期也越多,因此在設計中應充分利用Keil uVIsion3的分析工具,通過多次調(diào)整計數(shù)初值以獲取精確的時鐘信號,這對于要求精確時鐘信號的應用具有重要的意義。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉