
隨著計算機在社會領域的滲透和大規模集成電路的發展,單片機的應用正在不斷走向深入,由于它具有功能強、體積小、功耗低、價格便宜、工作可靠、使用方便等特點,因此越來越廣泛地應用于自動控制、智能化儀器、儀表、數據采集、軍工產品以及家用電器等各個領域。
51單片機數字鐘應用單片機中斷、定時技術,通過調整鍵、加1鍵、減1鍵、確定鍵四個按鍵,用8位數碼管設計制作了一個可以調整時間的數字鐘,實現了對時、分、秒進行數字顯示,可廣泛用于個人家庭、車站、碼頭、辦公室等公共場所,方便人們的日常生活。
一、系統方框圖
51單片機數字鐘以STC89C52單片機為核心,采用12MHZ晶振,以匯編語言為程序設計語言,結合相關的元器件(共陽極四位一體LED數碼顯示器、BCD -七段譯碼/驅動器74HC537等),再配以相應的軟件,用8位數碼管顯示 “時、分、秒”。顯示格式為:時-分-秒 XX-XX-XX ,由時個位和時十位、分個位和分十位、秒個位和秒十位計數器組成。秒、分計數器為60進制計數器,時計數器為24進制計數器。通過調整、加1、減1、確定4只按鍵來調整時間。按下調整鍵SET_KEY(P1.0),顯示“時”的兩位數碼管以1Hz的頻率閃爍。如果再次按下調整鍵,則“分”兩位數碼管開始閃爍,“時”兩位數碼管恢復正常顯示,依次循環,直到按下確定鍵OK_KEY(P1.3),恢復正常的時間顯示。在數碼管閃爍的時候,按下加1鍵ADD_KEY(P1.1)或者減1鍵DEC_KEY(P1.2 ),可以調整相應的顯示內容。按一次鍵,則選中的“時”“分”“秒”分別加1或減1,如果長按,系統識別后以一定速率連續增加或連續減少,進行快速調時。
二、動態掃描
數碼管顯示采用動態掃描方法。把8位數碼管的8個筆畫字段(a~g和dp)同名端連在一起由一片74HC573驅動;每一位數碼管的公共極COM端(位)各自獨立,連接在另外一片74HC573輸出上接受P2口的控制。STC89C52CPU向字段輸出端口輸出字型碼時,所有數碼管接受相同的字型碼,但究竟使用那一位數碼管則由P2口決定。動態掃描用分時的方法輪流控制每個數碼管的COM端,使每個數碼管輪流點亮。事實上,任意時刻只有一位數碼管是被點亮的。由于人眼的視覺暫留效應以及數碼管的余輝效應,當數碼管掃描的頻率非??斓臅r候,人眼已經無法分辨出數碼管的變化了,看起來就是同時點亮的,給人的視覺就是一組穩定的顯示數據。
三、1秒定時的產生
首先用單片機內部的定時器T1實現50ms定時,然后每50ms產生一次定時中斷,用寄存器R3存放循環中斷的次數,循環20次就實現了1s的定時。
1.對TMOD賦值,確定工作方式
TMOD的高4位是控制定時器/計數器T1的,當GATE=0時,通過“SETB TR1”指令即可啟動定時器/計數器工作;C/T=0時,T1被設置為定時工作方式。因此,可得到定時器T1,工作在方式1,作定時器使用,并且用軟件啟動運行的TMOD賦值為10H。
2.預置定時器初值X,將初始值寫入TH1、TL1中
定時器初值得計算公式為:(最大計數值M-初始值X)×機器周期=定時時間
當晶振頻率為12MHz時,機器周期為1μs。在方式1中,定時器T1的最大計數值M為65536,現要求定時50ms,由以上公式可計算出計數器的初始值X。
(65536-X)×1μs=50ms所以,初始值X=65536-50000=15536D=3CB0H
所以在程序DELAY_50MS中確定定時器的初值指令為:MOV TH1,#3CH
MOVTL1,#0B0H。軟件設計中使用內部定時器1中斷實現50ms定時。循環20次中斷,就可以得到1S的定時了。
四、軟件設計
系統軟件采用模塊化設計,主要有主程序模塊,時鐘調整子程序模塊,顯示子程序模塊等。
單片機數字鐘給人們生活帶來了極大的方便。它不僅可以實現鐘表的記時功能,還能在定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、各種定時電氣的自動啟用等方面得到廣泛應用。
(作者單位:江蘇省常州技師學院)