周婷
摘 要 數(shù)字鐘是現(xiàn)代電子器件最基本的部分,有較高的探討價值。數(shù)字鐘的設(shè)計方式有很多,比如采用數(shù)字電路中的計數(shù)器、觸發(fā)器等組成數(shù)字鐘,或者采用專用的數(shù)字鐘芯片,還可以用單片機來實現(xiàn)數(shù)字鐘,其中采用單片機方式編程更加靈活。本設(shè)計數(shù)字鐘采用AT89C51單片機為核心設(shè)計,用數(shù)碼管顯示時間,通過按鍵調(diào)整秒、分、時,用Proteus 仿真平臺搭建硬件電路,用Keil編寫軟件程序生成.HEX文件,并導入Proteus 進行聯(lián)合仿真調(diào)試。
關(guān)鍵詞 數(shù)字鐘 單片機 PROTUSE
中圖分類號:TN79 文獻標識碼:A 文章編號:1007-0745(2021)11-0001-03
數(shù)字鐘是可以實現(xiàn)時、分、秒計時的鐘表,應(yīng)用非常廣泛,它與傳統(tǒng)的機械時鐘相比較,數(shù)字鐘擁有更加直觀、精度高且使用壽命更長等優(yōu)點[1]。數(shù)字鐘給人們的生活工作帶來了非常多的便利,而且增加了很多實用功能,比如整點報時、按時打鈴、各種家用電器的自啟動等,所以研究數(shù)字鐘有著非常重要的意義。
數(shù)字鐘的設(shè)計方法有很多,可以使用數(shù)字電路中的觸發(fā)器、計數(shù)器等組成數(shù)字鐘,也可以采用專用的電子時鐘芯片加上外圍電路組成,還可以使用單片機實現(xiàn),這些方法各有優(yōu)勢[2-3],由數(shù)字電路組成的數(shù)字鐘主要由振蕩器、分頻器、計數(shù)器、譯碼顯示電路、校時電路等組成,還可以增加擴展功能,如整點報時電路、倒計時電路等。本文采用單片機AT89C51實現(xiàn),單片機式數(shù)字鐘編程更加靈活、功能也更方便擴展。
1 數(shù)字鐘硬件電路設(shè)計
單片機設(shè)計的數(shù)字鐘主要包括AT89C51單片機、晶體振蕩電路、數(shù)碼顯示電路和秒分時調(diào)整電路。AT89C51能提供4k字節(jié),F(xiàn)lash閃速存儲器,256字節(jié)片內(nèi)數(shù)據(jù)存儲器,三十二個IO口,兩個十六位定時/計數(shù)器,一個五向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。AT89C51因其性能優(yōu)良和價格低廉而被廣泛應(yīng)用,數(shù)字鐘的整體原理方框圖如圖1所示。
1.1 晶體振蕩電路
目前頻率發(fā)生器主要分兩種:(1)采用555定時器構(gòu)成的多諧振蕩器作為數(shù)字鐘的頻率發(fā)生器,靈敏度非常高且穩(wěn)定,同時對電源電壓和環(huán)境溫度的影響較小,但是不方便調(diào)節(jié)頻率占空比,且頻率一般不能太高;(2)采用石英晶體振蕩器作為頻率發(fā)生器。晶體振蕩電路采用壓電材料振動晶體的機械共振,創(chuàng)建給定頻率的電信號,采用晶體振蕩電路發(fā)出的頻率非常穩(wěn)定,且受溫度影響小,所以本設(shè)計采用晶體振蕩電路用于提供穩(wěn)定的時鐘信號。晶體振蕩電路和復(fù)位上電電路如圖2所示。
1.2 時鐘顯示電路
時鐘顯示電路模塊采用八個共陽極八段數(shù)碼管,其中P1.0~P1.7控制數(shù)碼管的八段LED燈的亮滅,即輸入段碼;P3.0~P3.7控制具體一位數(shù)碼管顯示,即輸入位碼,而AT89C51對P3.0~P3.7端口進行動態(tài)掃描。
1.3 按鍵電路
當數(shù)字鐘運行一段時間后,存在一定誤差,采用按鍵電路可以分別對時、分、秒進行調(diào)節(jié)。本數(shù)字鐘用P1.0、P1.1、P1.2三個端口分別控制時、分、秒三個按鍵。當按鍵中某個端口輸入低電平時,AT89C51單片機讀取此時按鍵狀態(tài),并采用軟件去抖,時鐘按鍵每按下一次時鐘加一,當累加到二十四時,重新從零開始計數(shù);分鐘按鍵每按下一次時鐘加一,當累加到六十時,重新從零開始計數(shù);秒鐘同理。
2 數(shù)字鐘軟件設(shè)計
2.1 本電路的功能
1.數(shù)字鐘開機時,顯示12:00:00的時間開始計時。
2.校正功能:P0.0控制“秒”的調(diào)整,每按一次加1秒; P0.1控制“分”的調(diào)整,每按一次加1分;P0.2控制“時”的調(diào)整,每按一次加1小時。
2.2 部分程序
1.初始化使顯示時間的位全為12:00:00,其他都不點亮;首先建立兩個數(shù)組,dispcode[]存放0~f的段碼,dispbitc ode[]存放位碼,通過dispbuf[8]顯示12:00:00。如果把dispbitcode[2]、dispbitcode[3]對應(yīng)的16改為X(10~15中的一個),并將其指向dispcode[16]即0x00改為dispcode[X]即0x40。時分秒的間隔就為“—”。
Unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf, 0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,2,1};
2.秒顯示程序,每來一個脈沖信號,second自加一,當second等于60時,重新計數(shù),并且在數(shù)碼管上分別顯示秒的十位和個位。時鐘和分鐘也是類似的編寫方式。
if(P0_0==0)
{
for(i=5;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
second++;
if(second==60)
{
second=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
}
}
3 電路仿真
本文以PROTUES作為仿真軟件,在PROTUES中搭建數(shù)字鐘電路,再用Keil仿真軟件編寫程序,導出.HEX文件,再把.HEX文件導入到PROTUES仿真運行。Proteus軟件是英國Lab Center Electronics公司出版的EDA軟件工具,它不僅具有其它EDA工具軟件的仿真功能,而且還能從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計[4-5]。
在仿真過程中要注意以下幾點:
(1)要認真檢查元器件型號、位置以及引腳是否正確;
(2)檢查電源電壓是否正確,常用的工作電壓有5V、12V、15V等;
(3)仿真時注意要修改晶振頻率為12MHZ,否則可能不能運行。如圖3所示為數(shù)字鐘仿真圖。
4 結(jié)語
本文基于Proteus仿真軟件和 Keil開發(fā)環(huán)境設(shè)計出數(shù)字鐘,在產(chǎn)品投入實驗前,先用軟件仿真,減少了成本,也提高了產(chǎn)品設(shè)計的工作效率,縮短了周期。數(shù)字鐘在生活和工作中也非常常用,我們還可以給數(shù)字鐘增加鬧鐘、整點報時等功能,增加數(shù)字鐘的應(yīng)用范圍。
參考文獻:
[1] 李冠霖,張寶玲.Verilog HDL數(shù)字鐘電路的設(shè)計研究[J].無線互聯(lián)科技,2021,18(04):67-68.
[2] 譚銘明,姚玲英,阮煜琴,梁俊焱,鐘楚洪.基于52單片機智能貼心時鐘的研究與設(shè)計[J].電子制作,2021(09):16-19.
[3] 傅仁軒,王慶華.基于單片機的可調(diào)正弦波的Proteus設(shè)計[J].電子設(shè)計工程,2021,29(10):147-151.
[4] 孫鳳乾,鄭太恒,劉海英,劉大鵬.基于STC89C51單片機的數(shù)字時鐘設(shè)計[J].齊魯工業(yè)大學學報,2021,35(03):47-51.
[5] 孫萬麟.Proteus軟件應(yīng)用于技術(shù)類課程的電路設(shè)計及仿真[J].微型電腦應(yīng)用,2021,37(07):63-66.