廣州市番禺區(qū)職業(yè)技術(shù)學(xué)校 姚國旺
?
基于單片機(jī)的智能電子時(shí)鐘設(shè)計(jì)
廣州市番禺區(qū)職業(yè)技術(shù)學(xué)校 姚國旺
【摘要】本文介紹了基于AT89S51單片機(jī)的多功能電子時(shí)鐘的硬件結(jié)構(gòu)和硬件、軟件設(shè)計(jì)方法。本電子時(shí)鐘具有時(shí)間、日歷、環(huán)境溫度顯示和定時(shí)鬧鐘、時(shí)間校準(zhǔn)等多種功能,使用AT89S51單片機(jī)、DS1302時(shí)鐘芯片、LED數(shù)碼管、DS18B20溫度傳感器等常見器件,具有電路簡單、制作容易、成本低廉、時(shí)間和溫度顯示精度高等特點(diǎn)。
【關(guān)鍵詞】智能電子時(shí)鐘;AT89S51;硬件設(shè)計(jì);軟件設(shè)計(jì)
隨著微電子技術(shù)的高速發(fā)展,單片機(jī)芯片的微小體積和低廉成本,被廣泛地應(yīng)用到如玩具、家用電器、機(jī)器人、儀器儀表、汽車電子系統(tǒng)、工業(yè)控制單元、辦公自動(dòng)化設(shè)備、金融電子系統(tǒng)、艦船、個(gè)人信息終端及通訊產(chǎn)品中,成為現(xiàn)代電子系統(tǒng)中最重要的智能化工具,基于單片機(jī)的多功能電子時(shí)鐘也應(yīng)運(yùn)而生。單片機(jī)開發(fā)技術(shù)已成為電子、電氣、通信、自動(dòng)化、機(jī)電一體化等專業(yè)技術(shù)人員必須掌握的技術(shù)。
智能電子時(shí)鐘主要依靠單片機(jī)技術(shù)將常見的電子元器件按照功能需求搭建相應(yīng)的電路,實(shí)現(xiàn)實(shí)時(shí)顯示時(shí)間、日歷和環(huán)境溫度等信息的電子產(chǎn)品。由于智能電子時(shí)鐘精度高、運(yùn)行可靠,目前已普遍應(yīng)用在社會經(jīng)濟(jì)生活的各個(gè)領(lǐng)域,比如車站、商場、銀行和普通家庭等,同時(shí),智能電子時(shí)鐘還具有較強(qiáng)的擴(kuò)展性,可以根據(jù)用戶的不同需求整合、集成其他功能,比如溫度濕度檢測監(jiān)控、PM2.5空氣質(zhì)量檢測、定時(shí)計(jì)數(shù)功能等,使得其應(yīng)用更加廣泛。
本文設(shè)計(jì)的智能電子時(shí)鐘功能主要有時(shí)間、日期和溫度顯示功能,鬧鐘與延時(shí)功能,日間、日期調(diào)整與校對功能。DS1302時(shí)鐘芯片采用雙電源供電,使得產(chǎn)品斷電后能夠自動(dòng)存儲相關(guān)數(shù)據(jù),避免了重新設(shè)置時(shí)間和日期數(shù)據(jù)的麻煩。
根據(jù)智能電子時(shí)鐘的功能,其硬件電路應(yīng)該包含單片機(jī)處理中心、時(shí)鐘芯片DS1302電路、溫度傳感DS18B20電路、數(shù)碼顯示電路、鬧鐘電路、鍵盤輸入電路和電源電路等幾個(gè)模塊,電子時(shí)鐘的硬件電路框圖如圖1所示。
本智能電子時(shí)鐘的核心部分為AT89S51單片機(jī)芯片,通過單片機(jī)的I/O端口連接時(shí)鐘芯片DS1302、溫度傳感器DS18B20、鍵盤輸入電路,采集時(shí)間、日期、溫度和調(diào)整等數(shù)據(jù)信息,經(jīng)過單片機(jī)適當(dāng)轉(zhuǎn)換與處理后,再通過數(shù)碼管輸出顯示年、月、日、時(shí)、分、秒和溫度等數(shù)據(jù),同時(shí),將鬧鐘數(shù)據(jù)輸出到蜂鳴器電路進(jìn)行警報(bào)鬧鐘。產(chǎn)品使用+5V直流電源供電,+3V直流電源作為DS1302時(shí)鐘芯片的后備輔助電源。
圖1 電子時(shí)鐘電路框圖
2.1 單片機(jī)處理電路
AT89S51單片機(jī)是一種常見的實(shí)現(xiàn)了ISP下載功能的8位單片機(jī),具有低電壓、低功耗、高性能的特點(diǎn),有32個(gè)可編程的I/O口,4KB的片內(nèi)程序存儲器,128×8位內(nèi)部RAM,1000次擦寫循環(huán),5個(gè)中斷源,2個(gè)16位的定時(shí)/計(jì)數(shù)器,片內(nèi)振蕩器和時(shí)鐘電路和看門狗電路,40引腳DIP封裝,與MCS-51系列單片機(jī)的引腳和指令系統(tǒng)完全兼容。
2.2 時(shí)鐘日歷電路
電子時(shí)鐘采用實(shí)時(shí)時(shí)鐘日歷芯片DS1302。DS1302的5腳(RST復(fù)位端)與單片機(jī)的1腳(P1.0)相連, 7腳(SCLK串行時(shí)鐘端)與的單片機(jī)2腳(P1.1)相連,6腳(I/O數(shù)據(jù)端)與單片機(jī)的3腳(P1.2)相連,2腳(X1)和3腳(X2)兩端連接頻率為32.768KHz的晶體振蕩器,為DS1302提供基準(zhǔn)時(shí)鐘,1腳(VCC2)連接+3V備用電源。正常情況下,DS1302芯片由+5V供電;掉電后,由備用電池供電。
2.3 環(huán)境溫度采集電路
環(huán)境溫度數(shù)據(jù)主要由DS18B20數(shù)字溫度傳感器采集與轉(zhuǎn)換。DS18B20體積小、使用方便,測溫范圍-55℃~+125℃。本電路中,DS18B20的2腳通過4.7K的上拉電阻R6與單片機(jī)AT89S51的P3.3相連,1腳和3腳分別接電源地和+5V。
圖2 數(shù)碼顯示電路
2.4 數(shù)碼顯示電路
采用7位8段共陰LED數(shù)碼管實(shí)現(xiàn)時(shí)鐘/日歷/溫度數(shù)字的顯示,使用8位移位寄存器74LS164驅(qū)動(dòng)數(shù)碼顯示,數(shù)據(jù)從單片機(jī)的P1.6輸送到第一個(gè)芯片的1、2腳,后續(xù)各芯片的1、2腳與前一芯片的13腳相連;單片機(jī)的P1.7模擬輸出時(shí)鐘脈沖輸送到各芯片的時(shí)鐘端。電路如圖2所示。
2.5 按鍵功能電路
設(shè)置5個(gè)按鍵,接在單片機(jī)的P2.1-P2.5腳,分別為功能鍵(實(shí)現(xiàn)時(shí)間/日期/溫度/鬧鐘數(shù)據(jù)的循環(huán)切換顯示)、設(shè)置鍵(進(jìn)入時(shí)間/日期/溫度/鬧鐘數(shù)據(jù)的設(shè)置)、加1鍵和減1鍵(實(shí)現(xiàn)數(shù)據(jù)的加減1操作)、鬧鐘開關(guān)鍵(開啟或關(guān)閉鬧鐘)。
2.6 鬧鐘電路
由單片機(jī)P2.0腳控制,通過R7與PNP型三極管連接。若當(dāng)前時(shí)刻與設(shè)定的鬧鐘時(shí)間相同,P2.0輸出低電平,三極管導(dǎo)通,蜂鳴器發(fā)出聲音。
3.1 主程序設(shè)計(jì)
上電后,系統(tǒng)初始化的日期和時(shí)間為2015年6月1日00時(shí)00分00秒。LED數(shù)碼顯示初始時(shí)間“00:00:00”,并開始計(jì)時(shí)。程序正常運(yùn)行后,單片機(jī)循環(huán)調(diào)用顯示子程序和按鍵掃描子程序,在數(shù)據(jù)顯示期間若按下按鍵,則調(diào)用相應(yīng)的時(shí)間、日期、溫度、鬧鐘等子功能處理程序,并送LED數(shù)碼管實(shí)時(shí)顯示。
3.2 子程序設(shè)計(jì)
3.2.1 顯示子程序
結(jié)合顯示模塊的硬件電路,在編寫顯示子程序時(shí),要將所需顯示數(shù)據(jù)的二進(jìn)制數(shù)碼依次送入74LS164芯片的串行數(shù)據(jù)輸入端,需要顯示的數(shù)據(jù)主要有時(shí)間、日期和溫度數(shù)據(jù)的實(shí)時(shí)值和調(diào)整值二大類,但由于輸出的顯示數(shù)據(jù)要根據(jù)按鍵功能的不同而變化,常規(guī)編程將變得復(fù)雜化。本設(shè)計(jì)中巧妙通過設(shè)置一個(gè)變量f_count來標(biāo)記按鍵的功能,然后再根據(jù)f_count的不同數(shù)值調(diào)用相應(yīng)的功能子程序,再通過設(shè)置標(biāo)志位,根據(jù)標(biāo)志位數(shù)值的不同數(shù)值來顯示時(shí)間、日期和溫度數(shù)據(jù),從而使程序得到簡化。顯示子程序流程如圖3所示。
圖3 顯示子程序流程圖
3.2.2 鍵盤掃描子程序
采用顯示數(shù)據(jù)完成輸出后再掃描鍵盤狀態(tài)的方式,根據(jù)鍵盤按下的情況對鍵盤參數(shù)key進(jìn)行賦值,CPU通過判斷key數(shù)值再調(diào)用相應(yīng)的功能處理程序,若無按鍵,則置key值為0后返回主程序。
3.2.3 時(shí)鐘日歷子程序
主要是實(shí)現(xiàn)對DS1302時(shí)鐘芯片的年、月、日、時(shí)、分、秒等寄存器數(shù)據(jù)的讀寫操作。首先要對DS1302進(jìn)行初始化,寫入時(shí)間、日期初始值開始計(jì)時(shí),然后單片機(jī)采用串行通信的方式讀取DS1302的時(shí)鐘數(shù)據(jù)并送出顯示。由于串行通信對時(shí)序有嚴(yán)格的要求,因此需要采用定時(shí)中斷的方式產(chǎn)生標(biāo)準(zhǔn)的串行時(shí)鐘脈沖,同時(shí)在通信過程中要關(guān)閉中斷功能。
3.2.4 環(huán)境溫度采集子程序
DS18B20是單線器件,要求有嚴(yán)格的時(shí)序來保證數(shù)據(jù)傳輸?shù)耐暾?,而AT89S51不支持單線傳輸,因此,需要采用軟件的方法模擬單線的協(xié)議時(shí)序。
3.2.5 鬧鐘子程序
鬧鐘的設(shè)計(jì)思路是用當(dāng)前時(shí)間數(shù)值與鬧鐘設(shè)定的時(shí)間數(shù)值相比較,若二者數(shù)值相等時(shí)則調(diào)用鬧鐘子程序,蜂鳴器響鈴1分鐘,在響鈴過程中若按下貪睡鍵,則取消響鈴,將鬧鐘數(shù)值增加5分鐘,時(shí)間到則再次響鈴,響鈴?fù)瓿珊蠓祷刂鞒绦颉?/p>
智能電子時(shí)鐘的調(diào)試過程主要有硬件調(diào)試和軟件調(diào)試二部分,硬件調(diào)試又分為單片機(jī)最小系統(tǒng)、顯示電路、時(shí)鐘電路和按鍵電路等部分,軟件調(diào)試主要有實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試、環(huán)境溫度采集子程序調(diào)試、按鍵子程序調(diào)試等部分。本人主要使用仿真軟件protues按照功能需求設(shè)計(jì)硬件電路,使用keil進(jìn)行軟件編程,然后再將軟件裝載到protues設(shè)計(jì)的硬件電路中進(jìn)行聯(lián)調(diào)。
由于本智能電子時(shí)鐘采用數(shù)碼管串行靜態(tài)顯示,很大程度上節(jié)省了I/O口資源,也節(jié)省了成本,但體積不夠精簡,今后可進(jìn)一步將數(shù)碼顯示改為液晶顯示,既可以節(jié)省能源,又顯得高檔次;可進(jìn)一步減少按鍵數(shù)量,實(shí)現(xiàn)一鍵多功能,若有條件可設(shè)計(jì)成觸摸屏功能。
參考文獻(xiàn)
[1]朱宏.單片機(jī)應(yīng)用技術(shù)[M].高等教育出版社,2012.1.
[2]馮育長.單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)例分析[M].西安電子科技大學(xué)出版社,2007.5.
[3]戴佳,戴衛(wèi)恒.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例精講[M].電子工業(yè)出版社,2006.4.