任 帥 李葒娜 楊添福 吳宏亮
(天津理工大學海運學院,天津 300384)
基于STC89C51的溫測型多功能電子萬年歷設計
任帥 李葒娜 楊添福 吳宏亮
(天津理工大學海運學院,天津 300384)
本文介紹了基于STC89C51單片機的多功能電子萬年歷的硬件結構和軟硬件設計方法。本設計由數據顯示模塊、溫度采集模塊、時間處理模塊和調整設置模塊4部分組成。系統以STC89C51單片機為主控芯片;以串行時鐘日歷芯片DS1302作為時間信號源,可以完成對年、月、日、等進行計時的任務;選用DS18B20數字溫度傳感器進行溫度采集。采用1602液晶顯示模塊可同時顯示年、月、日等及溫度信息。此萬年歷結合測溫功能具有功能多樣、電路簡潔、成本低廉等諸多優點,具有廣闊的市場前景。
單片機;溫度顯示;萬年歷
時間的記錄工具經歷了不同的發展歷史,從日晷,擺鐘逐漸發展為今天的電子萬年歷。單片機的出現,使各個領域的思維方式也發生了劇烈轉變,當然也應用到了電子萬年歷方面。結合單片機技術開發的多功能電子萬年歷功能多樣,不僅可做為時鐘工具具備傳統的走時功能,更將許多常見的功能融入,如鬧鐘、溫/濕度顯示、語音報時、圖片展示等,當然由于單片機強大的控制功能,還可在原有基礎上擴展其他功能,并可朝智能家居的方向發展。
圖1所示為本設計的系統框圖,選用單片機STC89C51。DS1302做為集成式時鐘芯片提供數字時間信息;數字溫度傳感器DS18B20產生實時數字溫度信息;按鍵模塊用于校準時間;顯示器LCD1602提供人機交互界面。

圖 1 系統框圖

圖2 DS1302電路圖
(1)DS1302時鐘電路設計
DS1302是一款實時時鐘芯片,可提供時間日期信息,如圖2所示。DS1302與單片機采用SPI通信協議,此為串行方式,只需3根數據線即可完成通信。通過此協議,單片機可獲取時鐘芯片內部的年、月、日、時、分、秒等信息。另外DS1302還具備掉電走時功能,其擁有兩個電源引腳,主電源和備份電源引腳,在主電源關閉情況下,備用電源持續供電,也能保持時鐘的連續運行,當再次供電時,自動切換至主電源。
DS1302芯片的X1和X2引腳外接32.768kHz的晶體振蕩器,用于產生內部時鐘脈沖,脈沖驅動電路進經過濾波整形,可得標準的1Hz的精準信號,將標準的脈沖方波信號送實時時鐘,即可將產生的時間信息以二進制形式通過數據總線存放到內部RAM中。
(2)DS18B20測溫電路設計
DS18B20是美國Dallas公司生產的“1-Wire”單總線測溫器件,圖3為其引腳圖,體積小,線路簡單,不需額外的A/D轉換器及外圍元件,可直接讀取溫度數字值。測溫范圍-55℃~+125℃,可設置上下限溫度告警。DS18B20內部有兩個溫度系數不同的晶體,外界溫度發生變化時,兩個晶體發生不同的反應,經過計數器的比對產生數字溫度信息,然后存儲在溫度寄存器中。
DS18B20的核心功能為直接讀取數字的溫度傳感器。溫度傳感器的精度可由用戶編程設置為9,10,11或12位(精度的控制位在配置寄存器的R1和R0位),分別以0.5℃,0.25℃,0.125℃和0.0625℃增量遞增。在上電狀態下默認精度為12位。DS18B20啟動后保持低功耗待機狀態;當需要執行溫度測量和AD轉換時,微處理器通過總線控制器發出[44h]命令,然后DS18B20執行溫度轉換,產生的溫度數據以兩個字節的形式存儲到高速暫存器的溫度寄存器中,微處理器即可通過總線訪問該溫度寄存器,總線控制器在溫度轉換指令之后發起“讀時序”,可獲取該寄存器的數字溫度信息。
(3)LCD1602顯示電路設計
在LCD1602接口電路中,5腳為LCD1602的讀/寫選擇端,本次設計中,并不需要從液晶顯示器中讀取信息,只需向液晶顯示器發送數據顯示,可將這個引腳設置為寫狀態,即低電平接地。6腳為使能端,每次操作液晶時必須保證其有效,操作完畢后為了保證顯示穩定,再將其關閉。
D0~D7為液晶顯示器的并行數據接口,可將其接到單片機的P0口,作為數據通信接口,P0口做為單片機的普通I/O口并沒有內置上拉電阻,則需焊接4.7k的上拉電阻以保證正常使用;P2.5、P2.6、P2.7分別接1602的第4、5、6腳實現控制功能;BLK、BLA為液晶顯示器背光的正、負極,若不需背光功能,可將兩端懸空。液晶顯示器的VL端接電阻分壓,可進行對比度調節。16腳接三極管放大端,激活背光功能,背光點亮后延時一段時間自動關閉,從而降低功耗。

圖3 DS18B20電路圖
主程序流程圖如圖4所示。該系統的軟、硬件設計相對應,按整體功能分成多個不同的程序模塊,分別進行設計、編程和調試,最后通過主程序將各程序模塊連接起來,有利于程序修改和調試,增強了程序的可移植性。
本系統的軟件主要進行公歷計算程序設計,溫度測量程序設計,按鍵掃描輸入等。程序開始后先將單片機初始化,運行溫度測量程序,讀取溫度傳感器的測量值;運行公歷計算程序,得到公歷時間、日期信息;再運行按鍵掃描程序,檢測有無鍵按下:若無鍵按下則直接調用節日計算程序,根據得到的公歷日期信息計算出節日,若有鍵按下則將按鍵修改后的變量更新,送節日計算程序,由此程序根據修改后的變量計算出對應的節假日,計算完成后運行顯示程序,顯示程序將得到的溫度數據、公歷信息、節假日信息送給對應的數碼管顯示。

圖4 主程序流程圖
圖5為實際效果圖。經測試,系統能正常運行。按鍵按所示位置,從左到右依次為K1、K2、K3、K4。對其作簡要說明:
K1——切換鍵,K2——DOWN鍵,K3——UP鍵,K4——SET鍵。
K1:按下可顯示不同的模式,待機頁面為公歷時間,第一次按下為農歷時間,第二次按下為鬧鐘時間,再按一次回到待機界面。
K2:用于設置模式下對所選項的減操作。
K3:用于設置模式下對所選項的加操作。若處于非設置模式下,此鍵用于喚醒屏幕背光。
K4:用于時間日期的設定,按下后依次進入秒、分、時、日、月、年的設定。
在調試過程中出現了液晶屏幕不能顯示的情況,經排查是對比度調節端連接錯誤。本設計共占用23個I/O口資源,其余9個I/O口,可進行二次開發,增加其他功能。

圖5 實際效果圖
在整體設計過程中,硬件主要設計了STC89C51單片機的最小系統、DS1302接口電路、DS18B20接口電路及LCD顯示電路;軟件借助各個渠道資料,主要設計了陽歷數據讀取程序、陽歷轉陰歷程序、溫度采集程序以及LCD顯示程序;通過單片機開發板進行系統調試,再借助于Keil、STC以及少許自己搭建的外圍電路實現。在此過程中,分步調試時顯示出陽歷日期及時間,還有實時溫度。此萬年歷具有顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,符合電子儀器儀表的發展趨勢,具有廣闊的市場前景。
[1]譚浩強.C程序設計(第三版).北京:清華大學出版社,2007.
[2]郭天翔.新概念51單片機C語言教程:入門、提高、開發、拓展.北京:電子工業出版社,2009.
[3]馮博琴,吳寧.微型計算機原理與接口技術(第三版).北京:清華大學出版社,2013.
[4]萬勝前.基于keilC51軟件的的電子鐘設計與制作[M].鄂州:鄂州大學出版社,2007.
[5]李陪金.C語言程序設計案例教程[M].西安:西安電子科技大學出版社,2008.
[6] M.I.Elmasry. BiCMOS Integrated Circuit Design with Analog Digitaland Smart Power Applications [M]. IEEE Press, 1994.
[7] Verghese G C, Lang H, Casey L F. Analysis of instability in electrical machines. IEEE Trans on IA, 1986.
This paper introduces the hardware structure and the software design method of the electronic calendar based on STC89C51 single-chip microcomputer. This design made up of four modules: the data display module, temperature acquisition module, time processing module and the settings module. This system use STC89C51 single-chip microcomputer as the controller,serial clock chip DS1302 to record the time, it can be for years, months, days, hours and etc. With DS18B20 temperature acquisition, the display unit(LCD1602) can show temperature at the same time. The functional is diversity, it has a broad market prospect.
single chip microcomputer;temperature;display calendar
TP216
A
天津市大學生創新創業訓練計劃項目(201610060058);天津理工大學大學生創新創業訓練計劃項目(201610060085)。