[摘要] 隨著單片機技術的不斷發(fā)展,電子技術和計算機技術應用領域不斷擴大,單片機技術已成為微型計算機發(fā)展的一個重要分支,是一門電子計算機的綜合應用技術。本文介紹了使用單片機AT89c51顯示60秒計數(shù)器,用定時器T0方式2產(chǎn)生標準秒信號,在數(shù)字鐘設計電路中已被廣泛使用BCD數(shù)碼管顯示。
[關鍵詞] 單片機 定時器 計數(shù)器 匯編語言
在家用電器、工業(yè)自動控制、智能儀表、航空航天及通信技術等領域,處處可以見過到它的身影,可以說已離不開我們的生活。因此單片機控制技術越來越受到學校的重視。
一、硬件電路探討
硬件電路是用的AT89c51,采用的是P3口,P3。0連接的發(fā)光二極管用于模擬秒閃信號,與P2口連接的BCD數(shù)碼管顯示個位,與P1口連接的BCD數(shù)碼管顯示十位,BCD數(shù)碼管為共陰極。當然也可以采用共陽極,這是根據(jù)實訓室里的硬件來設計電路的,從電路圖來分析電路并不復雜。現(xiàn)在主要是來分析如何來對它進行程序設計,硬件電路如圖所示:
這里須要用到定時器,我們采用定時器T0方式2產(chǎn)生標準秒信號,并實現(xiàn)“00,01到59計結果通過P1、P2口外接的BCD數(shù)碼管顯示。本任務中要求精確定時,必須采用定時方式2實現(xiàn)。假設系統(tǒng)振蕩頻率為6MHZ,以T0為例,首先設置方式字:TMOD=00000010B,由于方式2的最大定時為512us,要產(chǎn)生1秒的定時用1次溢出肯定是不夠的,因此需要多次溢出才能實現(xiàn)1秒的定時。采用多少次溢出呢?我們進過51單片機的數(shù)據(jù)是沒有小數(shù)的,因此必須使用整數(shù)來表示計數(shù)次數(shù)和溢出次數(shù)。若N代表溢出次數(shù),X代表計數(shù)初值,T代表系統(tǒng)的機器周期,則有以下等式:
(256-X)×T×N=t式中,T=2us,t=1s。如果取X=6,則N=2000,溢出次數(shù)2000超過了255,因此要用至少兩個計數(shù)器作為溢出次數(shù)計數(shù)器。即:N=n1×n2其中,n1和n2必須為小于255的整數(shù),可以取n1=50,n2=40
n1=100,n2=20,n1=200,n2=10,n1=250,n2=8由于任務中要求有一個秒閃信號,因此我們采用三個計數(shù)器作為溢出次數(shù)計數(shù)器,即N=n1×n2×n3=2×20×50。根據(jù)以上分析可以得到查詢方式下1秒信號發(fā)生器的程序流程圖,如圖所示
二、程序設計
這里用到的是六十制BCD碼加法計數(shù)器設計:任務中要求使用BCD碼加法,因此雖然是加1,但有些人在編程過程中總是用“INC”在這里必須提醒的是要用“ADD”,“DA A”指令才能加1計數(shù)。從結果上看INC A和ADD A,#1差不多,但INC A是單字節(jié)單周期指令,而ADD A,#1則是雙字節(jié)雙周期指令,而且INC A不會影響PSW位,如(A)=0FFH,INC A后(A)=00H,而CY依然保持不變;如果是ADD A,#1,則(A)=00H,而CY一定是“1”。因此加1指令并不適合做加法,事實上它主要是用來做計數(shù)、地址增加等用途。還有要請學生們注意;當加到60時必須清零,不要在計數(shù)器加到59的時候再清零。
我們下面還要把BCD碼計數(shù)結果送出顯示出來。數(shù)碼管有共陰極和共陽極之分,在這里根據(jù)實訓室的情況來定,我們用的是共陰極的,計數(shù)結果以壓縮BCD碼的形式存放在30H單元中,顯示的時候必須將壓縮BCD碼拆開,并且轉換成BCD顯示段碼,才能按照低位在前高位在后的順序依次通過P2口和P1口送顯。在我讓學生們做實訓的過程中,我發(fā)現(xiàn)有好多學生都顯示反了,原因就在這里,所以一定要注意。BCD顯示譯碼表,在這里也說一下共陰極的表格,如圖所示:(共陰極)
三、編程
上面是用匯編語言編程,Keil uV2軟件對它進行仿真,進行編譯,通過硬件對它進行運行,我們很明顯地看到顯示60秒計數(shù)器,在編程過程中有的數(shù)字交替在一起,這時特別要注意輸入的偽指令不能出錯,這樣才能達到要求。
這電路設計在數(shù)字鐘已被廣泛使用,當然如果設計數(shù)字鐘,還要通過數(shù)字集成電路和石英晶體振蕩器的結合,另外再加上譯碼驅動電路,才能將計數(shù)器輸出的8421BCD碼轉換數(shù)數(shù)碼管需要的邏輯狀態(tài),并且保證數(shù)碼管正常工作提供足夠的工作電流。這些設計使得數(shù)字鐘的精度遠遠超過老式鐘。
四、結語
本文從實際電路出發(fā),闡述BCD碼顯示60秒,這些例子在數(shù)字鐘尤為使用,還可結合其他的電路部分生產(chǎn)出更多的產(chǎn)品,使同學們在娛樂中掌握了計數(shù)器。
參考文獻:
[1]羅建,李艷梅.《單片機原理及應用》教學改革[J].四川師范學院學報(自然版),2003,(1).
[2]彭勇.單片機技術.電子工業(yè)出版社,2009.
[3]王建萍.優(yōu)化單片機課程實驗教學的新思路與實踐[J].實驗技術與管理,2006驗.