劉戰(zhàn)峰
(太原科技大學(xué),山西 太原 030024)
電子時(shí)鐘是一種應(yīng)用數(shù)字電路技術(shù)實(shí)現(xiàn)計(jì)時(shí)的裝置,主要基于51單片機(jī),通過延時(shí)程序產(chǎn)生一定的中斷,用于一秒的計(jì)時(shí),采用滿60秒,分鐘進(jìn)一,秒清零,滿六十分,時(shí)進(jìn)一,分清零,滿二十四小時(shí),時(shí)清零,從而達(dá)到計(jì)時(shí)的功能。單片機(jī)技術(shù)已經(jīng)深入到國民經(jīng)濟(jì)的各個(gè)領(lǐng)域,幾乎每一個(gè)智能產(chǎn)品都集成了至少一片單片機(jī),對(duì)每個(gè)行業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代起到了非常重要的作用[1]。數(shù)字式電子時(shí)鐘采用集成電路,通過譯碼編譯,數(shù)碼管顯示來實(shí)現(xiàn)計(jì)時(shí)功能,代替了指針機(jī)械式轉(zhuǎn)動(dòng)顯示,減小了計(jì)時(shí)誤差,提升了時(shí)鐘的精準(zhǔn)度,而且我們可以對(duì)時(shí)、分進(jìn)行校對(duì),片選的靈活度高。
在51單片機(jī)應(yīng)用系統(tǒng)中,通過時(shí)鐘芯片設(shè)計(jì)的時(shí)鐘不僅時(shí)間精度高,而且還易控制,適用于精度要求高的場合[2];電子時(shí)鐘擁有體積小、功能多、實(shí)時(shí)性好、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),受到人們的高度青睞,被廣泛地應(yīng)用于生活和工作中。本文主要介紹通過DS1302時(shí)鐘芯片實(shí)現(xiàn)電子時(shí)鐘的設(shè)計(jì),本設(shè)計(jì)由硬件電路設(shè)計(jì)和C語言軟件設(shè)計(jì)兩部分組成,其中硬件設(shè)計(jì)以AT89S52單片機(jī)為核心,加上電源、數(shù)碼管、溫度檢測(cè)器、蜂鳴器為輔助電路,構(gòu)成一個(gè)簡單的數(shù)字時(shí)鐘系統(tǒng)。
本設(shè)計(jì)利用AT89S52單片機(jī)設(shè)計(jì)電子時(shí)鐘,由LED四位共陰極數(shù)碼管[3]顯示時(shí)鐘的日期、小時(shí)和分鐘,周圍的LED燈輪顯實(shí)現(xiàn)秒的顯示,溫度檢測(cè)器控制溫度,蜂鳴器實(shí)現(xiàn)鬧鈴功能,用功能鍵(MODE)、加法鍵(PLUS)、復(fù)位鍵(REST)進(jìn)行時(shí)間的調(diào)整和鬧鐘溫度的設(shè)置。
圖1 系統(tǒng)框圖
本設(shè)計(jì)主要實(shí)現(xiàn)的功能有:
1) 具有時(shí)間顯示和手動(dòng)校對(duì)功能,24小時(shí)制;
2) 具有日期顯示和手動(dòng)校對(duì)功能;
3) 具有溫度顯示和手動(dòng)校對(duì)功能;
4) 整點(diǎn)報(bào)時(shí)功能:當(dāng)打開整點(diǎn)報(bào)時(shí)時(shí),在8點(diǎn)至22點(diǎn),每個(gè)整點(diǎn)都會(huì)報(bào)時(shí)(蜂鳴器響及LED顯示變化);
5) 鬧鐘功能:當(dāng)打開鬧鐘時(shí),在時(shí)間到了設(shè)定的時(shí)間后就會(huì)響鬧。按任意按鍵會(huì)停止響鬧,響鬧的時(shí)間長短可以設(shè)置;
6) 溫度報(bào)警功能:當(dāng)打開溫度報(bào)警,并且環(huán)境的溫度低于設(shè)定的最低溫度或高于設(shè)定的最高溫度時(shí),在顯示溫度的過程中會(huì)不斷閃爍,并且蜂鳴器會(huì)響[4]。
數(shù)字時(shí)鐘以單片機(jī)為核心,由電源、溫度檢測(cè)電路、數(shù)碼管驅(qū)動(dòng)電路、復(fù)位電路、實(shí)時(shí)時(shí)鐘電路、蜂鳴器驅(qū)動(dòng)電路組成。通過四位數(shù)碼管顯示時(shí)間、日期、溫度,給人以視覺豐富的視覺體驗(yàn),用溫度檢測(cè)電路對(duì)溫度進(jìn)行控制,當(dāng)溫度超出設(shè)定的最高溫度或低于設(shè)定的最低溫度時(shí),會(huì)發(fā)出報(bào)警,給人以提示。蜂鳴器用來實(shí)現(xiàn)鬧鈴功能,更好的方便人們的生活。各電路相互連接最終實(shí)現(xiàn)了電子時(shí)鐘的實(shí)時(shí)性和多功能特性。
從外部引入5 V的直流電,為單片機(jī)、復(fù)位電路、溫度檢測(cè)電路、蜂鳴檢測(cè)電路、實(shí)時(shí)時(shí)鐘電路提供電源。
復(fù)位電路主要由型號(hào)為5 V電源,型號(hào)為104的貼片電容,10 k的電阻以及按鍵RST1構(gòu)成,RST1接芯片的相應(yīng)引腳RST,當(dāng)開關(guān)按下時(shí)引腳RST1為高電平1,斷開時(shí)引腳為低電平0。持續(xù)時(shí)間大于2個(gè)時(shí)鐘周期的高電平,就可完成單片機(jī)的復(fù)位。
圖2 程序下載接口圖
如圖2所示,由AT89S ISP構(gòu)成的兩排十針下載口,板圖上有一個(gè)小方框,為1號(hào)引角;下載線的凸口為正方向,凸口的右側(cè)邊的第一個(gè)插孔為1號(hào)引角。通過此接口將keil生成的hex文件程序燒錄到單片機(jī)中,從而控制時(shí)鐘的運(yùn)行。
AT89S52單片機(jī)是低電壓高性能CMOS 8位單片機(jī),片內(nèi)含8K bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256bytes的隨機(jī)數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度,非易失性存儲(chǔ)技術(shù)生產(chǎn),功能強(qiáng)大的AT89S52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合[5]。
圖3 AT89S52單片機(jī)的引腳圖
如圖3所示,AT89S52有40引腳,按功能可分為電源及時(shí)鐘引腳、控制引腳、I/O口引腳,所用引腳功能如下:
1) VCC——運(yùn)行時(shí)接+5 V。
2) GND——接地。
3) XTAL1——片內(nèi)振蕩器反相放大器及時(shí)鐘發(fā)生器的輸入端。
4) XTAL2——片內(nèi)振蕩器反相放大器的輸出端。
5) RST——復(fù)位信號(hào)輸入端,高電平有效,在此引腳上持續(xù)時(shí)間大于2個(gè)機(jī)器周期的高電平,就可以使單片機(jī)復(fù)位。
6) EA/VPP——外部程序存儲(chǔ)器訪問允許控制端。當(dāng)EA接高電平,PC值不超過0FFFH時(shí),單片機(jī)讀片內(nèi)程序存儲(chǔ)器中的程序,當(dāng)PC值超出范圍時(shí),將讀取外部(1000H—FFFFH)存儲(chǔ)器中的程序,當(dāng)EA為低電平時(shí),只讀取外部存儲(chǔ)器中(0000H—FFFFH)中的程序。
7) a) P0口(P0.0-P0.7)是一個(gè)8位漏極開路的雙向I/O口,當(dāng)單片機(jī)擴(kuò)展外部存儲(chǔ)器及I/O芯片時(shí),P0口作為地址總線(低8位)和數(shù)據(jù)總線的分時(shí)復(fù)用端口。b)P1口(P1.0-P1.7)是具有內(nèi)部上拉電阻的準(zhǔn)雙向I/O口,此口專為用戶使用,可驅(qū)動(dòng)四個(gè)LS型TTL負(fù)載。c) P2口(P2.0-P2.7)P2口是具有內(nèi)部上拉電阻的8位雙向I/O口,當(dāng)AT89S52擴(kuò)展外部存儲(chǔ)器及I/O口時(shí),P2口作為高8位地址地址總線用,輸出8位地址。d) P3口(P3.0-P3.7)是帶有上拉電阻的準(zhǔn)雙向口,可以進(jìn)行串行數(shù)據(jù)輸入、外部中斷0、1輸入、定時(shí)器0、1外部計(jì)時(shí)器輸入、外部存儲(chǔ)器讀寫輸出。
系統(tǒng)的軟件設(shè)計(jì)主要是系統(tǒng)功能的設(shè)計(jì),單片機(jī)軟件設(shè)計(jì)主要包括執(zhí)行軟件(完成各種功能)和監(jiān)控軟件(按鍵)的設(shè)計(jì)。本設(shè)計(jì)使用C語言編程[6],將系統(tǒng)分為主程序和子程序兩大部分,其中子程序主要是針對(duì)時(shí)鐘系統(tǒng)的功能模塊設(shè)計(jì)的。
當(dāng)給系統(tǒng)上電時(shí),首先要進(jìn)行初始化,設(shè)置秒鐘的顯示模式,初始化秒鐘顯示,然后開總中斷,單片機(jī)依次開始調(diào)用LED顯示子程序、按鍵子程序、DS1302子程序、DS18B20子程序,鬧鐘子程序、溫度控制子程序,經(jīng)過延時(shí),返回程序開始循環(huán)執(zhí)行。
主程序流程圖如圖4所示。
圖4 時(shí)鐘系統(tǒng)主程序流程圖
1) 環(huán)境溫度采集子程序設(shè)計(jì)
DS18B20是1-wire單線器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而AT89S52單片機(jī)并不支持單線傳輸,這就需要操作DS18B20時(shí)必須遵循一定的規(guī)定。在單線DQ上,存在復(fù)位脈沖、應(yīng)答脈沖、寫“0”、寫“1”、讀“0”、讀“1”幾種信號(hào)類型。除了應(yīng)答脈沖之外,均由主機(jī)產(chǎn)生,數(shù)據(jù)位的讀寫則通過讀、寫時(shí)序產(chǎn)生的。
寫時(shí)序是由數(shù)據(jù)線從高電平拉到低電平產(chǎn)生的,有寫“0”和寫“1”兩種類型的時(shí)序。所有寫時(shí)序必須在60us以上,各個(gè)寫時(shí)序必須保證最短1us的回復(fù)時(shí)間。DS18B20在DQ線變低后的15~60us的窗口對(duì)DQ進(jìn)行采樣,如果為高電平,則寫“1”。當(dāng)DQ被拉至低電平且至少60us時(shí),則寫“0”。
讀時(shí)序是由數(shù)據(jù)線從高電平拉至低電平產(chǎn)生的,有讀“0”和寫“0”兩種類型的時(shí)序。和寫時(shí)序一樣,所有的讀時(shí)序最短保持60us,各個(gè)時(shí)序之間必須保證1us的恢復(fù)時(shí)間。在15us內(nèi),將DQ引腳置低電平,輸出數(shù)據(jù)在讀時(shí)序有效,則讀“1”,當(dāng)DQ引腳被拉至高電平時(shí),則讀“0”[7]。溫度采集子程序流程圖如圖5所示。
圖5 溫度采集子程序流程圖
2) 鬧鈴子程序設(shè)計(jì)
鬧鐘子程序是不斷用時(shí)鐘的分和時(shí)與設(shè)定的分和時(shí)進(jìn)行比較,當(dāng)滿足相等條件時(shí),鬧鐘啟動(dòng),響鈴10分鐘,當(dāng)復(fù)位鍵、模式鍵、加一鍵這三個(gè)鍵中有任一個(gè)鍵按下,或不滿足相等條件時(shí),鬧鐘不啟動(dòng)。
3) 實(shí)時(shí)時(shí)鐘日歷子程序設(shè)計(jì)
該程序主要實(shí)現(xiàn)對(duì)DS1302充電、寫保護(hù),對(duì)年、月、日、時(shí)、分等寄存器的讀寫操作。DS1302有12個(gè)寄存器,其中7個(gè)與時(shí)鐘、日歷有關(guān)。當(dāng)對(duì)時(shí)鐘、日歷寄存器或片內(nèi)RAM進(jìn)行寫時(shí)WP=0,進(jìn)行讀時(shí)WP=1。滿充電寄存器的TCL位為控制慢充電的選擇,當(dāng)TCS=1010時(shí)才能開始慢充電。
在對(duì)DS1302寫寄存器進(jìn)行讀寫操作時(shí),首先要解除寫保護(hù)寄存器的“禁止”狀態(tài),當(dāng)用多字節(jié)模式進(jìn)行操作時(shí),必須寫夠8字節(jié)。
4) 溫度控制子程序設(shè)計(jì)
該子程序主要由兩個(gè)判斷語句組成,當(dāng)有溫度控制按鍵按下,并且當(dāng)前溫度低于設(shè)定的最低溫度或高于設(shè)定的最高溫度時(shí),開始報(bào)警。
5) 數(shù)碼管顯示程序設(shè)計(jì)
數(shù)碼管顯示程序比較簡單,用74LS164驅(qū)動(dòng)LED數(shù)碼管就可以顯示電路。你要將要顯示的數(shù)字編成對(duì)應(yīng)的BCD碼,逐步送入74LS164的A、B串行輸入端,數(shù)碼管將正常顯示。本設(shè)計(jì)采用的數(shù)碼管的動(dòng)態(tài)顯示,由位選線控制是哪一位數(shù)碼管有效,有效的數(shù)碼管則點(diǎn)亮。
Keil uvision4[8]是一款用于51單片機(jī)的集成開發(fā)環(huán)境,包含了功能強(qiáng)大的編輯器和調(diào)試器。用戶可以在編輯器內(nèi)編輯程序代碼,編輯完成后可以調(diào)試代碼,方便用戶快速的檢查和修改程序,此軟件還有代碼覆蓋、歷史跟蹤等功能,操作簡單,可擴(kuò)展性強(qiáng)。這是一款集編輯、編譯和項(xiàng)目管理于一身的基于窗口的軟件開發(fā)環(huán)境,集成了C語言編譯器、宏編譯、鏈接/定位、以及HEX文件產(chǎn)生器。
在使用時(shí),首先要新建一個(gè)工程,建立并編輯源文件,編譯調(diào)試工程,在調(diào)試無錯(cuò)誤的情況下生成目標(biāo)文件,將目標(biāo)文件下載到程序存儲(chǔ)器中。檢測(cè)程序能否實(shí)現(xiàn)預(yù)期效果,如果不能,則對(duì)程序進(jìn)行分析修改,直到實(shí)現(xiàn)所需要的系統(tǒng)功能為止。本系統(tǒng)軟件的測(cè)試如圖6所示。
通過測(cè)試可知,程序調(diào)試正確,并成功生成hex文件。通過程序下載器將此hex文件燒錄到單片機(jī)內(nèi),即可進(jìn)行硬件電路的焊接。
圖6 keil4測(cè)試系統(tǒng)結(jié)果
本文所設(shè)計(jì)的基于51單片機(jī)的LED電子時(shí)鐘,把程序設(shè)計(jì)語言應(yīng)用于時(shí)鐘的系統(tǒng)構(gòu)造中,實(shí)現(xiàn)了電子時(shí)鐘的多功能設(shè)計(jì)。提高了智能電子時(shí)鐘的實(shí)用性和功能性。基于單片機(jī)芯片的多功能時(shí)鐘能夠?qū)崿F(xiàn)更多的功能,比如秒表計(jì)時(shí)、倒計(jì)時(shí)功能等等,這些都是我們將來要開發(fā)與研究的內(nèi)容,而且隨著科學(xué)技術(shù)的進(jìn)步,電子技術(shù)的高速發(fā)展,會(huì)有越來越多功能齊全、設(shè)計(jì)個(gè)性的電子產(chǎn)品進(jìn)入我們的生活,豐富我們的生活,給我們的生活帶來了更多的方便和樂趣。