廣州市番禺區職業技術學校 姚國旺
?
基于單片機的智能電子時鐘設計
廣州市番禺區職業技術學校 姚國旺
【摘要】本文介紹了基于AT89S51單片機的多功能電子時鐘的硬件結構和硬件、軟件設計方法。本電子時鐘具有時間、日歷、環境溫度顯示和定時鬧鐘、時間校準等多種功能,使用AT89S51單片機、DS1302時鐘芯片、LED數碼管、DS18B20溫度傳感器等常見器件,具有電路簡單、制作容易、成本低廉、時間和溫度顯示精度高等特點。
【關鍵詞】智能電子時鐘;AT89S51;硬件設計;軟件設計
隨著微電子技術的高速發展,單片機芯片的微小體積和低廉成本,被廣泛地應用到如玩具、家用電器、機器人、儀器儀表、汽車電子系統、工業控制單元、辦公自動化設備、金融電子系統、艦船、個人信息終端及通訊產品中,成為現代電子系統中最重要的智能化工具,基于單片機的多功能電子時鐘也應運而生。單片機開發技術已成為電子、電氣、通信、自動化、機電一體化等專業技術人員必須掌握的技術。
智能電子時鐘主要依靠單片機技術將常見的電子元器件按照功能需求搭建相應的電路,實現實時顯示時間、日歷和環境溫度等信息的電子產品。由于智能電子時鐘精度高、運行可靠,目前已普遍應用在社會經濟生活的各個領域,比如車站、商場、銀行和普通家庭等,同時,智能電子時鐘還具有較強的擴展性,可以根據用戶的不同需求整合、集成其他功能,比如溫度濕度檢測監控、PM2.5空氣質量檢測、定時計數功能等,使得其應用更加廣泛。
本文設計的智能電子時鐘功能主要有時間、日期和溫度顯示功能,鬧鐘與延時功能,日間、日期調整與校對功能。DS1302時鐘芯片采用雙電源供電,使得產品斷電后能夠自動存儲相關數據,避免了重新設置時間和日期數據的麻煩。
根據智能電子時鐘的功能,其硬件電路應該包含單片機處理中心、時鐘芯片DS1302電路、溫度傳感DS18B20電路、數碼顯示電路、鬧鐘電路、鍵盤輸入電路和電源電路等幾個模塊,電子時鐘的硬件電路框圖如圖1所示。
本智能電子時鐘的核心部分為AT89S51單片機芯片,通過單片機的I/O端口連接時鐘芯片DS1302、溫度傳感器DS18B20、鍵盤輸入電路,采集時間、日期、溫度和調整等數據信息,經過單片機適當轉換與處理后,再通過數碼管輸出顯示年、月、日、時、分、秒和溫度等數據,同時,將鬧鐘數據輸出到蜂鳴器電路進行警報鬧鐘。產品使用+5V直流電源供電,+3V直流電源作為DS1302時鐘芯片的后備輔助電源。

圖1 電子時鐘電路框圖
2.1 單片機處理電路
AT89S51單片機是一種常見的實現了ISP下載功能的8位單片機,具有低電壓、低功耗、高性能的特點,有32個可編程的I/O口,4KB的片內程序存儲器,128×8位內部RAM,1000次擦寫循環,5個中斷源,2個16位的定時/計數器,片內振蕩器和時鐘電路和看門狗電路,40引腳DIP封裝,與MCS-51系列單片機的引腳和指令系統完全兼容。
2.2 時鐘日歷電路
電子時鐘采用實時時鐘日歷芯片DS1302。DS1302的5腳(RST復位端)與單片機的1腳(P1.0)相連, 7腳(SCLK串行時鐘端)與的單片機2腳(P1.1)相連,6腳(I/O數據端)與單片機的3腳(P1.2)相連,2腳(X1)和3腳(X2)兩端連接頻率為32.768KHz的晶體振蕩器,為DS1302提供基準時鐘,1腳(VCC2)連接+3V備用電源。正常情況下,DS1302芯片由+5V供電;掉電后,由備用電池供電。
2.3 環境溫度采集電路
環境溫度數據主要由DS18B20數字溫度傳感器采集與轉換。DS18B20體積小、使用方便,測溫范圍-55℃~+125℃。本電路中,DS18B20的2腳通過4.7K的上拉電阻R6與單片機AT89S51的P3.3相連,1腳和3腳分別接電源地和+5V。

圖2 數碼顯示電路
2.4 數碼顯示電路
采用7位8段共陰LED數碼管實現時鐘/日歷/溫度數字的顯示,使用8位移位寄存器74LS164驅動數碼顯示,數據從單片機的P1.6輸送到第一個芯片的1、2腳,后續各芯片的1、2腳與前一芯片的13腳相連;單片機的P1.7模擬輸出時鐘脈沖輸送到各芯片的時鐘端。電路如圖2所示。
2.5 按鍵功能電路
設置5個按鍵,接在單片機的P2.1-P2.5腳,分別為功能鍵(實現時間/日期/溫度/鬧鐘數據的循環切換顯示)、設置鍵(進入時間/日期/溫度/鬧鐘數據的設置)、加1鍵和減1鍵(實現數據的加減1操作)、鬧鐘開關鍵(開啟或關閉鬧鐘)。
2.6 鬧鐘電路
由單片機P2.0腳控制,通過R7與PNP型三極管連接。若當前時刻與設定的鬧鐘時間相同,P2.0輸出低電平,三極管導通,蜂鳴器發出聲音。
3.1 主程序設計
上電后,系統初始化的日期和時間為2015年6月1日00時00分00秒。LED數碼顯示初始時間“00:00:00”,并開始計時。程序正常運行后,單片機循環調用顯示子程序和按鍵掃描子程序,在數據顯示期間若按下按鍵,則調用相應的時間、日期、溫度、鬧鐘等子功能處理程序,并送LED數碼管實時顯示。
3.2 子程序設計
3.2.1 顯示子程序
結合顯示模塊的硬件電路,在編寫顯示子程序時,要將所需顯示數據的二進制數碼依次送入74LS164芯片的串行數據輸入端,需要顯示的數據主要有時間、日期和溫度數據的實時值和調整值二大類,但由于輸出的顯示數據要根據按鍵功能的不同而變化,常規編程將變得復雜化。本設計中巧妙通過設置一個變量f_count來標記按鍵的功能,然后再根據f_count的不同數值調用相應的功能子程序,再通過設置標志位,根據標志位數值的不同數值來顯示時間、日期和溫度數據,從而使程序得到簡化。顯示子程序流程如圖3所示。

圖3 顯示子程序流程圖
3.2.2 鍵盤掃描子程序
采用顯示數據完成輸出后再掃描鍵盤狀態的方式,根據鍵盤按下的情況對鍵盤參數key進行賦值,CPU通過判斷key數值再調用相應的功能處理程序,若無按鍵,則置key值為0后返回主程序。
3.2.3 時鐘日歷子程序
主要是實現對DS1302時鐘芯片的年、月、日、時、分、秒等寄存器數據的讀寫操作。首先要對DS1302進行初始化,寫入時間、日期初始值開始計時,然后單片機采用串行通信的方式讀取DS1302的時鐘數據并送出顯示。由于串行通信對時序有嚴格的要求,因此需要采用定時中斷的方式產生標準的串行時鐘脈沖,同時在通信過程中要關閉中斷功能。
3.2.4 環境溫度采集子程序
DS18B20是單線器件,要求有嚴格的時序來保證數據傳輸的完整,而AT89S51不支持單線傳輸,因此,需要采用軟件的方法模擬單線的協議時序。
3.2.5 鬧鐘子程序
鬧鐘的設計思路是用當前時間數值與鬧鐘設定的時間數值相比較,若二者數值相等時則調用鬧鐘子程序,蜂鳴器響鈴1分鐘,在響鈴過程中若按下貪睡鍵,則取消響鈴,將鬧鐘數值增加5分鐘,時間到則再次響鈴,響鈴完成后返回主程序。
智能電子時鐘的調試過程主要有硬件調試和軟件調試二部分,硬件調試又分為單片機最小系統、顯示電路、時鐘電路和按鍵電路等部分,軟件調試主要有實時時鐘日歷子程序調試、環境溫度采集子程序調試、按鍵子程序調試等部分。本人主要使用仿真軟件protues按照功能需求設計硬件電路,使用keil進行軟件編程,然后再將軟件裝載到protues設計的硬件電路中進行聯調。
由于本智能電子時鐘采用數碼管串行靜態顯示,很大程度上節省了I/O口資源,也節省了成本,但體積不夠精簡,今后可進一步將數碼顯示改為液晶顯示,既可以節省能源,又顯得高檔次;可進一步減少按鍵數量,實現一鍵多功能,若有條件可設計成觸摸屏功能。
參考文獻
[1]朱宏.單片機應用技術[M].高等教育出版社,2012.1.
[2]馮育長.單片機系統設計與實例分析[M].西安電子科技大學出版社,2007.5.
[3]戴佳,戴衛恒.51單片機C語言應用程序設計實例精講[M].電子工業出版社,2006.4.