

摘 要:人們在觀測時間的時候,常常想知道當時的濕度、溫度、日期、星期等與日常生活密切的信息。采用51單片機設計了一種計時準確、功能全面、成本低廉的萬年歷。該電子萬年歷通過定時中斷和按鍵同時顯示各種需要的信息,具有電路簡單,顯示直觀、讀取方便、功能多樣的優點。
關鍵詞:電子萬年歷;單片機;定時中斷;溫濕度
引言
電子萬年歷是一種應用非常廣泛的日常計時工具,適合各類場合使用。LCD數字顯示的日歷鐘顯示清晰直觀、走時準確、可以進行夜視,并且還可以擴展出多種功能。功能也越來越齊全,除了公歷年月日、時分秒、還有星期、溫濕度顯示及鬧鈴。
1 總體設計要求
1.1 實現的功能
此萬年歷主要功能是顯示:時、分、秒、年、月、日、星期、濕度、溫度、鬧鐘功能、整點報時、農歷、平閏年。
數字式溫濕度計測溫范圍-40~80℃,濕度誤差范圍±3%RH用LCD液晶顯示。
1.2 系統基本方案選擇
KeilC51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。KeilC51軟件目標代碼生成效率很高,大多數情況下生成的匯編語言代碼都比較容易理解[1]。
1.3 硬件設計選定
本設計主控制系統采用AT89S52,獨立按鍵控制;時鐘電路由ds1302時鐘電路提供;溫濕度由DHT21數字式溫濕度傳感器采集;LCD1602液晶屏動態掃描作為顯示。如圖1所示。
2 系統的硬件設計與實現
2.1 單片機主控制模塊的設計
主控制系統采用AT89S52,這是一種高性能、低功耗微控制器,具有8K的系統可編程Flash存儲器。與工業80C51產品指令和引腳完全兼容。單片機的最小系統由單片機芯片、時鐘電路、復位電路組成[2]。
2.2 計時芯片
計時芯片采用DS1302,這是一種高性能實時時鐘電路[3],DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。如果采用單片機,還需要計數器,同時需要設置中斷、查詢等,消耗單片機資源,而采用DS1302時鐘芯片,就不存在這些問題。
2.3 數字溫濕度傳感器DHT21
溫濕度選擇DHT21數字溫濕度傳感器,這是一種溫濕度復合傳感器,數字信號輸出已經校準[4]。產品為4針單排引腳封裝。采樣周期不得低于最小值,否則會引起錯誤。
3 系統的軟件設計
3.1 主程序及流程圖
本設計實現功能所用程序主要包含數字溫、濕度傳感器DHT21讀取數據子程序,液晶屏、計時芯片DS1302初始化程序、鍵盤按鍵等子程序和一個主程序。主程序首先執行時鐘芯片和定時計數器T0、T1、T2的初始化程序,LCD1602液晶屏初始化子函數,通過時鐘芯片DS1302進行精確計時,液晶屏顯示年、月、日、星期、時、分、秒和溫、濕度,然后通過無限循環進入鍵盤函數按鍵等待,不斷查詢按鍵狀態及高溫檢測狀態,溫度若超過30攝氏度,蜂鳴器發出報警聲響。通過按鍵子程序執行年、月、日及時鐘設置,平、閏年查詢,鬧鈴加減設置及開關,整點報時開關等子程序,執行效果通過液晶屏顯示出來,設置完成后返回主程序。主程序如下所示,流程圖如圖2所示。
3.2 時間調整程序流程圖
設置日期時間介紹:本設計通過時鐘芯片DS1302控制計時,該芯片計時相對精確。可以節省單片機資源,具有閏年補償作用。通過按鍵進入子程序實現設置時間等相關功能,當按下set(設置)鍵,時間計數會先暫停,溫、濕度暫停讀取更新值,等待設置完畢又開始正常工作。蜂鳴器會長響一次,顯示年份位置會有光標閃爍,表示此時可以調節年份,如需調節年份,按add(加)鍵,dec(減)鍵即可對年份進行加一、減一調節。由于程序設置公歷年份前兩位為20,所以只能顯示和調節21世紀的年份,年份調節完畢后,然后再按一次set(設置)鍵移位,顯示月份位置會有光標閃爍,同樣的方法可以調節月份,同上,再按set鍵分別可設置日、時、分、秒。設置時間是關聯的,如星期會隨著日期變化而改變,而當秒數加到60,分會自動加一。溫度轉換開始命令由溫度轉換子程序發出,本設計采用1s顯示程序延時等待轉換的完成。
3.3 溫、濕度采集程序
首先清除收到數據,接著讀取一次開始信號,這是由傳感器數據用戶主機(MCU)發送的。DHT21由低功耗模式轉換到高速模式,主機開始信號結束后,DHT21送出40bit的數據,發送響應信號,并觸發一次信號采集。從機的響應信號是一個80us左右的低電平。溫濕度數據每隔2秒由主機讀取一次,經過轉換,通過LCD1602液晶屏顯示。
4 指標測試
硬件焊接完成后要進行指標測試,檢查錯誤,通過檢查,手工焊接后接入電源,后用萬用表檢查各個芯片管腳電壓是否正常,再判斷短路現象,進而修改完成。每個模塊都要進行程序調試,先將各個子程序調好,檢查子程序運行結果是否符合設計預期,最后逐步將子程序連接起來總調,連接要注意各個模塊的參數傳遞是否正確,特別要注意子程序的現場保護和恢復。
5 結束語
本設計利用單片機實現了溫、濕度與萬年歷的共同顯示。并且可以校準時間,查看陰歷日期,設置鬧鐘等功能。實現了萬年歷與溫、濕度的顯示,有很好的實用性。此設計還可以更進一步完善,如通過按鈕設置溫、濕度上下限報警,進而擴展外圍電路比如控制空調、加濕器等自動工作。
參考文獻
[1]王為青.單片機KeilcX51應用開發技術[M].北京:人民郵電出版社,2005:10-16.
[2]謝維成.單片機原理及應用c51程序設計[M].北京:清華大學出版社,2010:107-112.
[3]張俊謨.單片機中級教程[M].北京:北京航空航天大學出版社,2006:32-35.
[4]孫雪梅.實時時鐘芯片在單片機系統中的應用[J].沈陽教育學報,2005,14(2):24-30.