熊 剛,胡啟迪,陳高峰,劉 晨
(楊凌職業技術學院 機電工程分院,陜西 楊凌 712100)
基于單片機的多功能時鐘設計
熊 剛,胡啟迪,陳高峰,劉 晨
(楊凌職業技術學院 機電工程分院,陜西 楊凌 712100)
本文結合單片機技術,以AT89S52為核心控制器,通過硬件及軟件設計,制作了一款多功能數字時鐘。測試結果表明,該數字時鐘操作簡單,工作穩定可靠,具有實時顯示、鬧鐘設置、參數調整等功能,同時還具有體積小、功耗低、性價比高、易于攜帶、經濟實惠等特點,具有較高的應用價值。
單片機;數字時鐘;數碼管;多功能
時鐘在日常生產生活中有很多的應用,例如一些智能化的儀器儀表、自動化控制系統以及家用的空調,冰箱,微波爐等都需要時鐘功能。傳統的時鐘大多數成本高、功能少、結構復雜,而數字電子時鐘則有體積小、重量輕、精度高等優點,是時鐘發展的主流方向[1-3]。
目前,有很多的方式可以實現數字時鐘的設計,如數字電路、單片機等。隨著計算機技術和電子技術的發展,采用單片機開發電路則具有可靠性高、擴展性能好、經濟實惠等優點,可以極大的降低硬件電路的復雜性。所以,本設計采用單片機為控制核心,制作一款具有實時時鐘顯示和鬧鐘控制的多功能數字時鐘。
本設計硬件部分采用模塊化設計方式,包括單片機模塊、顯示器模塊、放大電路模塊、報警電路模塊及按鍵設置模塊等。
單片機采用Atmel公司生產的AT89S52,該單片機具有8 k字節在系統可編程Flash存儲器、三級加密程序存儲器、3個16位定時器/計數器、8個中斷源、看門狗定時器等功能,指令和引腳上與MCS-51單片機完全兼容,在眾多嵌入式控制應用系統中有廣泛應用[4-6]。
在硬件電路設計中采用P0口作為6位LED數碼管的驅動接口,同時外接限流電阻,數碼管的驅動采用PNP型三極管作為放大電路與單片機的P2.2~P2.7相連;通過4個獨立式按鍵進行參數設置,分別與單片機的P1.0~P1.3連接;具體電路如圖1所示。
軟件設計采用模塊化設計方法,根據任務要求,首先把任務劃分為相對獨立的功能模塊,系統模塊可以分為主程序、LED顯示子程序、查表子程序、時鐘設置子程序、鬧鐘設置子程序、定時器中斷子程序等功能模塊。
2.1 主程序
主程序完成系統初始化,包括I/O端口、時鐘、鬧鐘初始參數及初始標志及定時/計數器初始狀態的設定;調用相應的子程序進行更新顯示時間、循環掃描按鍵、根據按鍵分別進行鬧鐘和時鐘的設置管理等操作。流程圖如圖2所示。
2.2 LED顯示子程序
首先將顯示數據存儲單元的數據逐個的送到P0口,其中中所用到的顯示時間數據首地址均為個、十位分離后的數據首地址。同時依次選中各數碼管,實現6位LED的動態顯示功能,并同時進行矩陣鍵盤掃描,若有按鍵按下,則在最后一位LED數碼管顯示完畢后再進行一次該鍵的檢測(相當于按鍵去抖),并存入鍵值到相應位置。

圖1 系統硬件電路圖Fig.1 Circuit diagram of the hardware system

圖2 主程序流程圖Fig.2 Flow chart the main program
2.3 查鍵值子程序
該子程序讀取相應地址的鍵值,鍵值為#00H則調用時鐘設置子程序,鍵值為#06H則調用鬧鐘設置子程序,若鍵值為#07H并且當前鬧鈴標志位為1則將標志位清零,否則反轉鬧鈴開關標志位,并根據開關狀態在數碼管最高位顯示0.5 s的‘N’(鬧鐘開)或‘F’(鬧鐘關),其余鍵值為則返回。
2.4 時鐘設置子程序
該子程序首先關閉定時器,“時”、“分”修改標志位均清零,調用LED時間顯示子程序,然后讀取鍵值,若為04H則“秒”加1,若為05H則“秒”減1,若“秒”為59,則加完結果為00,若“秒”為00,則減完結果為59,完成后再次調用LED時間顯示子程序并讀取鍵值;若鍵值為01H則“時”修改標志位置1,“分”修改標志位清零,此時再次調用LED時間顯示子程序并讀取鍵值,若為04H則“時”加1,若為05H則“時”減1,若“時”為23,則加完結果為00,若“時”為00則減完結果為23,完成后再次調用LED時間顯示子程序并讀取鍵值[7];若鍵值為02H則“分”修改標志位置1,“時”修改標志位清零,此時再次調用LED時間顯示子程序并讀取鍵值,若為04H則“分”加1,若為05H則“分”減1,若“分”、為59,則加完結果為00,若“分”為00,則減完結果為59,完成后再次調用LED時間顯示子程序并讀取鍵值;若鍵值為03H則 “時”、“分”修改標志位均清零,此時再次調用LED時間顯示子程序并讀取鍵值,若為04H則“秒”加1,若為05H則“秒”減1,若“秒”為 59,則加完結果為 00,若“秒”為 00,則減完結果為59,完成后再次調用LED時間顯示子程序并讀取鍵值;若鍵值為#00H鍵則退出時間參數設置模式,返回至正常計時模式;若為其它鍵值則再次調用LED時間顯示子程序并讀取鍵值。
2.5 鬧鐘判斷子程序
該子程序首先查看鬧鐘是否開啟,若開啟則將當前時間與鬧鐘設定時間進行“時”、“分”、“秒”比對來判斷鬧鐘啟鬧時間是否已到,若時間到,則啟動鬧鈴,流程圖如圖3所示。

圖3 鬧鐘判斷子程序流程圖Fig.3 Subprogram flow chart of the alarm judging
2.6 定時器中斷程序
定時器中斷程序命名為 CLOCK子程序,該中斷程序每50 ms響應一次,20個50 ms判斷為1 s到,60個1 s判斷為1分鐘到,60個1分判斷為1一個小時定時時間到,該子程序主要用于定時修改存放時鐘數據的地址單元中的數據,具體流程如圖4所示。
2.7 資源分配與程序設計
在完成各模塊流程設計后,最后根據每個細化的流程圖逐個編寫子程序模塊,再根據系統主程序的流程進行各功能的子程序模塊調用,最終生成系統可執行的程序。
在程序編寫前,先要對流程中涉及到的一些變量做一個合理的分配,并對相應的地址單元用EQU進行命名,這樣會使編程過程更為清晰,可讀性也會提高,便于后面的查錯與調試工作的順利進行。

圖4 定時器中斷子程序Fig.4 Subprogram flow chart of the timer interrupt
系統調試包括硬件調試和軟件調試兩部分,硬件調試一般需要利用調試軟件來進行,軟件調試也需要通過對硬件的測試和控制來進行,因此軟、硬件調試是不可能絕對分開的。
3.1 硬件調試
1)設計測試軟件,使P1、P0口輸出55H或AAH,同時讀P2口。運行程序后,用萬用表檢查相應端口電平是否一高一低,在仿真器中檢查讀入的P2口低2為是否為1,如果結果如上所述則說明并行端口工作正常。
2)設計一個測試LED顯示函數的程序、使所有LED全顯示“8.”的靜態顯示程序來檢驗LED的好壞[8]。如果運行測試結果與預期不符、則很容易根據故障現象判斷故障原因,并采取針對性措施排除故障。
3.2 軟件調試
1)先在主程序中屏蔽中斷及其它函數調用,只保留LED顯示函數,并在相應的存儲單元中存入測試數據,觀察是否能將測試數據正常顯示,此過程調試通過后進行下一步的調試工作。
2)打開中斷,觀察系統是否能從00:00:00開始正確計時,調試至正確計時后,則將計時初值改為23:58:50,在運行程序,觀察是否能正確進位,此步調試通過后進入下一步的調試工作。
3)打開時鐘設置子程序調用,按下按鍵,觀察系統是否能夠正確響應時間設置過程中所涉及的各個按鍵,此步調試通過后進入下一步的調試工作。
4)打開鬧鐘時鐘設置子程序調用,先看能否進入鬧鐘時間設置模式,若能進入則觀察系統是否能夠正確響應鬧鐘時間設置過程中所涉及的各個按鍵,此步調試通過后進入下一步的調試工作。
5)打開鬧鐘判斷子程序調用,將鬧鐘時間設定在當前時間之后1分鐘左右,耐心等待,看鬧鈴是否會在設定時間響起,若能響起[9],按下停止鍵#04看是否能關閉鬧鈴。
3.3 系統性能分析
在軟、硬件調試成功后,可以將程序固化到AT89S52的Flash存儲器中,上電脫機運行,進行整體測試。將該設計的電子鐘和標準時鐘的進行時間對比,每10 min記錄一次數據,記錄時間2個小時,數據如表1所示。

表1 時間數據記錄結果Tab.1 Test result of time data record
測量數據顯示,設計的電子時鐘和標準時鐘的時間在兩個小時內有一定的偏差,最大誤差2 s,計時誤差較小,準確度較高,達到了設計要求,鬧鐘時間到達設定值時,鬧鈴正常工作。
本設計采用單片機作為智能控制核心,使系統結構大為簡化,實現了電子鐘的基本功能,同時也擴展了鬧鐘設置及時間校準功能。在實際測試中,計時準確度高,鬧鐘工作正常可靠,該數字時鐘具有結構簡單、體積小、功能多、性價比高、實用性強等特點,具有較高的應用價值。
[1]李娜,楊杰,牛曉飛.基于單片機的簡易數字電子鐘設計[J].河北北方學院學報:自然科學版,2014,30(6):15-18,33.
[2]羅佳.基于單片機的數字電子鐘及其實現[J].常州信息職業技術學院學報,2010,9(2):17-22.
[3]王瑜.PCF8583在電子時鐘設計中的應用[J].電子設計工程,2009,17(6):115-116.
[4]王琰,郭燕.基于C51單片機的智能循跡小車設計與實現[J].機電一體化,2013,8:72-76.
[5]鄭棣,徐迎春,劉雨.基于51單片機的多色點陣顯示系統設計[J].自動化技術與應用,2014,33(12)5:109-113.
[6]王瑾,袁戰軍,李小斌.交通燈控制系統的設計與仿真[J].海南大學學報:自然科學版,2014,32(4):334-339.
[7]張偉,陳鋒,馬軍強,等.軌/姿控發動機脈沖后效沖量快速算法的研究及應用[J].火箭推進,2012(1):51-56.
[8]肖笑.基于BCC算法的多機系統PSS參數優化設計[J].陜西電力,2012(12):51-54.
[9]胡異丁,歐進發,鐘滔.基于LabVIEW的無線心率測量系統的設計[J].電子設計工程,2015(7):43-45.
The design of multifunction clock based on single-chip microcomputer
XIONG Gang,HU Qi-di,CHEN Gao-feng,LIU Chen
(Department of Electromechanical,Yangling Vocational and Technical College,Yangling 712100,China)
In this paper,we made a multi-function digital clock which put AT89S52 as the core controller and combined with single-chip microcomputer technology,we also designed the hardware and software.Test results show that the operation of digital clock was simple,stable and reliable in work,it had function of real-time display,clock settings and parameter adjustment,it also had some features,such as small volume,low power dissipation,highly cost effective,easy carrying,economical and practical,it had a high application value.
single-chip microcomputer;digital clock;nixie light;multi-function1
TN409
A
1674-6236(2016)04-0164-04
2015-04-16 稿件編號:201504163
楊凌職業技術學院人文社科類研究基金項目(GJ1310)
熊 剛(1985—),男,河南信陽人,碩士,講師。研究方向:電氣自動化控制技術。