摘要自動控制的時鐘設計方案較多,利用中小規(guī)模集成電路設計,或利用專用的時鐘芯片設計,也可以利用單片機進行設計等,且各有特點。其中利用單片機實現(xiàn)時鐘的設計方法,具有電路簡單、編程靈活、便于擴展、精確度高、穩(wěn)定性好等優(yōu)點,本文介紹一種選擇利用單片機編程六位數(shù)碼自動控制鐘的設計。
關鍵詞編程語言 自動控制 時鐘設計
中圖分類號:TP31文獻標識碼:A
在選擇單片機時,考慮到AT89C2051體積較小、性價比較高,在家電產品、工業(yè)控制、計算機產品、醫(yī)療器械、汽車工業(yè)、智能儀器等應用領域已成為用戶降低成本的首選產品。所以,該設計選用AT89C2051作為時鐘的中心控制單元,結合相關外圍電路,實現(xiàn)了時間顯示、時鐘調整、鬧鐘設置、整點報時及省電等多種功能。
1 自控鐘的系統(tǒng)設計
1.1定時器工作方式選擇
時鐘設計的關鍵問題是秒信號的產生,在使用MCS51的定時器/計數(shù)器生成秒信號時,若選用12 MHz晶振,選擇工作方式0時,最大定時時間為8.19 ms;選擇工作方式1時,最大定時時間為65.54 ms;選擇工作方式2,3時,最大定時時間為0.26 ms。因為進入中斷要做很多判斷,如果中斷時間太短則不能完成任務,導致時鐘誤差增大,所以選擇中斷時間最長的工作方式1。這時定時器最大定時時間只能達到65.5 ms,離1 s還相差甚遠。因此,該設計采用硬件定時和軟件計數(shù)相結合的方式實現(xiàn)秒信號的,即把秒定時時間定為50 ms,軟件計數(shù)20次為1 s。
1.2定時初值的計算
MCS51系列單片機的定時器為加法計數(shù)器計滿溢出時申請中斷,所以在給定時器賦初值時,不能直接輸入所需的計數(shù)值,而應輸入定時器的計數(shù)最大值與需要定時值的差值。采用定時器/計數(shù)器0,選擇工作方式1,在選用12 MHz系統(tǒng)晶振時,要得到50 ms定時,設定時初值為X,則有如下等式:(216-X)€?=50 000
計算得定時初值X=15 536,二進制表示為1110010110000B,16進制表示為3CB0H。
為了實現(xiàn)調整時間時的閃爍顯示功能,采用T1定時器,定時初值仍可延用上面計算結果。
1.3存儲單元的設置
為了方便實現(xiàn)其他附加功能,將計時存儲單元、顯示存儲單元與鬧鐘時間存儲單元分開。其中顯示裝置是用6位LED數(shù)碼管,時鐘的時、分和秒各占2位。在鬧鐘設置時顯示鬧鐘時間,其余時間顯示時鐘。
2 自控鐘的電路設計
2.1時鐘電路原理圖
數(shù)碼管時鐘電路以AT89C2051單片機最小系統(tǒng)為基礎,顯示采用LED動態(tài)掃描方式實現(xiàn),P3.7口接設置按鈕,用來實現(xiàn)調時鐘、調鬧鐘、省電3種狀態(tài)的轉換,在鬧鐘和時鐘調整時為上翻鍵,也是關閉鬧鐘的按鍵。為了提供LED數(shù)碼管的驅動電流,用三極管9012作輸出驅動。為了提高秒計時精確度,系統(tǒng)選用12 MHz晶振,即電路主要是由單片機、復位電路、振蕩電路和顯示電路4部分組成。復位電路采用上電復位,振蕩電路選用12 MHz中晶振和2個30 pF的瓷介電容。(圖略)
2.2 AT89C2051芯片簡介
AT89C2051是Atmel公司生產的帶2 kB FLASH存儲器(PEROM)的8 位單片機,它具有如下主要特性:與MCS51兼容;內部帶2 kB可編程FLASH存儲器;工作電壓范圍為2.7~6 V;全靜態(tài)工作頻率為0 Hz~24 MHz;128€?位內部RAM;2個16位定時器/計數(shù)器;片內振蕩器和時鐘電路;片內精確模擬比較器;低功耗的休眠和掉點模式。
AT89C2051減少了兩個外部端口,因而芯片的外部引腳大大減少,芯片尺寸很小。它是一個有20引腳雙列直插式的芯片。
2.3顯示電路
時鐘采用6個共陽極的數(shù)碼管完成時、分、秒的顯示,P3口的低6位分別通過5.6 k的限流電阻與相應的驅動三極管的連接,三極管的導通與否決定對應位是否顯示。其中數(shù)碼管引腳與單片機引腳的連接關系如表1所示,數(shù)碼管的顯示代碼如表2所示:
表1數(shù)碼管引腳與單片機引腳的連接關系
表2數(shù)碼管的顯示代碼
3 自控鐘的軟件設計
3.1主程序
主程序主要完成系統(tǒng)的初始化和按鍵的捕獲,在鍵沒有被按下時調用顯示子程序。
3.2 顯示程序
需要顯示時,從P1口送出時鐘的顯示段碼,從P3口低6位送出時鐘的位選信號,通過動態(tài)掃描的方式實現(xiàn)時鐘的顯示功能。應該注意的是,16進制數(shù)所表示的共陽極的段碼最高位都為1,這樣在顯示時它將P1.7強行置1,即直接關閉響鈴,所以在顯示數(shù)據送給P1口之前要進行判斷,如果P1.7為0,則將顯示數(shù)據與立即數(shù)7fH邏輯與;如果P1.7為1,則不做任何,直接輸出處理。這樣,顯示時就不會影響響鈴的正常進行。
3.3 T1中斷服務程序
T1中斷服務程序用來實現(xiàn)閃爍顯示功能。在調整時鐘或設置鬧鐘的狀態(tài)下,使對應顯示單元的數(shù)據在時間數(shù)據和“熄滅符”數(shù)據(#0AH)之間以0.3 s為間隔交替顯示,這樣,對應的調整單元數(shù)據就會閃爍,以便于調整。
3.4 調時程序
首先需要說明長按和短按的標準,其標志是鈴聲,當在鈴響之前放開按鍵則是短按,之后放開則是長按。調時程序的設計方法是:2次連續(xù)短按進入省電狀態(tài)(時鐘繼續(xù),但數(shù)碼管不亮);第一次短按,第二次長按進入調時狀態(tài),此時關閉T0,時鐘停止,開始調整時間,短按實現(xiàn)分鐘加1操作,分鐘調整完畢后,若長按則進入小時調整狀態(tài),同樣,短按實現(xiàn)小時加1操作,當小時調整好后長按則退出時間調整,開啟T0,啟動時鐘。
在響鬧鈴的時候,有按鍵按下,其作用是關閉鬧鈴,不進入調時狀態(tài)。
3.5 鬧鐘調整程序
一次長按進入鬧鐘調整程序。其中鬧鐘調整和時鐘調整的方法完全相同,只是時鐘調整時關閉T0,而在鬧鐘調整程序中T0需要繼續(xù)工作。另外,要設置不同的標志,以實現(xiàn)鬧鐘調整時閃爍的數(shù)據是鬧鐘。
總之,在應用單片機設計的電路中,程序設計很重要,尤其是硬件電路比較簡單的情況下,這就需要軟件完成和補充其他功能。主要思想為將總體功能分解成若干個模塊,每個功能模塊完成特定的功能,并且確定各模塊之間的關系,最終完成設計的所有功能。
參考文獻
[1]孫鋼峰,楊利霞.時鐘設計問題的討論[J].鄂州大學學報,2001.8(4):2327.
[2]陳建設.簡單易制的三位電子秒表[J].電子制作,2005.3.
[3]翟玉文,梁偉.電子設計與實踐[M].北京:中國電力出版社,2005.