熊 剛,胡啟迪,陳高峰,劉 晨
(楊凌職業(yè)技術(shù)學(xué)院 機電工程分院,陜西 楊凌 712100)
基于單片機的多功能時鐘設(shè)計
熊 剛,胡啟迪,陳高峰,劉 晨
(楊凌職業(yè)技術(shù)學(xué)院 機電工程分院,陜西 楊凌 712100)
本文結(jié)合單片機技術(shù),以AT89S52為核心控制器,通過硬件及軟件設(shè)計,制作了一款多功能數(shù)字時鐘。測試結(jié)果表明,該數(shù)字時鐘操作簡單,工作穩(wěn)定可靠,具有實時顯示、鬧鐘設(shè)置、參數(shù)調(diào)整等功能,同時還具有體積小、功耗低、性價比高、易于攜帶、經(jīng)濟(jì)實惠等特點,具有較高的應(yīng)用價值。
單片機;數(shù)字時鐘;數(shù)碼管;多功能
時鐘在日常生產(chǎn)生活中有很多的應(yīng)用,例如一些智能化的儀器儀表、自動化控制系統(tǒng)以及家用的空調(diào),冰箱,微波爐等都需要時鐘功能。傳統(tǒng)的時鐘大多數(shù)成本高、功能少、結(jié)構(gòu)復(fù)雜,而數(shù)字電子時鐘則有體積小、重量輕、精度高等優(yōu)點,是時鐘發(fā)展的主流方向[1-3]。
目前,有很多的方式可以實現(xiàn)數(shù)字時鐘的設(shè)計,如數(shù)字電路、單片機等。隨著計算機技術(shù)和電子技術(shù)的發(fā)展,采用單片機開發(fā)電路則具有可靠性高、擴展性能好、經(jīng)濟(jì)實惠等優(yōu)點,可以極大的降低硬件電路的復(fù)雜性。所以,本設(shè)計采用單片機為控制核心,制作一款具有實時時鐘顯示和鬧鐘控制的多功能數(shù)字時鐘。
本設(shè)計硬件部分采用模塊化設(shè)計方式,包括單片機模塊、顯示器模塊、放大電路模塊、報警電路模塊及按鍵設(shè)置模塊等。
單片機采用Atmel公司生產(chǎn)的AT89S52,該單片機具有8 k字節(jié)在系統(tǒng)可編程Flash存儲器、三級加密程序存儲器、3個16位定時器/計數(shù)器、8個中斷源、看門狗定時器等功能,指令和引腳上與MCS-51單片機完全兼容,在眾多嵌入式控制應(yīng)用系統(tǒng)中有廣泛應(yīng)用[4-6]。
在硬件電路設(shè)計中采用P0口作為6位LED數(shù)碼管的驅(qū)動接口,同時外接限流電阻,數(shù)碼管的驅(qū)動采用PNP型三極管作為放大電路與單片機的P2.2~P2.7相連;通過4個獨立式按鍵進(jìn)行參數(shù)設(shè)置,分別與單片機的P1.0~P1.3連接;具體電路如圖1所示。
軟件設(shè)計采用模塊化設(shè)計方法,根據(jù)任務(wù)要求,首先把任務(wù)劃分為相對獨立的功能模塊,系統(tǒng)模塊可以分為主程序、LED顯示子程序、查表子程序、時鐘設(shè)置子程序、鬧鐘設(shè)置子程序、定時器中斷子程序等功能模塊。
2.1 主程序
主程序完成系統(tǒng)初始化,包括I/O端口、時鐘、鬧鐘初始參數(shù)及初始標(biāo)志及定時/計數(shù)器初始狀態(tài)的設(shè)定;調(diào)用相應(yīng)的子程序進(jìn)行更新顯示時間、循環(huán)掃描按鍵、根據(jù)按鍵分別進(jìn)行鬧鐘和時鐘的設(shè)置管理等操作。流程圖如圖2所示。
2.2 LED顯示子程序
首先將顯示數(shù)據(jù)存儲單元的數(shù)據(jù)逐個的送到P0口,其中中所用到的顯示時間數(shù)據(jù)首地址均為個、十位分離后的數(shù)據(jù)首地址。同時依次選中各數(shù)碼管,實現(xiàn)6位LED的動態(tài)顯示功能,并同時進(jìn)行矩陣鍵盤掃描,若有按鍵按下,則在最后一位LED數(shù)碼管顯示完畢后再進(jìn)行一次該鍵的檢測(相當(dāng)于按鍵去抖),并存入鍵值到相應(yīng)位置。
圖1 系統(tǒng)硬件電路圖Fig.1 Circuit diagram of the hardware system
圖2 主程序流程圖Fig.2 Flow chart the main program
2.3 查鍵值子程序
該子程序讀取相應(yīng)地址的鍵值,鍵值為#00H則調(diào)用時鐘設(shè)置子程序,鍵值為#06H則調(diào)用鬧鐘設(shè)置子程序,若鍵值為#07H并且當(dāng)前鬧鈴標(biāo)志位為1則將標(biāo)志位清零,否則反轉(zhuǎn)鬧鈴開關(guān)標(biāo)志位,并根據(jù)開關(guān)狀態(tài)在數(shù)碼管最高位顯示0.5 s的‘N’(鬧鐘開)或‘F’(鬧鐘關(guān)),其余鍵值為則返回。
2.4 時鐘設(shè)置子程序
該子程序首先關(guān)閉定時器,“時”、“分”修改標(biāo)志位均清零,調(diào)用LED時間顯示子程序,然后讀取鍵值,若為04H則“秒”加1,若為05H則“秒”減1,若“秒”為59,則加完結(jié)果為00,若“秒”為00,則減完結(jié)果為59,完成后再次調(diào)用LED時間顯示子程序并讀取鍵值;若鍵值為01H則“時”修改標(biāo)志位置1,“分”修改標(biāo)志位清零,此時再次調(diào)用LED時間顯示子程序并讀取鍵值,若為04H則“時”加1,若為05H則“時”減1,若“時”為23,則加完結(jié)果為00,若“時”為00則減完結(jié)果為23,完成后再次調(diào)用LED時間顯示子程序并讀取鍵值[7];若鍵值為02H則“分”修改標(biāo)志位置1,“時”修改標(biāo)志位清零,此時再次調(diào)用LED時間顯示子程序并讀取鍵值,若為04H則“分”加1,若為05H則“分”減1,若“分”、為59,則加完結(jié)果為00,若“分”為00,則減完結(jié)果為59,完成后再次調(diào)用LED時間顯示子程序并讀取鍵值;若鍵值為03H則 “時”、“分”修改標(biāo)志位均清零,此時再次調(diào)用LED時間顯示子程序并讀取鍵值,若為04H則“秒”加1,若為05H則“秒”減1,若“秒”為 59,則加完結(jié)果為 00,若“秒”為 00,則減完結(jié)果為59,完成后再次調(diào)用LED時間顯示子程序并讀取鍵值;若鍵值為#00H鍵則退出時間參數(shù)設(shè)置模式,返回至正常計時模式;若為其它鍵值則再次調(diào)用LED時間顯示子程序并讀取鍵值。
2.5 鬧鐘判斷子程序
該子程序首先查看鬧鐘是否開啟,若開啟則將當(dāng)前時間與鬧鐘設(shè)定時間進(jìn)行“時”、“分”、“秒”比對來判斷鬧鐘啟鬧時間是否已到,若時間到,則啟動鬧鈴,流程圖如圖3所示。
圖3 鬧鐘判斷子程序流程圖Fig.3 Subprogram flow chart of the alarm judging
2.6 定時器中斷程序
定時器中斷程序命名為 CLOCK子程序,該中斷程序每50 ms響應(yīng)一次,20個50 ms判斷為1 s到,60個1 s判斷為1分鐘到,60個1分判斷為1一個小時定時時間到,該子程序主要用于定時修改存放時鐘數(shù)據(jù)的地址單元中的數(shù)據(jù),具體流程如圖4所示。
2.7 資源分配與程序設(shè)計
在完成各模塊流程設(shè)計后,最后根據(jù)每個細(xì)化的流程圖逐個編寫子程序模塊,再根據(jù)系統(tǒng)主程序的流程進(jìn)行各功能的子程序模塊調(diào)用,最終生成系統(tǒng)可執(zhí)行的程序。
在程序編寫前,先要對流程中涉及到的一些變量做一個合理的分配,并對相應(yīng)的地址單元用EQU進(jìn)行命名,這樣會使編程過程更為清晰,可讀性也會提高,便于后面的查錯與調(diào)試工作的順利進(jìn)行。
圖4 定時器中斷子程序Fig.4 Subprogram flow chart of the timer interrupt
系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試兩部分,硬件調(diào)試一般需要利用調(diào)試軟件來進(jìn)行,軟件調(diào)試也需要通過對硬件的測試和控制來進(jìn)行,因此軟、硬件調(diào)試是不可能絕對分開的。
3.1 硬件調(diào)試
1)設(shè)計測試軟件,使P1、P0口輸出55H或AAH,同時讀P2口。運行程序后,用萬用表檢查相應(yīng)端口電平是否一高一低,在仿真器中檢查讀入的P2口低2為是否為1,如果結(jié)果如上所述則說明并行端口工作正常。
2)設(shè)計一個測試LED顯示函數(shù)的程序、使所有LED全顯示“8.”的靜態(tài)顯示程序來檢驗LED的好壞[8]。如果運行測試結(jié)果與預(yù)期不符、則很容易根據(jù)故障現(xiàn)象判斷故障原因,并采取針對性措施排除故障。
3.2 軟件調(diào)試
1)先在主程序中屏蔽中斷及其它函數(shù)調(diào)用,只保留LED顯示函數(shù),并在相應(yīng)的存儲單元中存入測試數(shù)據(jù),觀察是否能將測試數(shù)據(jù)正常顯示,此過程調(diào)試通過后進(jìn)行下一步的調(diào)試工作。
2)打開中斷,觀察系統(tǒng)是否能從00:00:00開始正確計時,調(diào)試至正確計時后,則將計時初值改為23:58:50,在運行程序,觀察是否能正確進(jìn)位,此步調(diào)試通過后進(jìn)入下一步的調(diào)試工作。
3)打開時鐘設(shè)置子程序調(diào)用,按下按鍵,觀察系統(tǒng)是否能夠正確響應(yīng)時間設(shè)置過程中所涉及的各個按鍵,此步調(diào)試通過后進(jìn)入下一步的調(diào)試工作。
4)打開鬧鐘時鐘設(shè)置子程序調(diào)用,先看能否進(jìn)入鬧鐘時間設(shè)置模式,若能進(jìn)入則觀察系統(tǒng)是否能夠正確響應(yīng)鬧鐘時間設(shè)置過程中所涉及的各個按鍵,此步調(diào)試通過后進(jìn)入下一步的調(diào)試工作。
5)打開鬧鐘判斷子程序調(diào)用,將鬧鐘時間設(shè)定在當(dāng)前時間之后1分鐘左右,耐心等待,看鬧鈴是否會在設(shè)定時間響起,若能響起[9],按下停止鍵#04看是否能關(guān)閉鬧鈴。
3.3 系統(tǒng)性能分析
在軟、硬件調(diào)試成功后,可以將程序固化到AT89S52的Flash存儲器中,上電脫機運行,進(jìn)行整體測試。將該設(shè)計的電子鐘和標(biāo)準(zhǔn)時鐘的進(jìn)行時間對比,每10 min記錄一次數(shù)據(jù),記錄時間2個小時,數(shù)據(jù)如表1所示。
表1 時間數(shù)據(jù)記錄結(jié)果Tab.1 Test result of time data record
測量數(shù)據(jù)顯示,設(shè)計的電子時鐘和標(biāo)準(zhǔn)時鐘的時間在兩個小時內(nèi)有一定的偏差,最大誤差2 s,計時誤差較小,準(zhǔn)確度較高,達(dá)到了設(shè)計要求,鬧鐘時間到達(dá)設(shè)定值時,鬧鈴正常工作。
本設(shè)計采用單片機作為智能控制核心,使系統(tǒng)結(jié)構(gòu)大為簡化,實現(xiàn)了電子鐘的基本功能,同時也擴展了鬧鐘設(shè)置及時間校準(zhǔn)功能。在實際測試中,計時準(zhǔn)確度高,鬧鐘工作正??煽浚摂?shù)字時鐘具有結(jié)構(gòu)簡單、體積小、功能多、性價比高、實用性強等特點,具有較高的應(yīng)用價值。
[1]李娜,楊杰,牛曉飛.基于單片機的簡易數(shù)字電子鐘設(shè)計[J].河北北方學(xué)院學(xué)報:自然科學(xué)版,2014,30(6):15-18,33.
[2]羅佳.基于單片機的數(shù)字電子鐘及其實現(xiàn)[J].常州信息職業(yè)技術(shù)學(xué)院學(xué)報,2010,9(2):17-22.
[3]王瑜.PCF8583在電子時鐘設(shè)計中的應(yīng)用[J].電子設(shè)計工程,2009,17(6):115-116.
[4]王琰,郭燕.基于C51單片機的智能循跡小車設(shè)計與實現(xiàn)[J].機電一體化,2013,8:72-76.
[5]鄭棣,徐迎春,劉雨.基于51單片機的多色點陣顯示系統(tǒng)設(shè)計[J].自動化技術(shù)與應(yīng)用,2014,33(12)5:109-113.
[6]王瑾,袁戰(zhàn)軍,李小斌.交通燈控制系統(tǒng)的設(shè)計與仿真[J].海南大學(xué)學(xué)報:自然科學(xué)版,2014,32(4):334-339.
[7]張偉,陳鋒,馬軍強,等.軌/姿控發(fā)動機脈沖后效沖量快速算法的研究及應(yīng)用[J].火箭推進(jìn),2012(1):51-56.
[8]肖笑.基于BCC算法的多機系統(tǒng)PSS參數(shù)優(yōu)化設(shè)計[J].陜西電力,2012(12):51-54.
[9]胡異丁,歐進(jìn)發(fā),鐘滔.基于LabVIEW的無線心率測量系統(tǒng)的設(shè)計[J].電子設(shè)計工程,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
楊凌職業(yè)技術(shù)學(xué)院人文社科類研究基金項目(GJ1310)
熊 剛(1985—),男,河南信陽人,碩士,講師。研究方向:電氣自動化控制技術(shù)。