華僑大學信息學院 周 鵬
基于STC89C52單片機的多功能數字測溫儀設計
華僑大學信息學院 周 鵬
設計了由STC89C52單片機,DS1820溫度傳感器,LCD12864(ST7920)液晶顯示器組成的多功能數字測溫儀,詳細介紹了在LCD12864上顯示溫度,時間,日期等功能的原理和算法。
STC89C52;DS1820;LCD12864
要求設計一款基于單片機的多功能數字測溫儀,主要功能包括數字溫度顯示、設置溫度上下限值,并能超限報警;時鐘顯示(數字和指針),日期顯示。
系統主要由STC89C52單片機,DS18B20溫度傳感器,鍵盤電路,LCD12864顯示器和報警電路組成(如圖1所示)。
STC89C52單片機用于實現算法、是整個系統的主控核心;LCD12864用于顯示溫度、時間和日期等參數;DS18B20數字溫度傳感器用于溫度采集;鍵盤電路用于設定相關參數(上下限溫度值、時間);報警電路用于溫度超限提示。
STC89C52RC單片機系統(如圖2)由單片機,時鐘電路,復位電路,電源電路組成。
STC89C52單片機具有抗干擾性能強、速度快、功耗低和指令代碼完全兼容8051單片機等特點。其主要參數為[1]:時鐘頻率最高可達80MHz;內置8K字節的Flash-ROM,512字節的RAM和2K字節的E2PROM;3個16位定時器/計數器,一個6向量2級中斷結構。
STC89C52的P0口作為普通I/O口使用,與12864液晶顯示器DB0~DB7數據口相連,根據P0口硬件特點在其外部須接上上拉電阻。
時鐘電路采用內部時鐘方式,為單片機系統提供時鐘信號。
測溫電路的傳感器選用DS18B20數字式溫度傳感器(如圖3),它具有以下特點[3]:(1)可通過編程的方式實現9-12位的數字溫度直讀。(2)測溫范圍為-55~+125,最高12位分辨率,精度可達± 0 .5。(3)可設置超限溫度報警,并有搜索命令識別報警條件。(4)單總線接口,僅需一條輸入輸出線(DQ)就能與單片機(P2.0)進行通信。
系統需同時顯示實測溫度、數字式和指針式時間,顯示信息量大,故選擇LCD12864(ST7920)點陣圖形液晶顯示屏(與單片機接口如圖4,其主要引腳功能表如表1)。
LCD12864(ST7920)具有以下特性[4]:(1)4位/8位并行、2線或3線串行等多種接口方式。(2)顯示分辨率為128×64,內置8192個16*16點漢字,和128個16*8點ASCII字符集。(3)接口方式靈活、簡單,可方便的構成中英文式人機交互圖形界面。

圖1 系統組成框圖

圖2 STC89C52單片機系統
LCD12864(ST7920)由DDRAM(顯示數據RAM),CGROM(字型產生ROM)和CGRAM(自定義字型產生RAM)和GDRAM(繪圖RAM)等組成,實現顯示字符和圖形的功能。
DDRAM模塊提供64×2個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當寫入顯示數據RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示半角英數字型(16*8)、CGRAM字型及CGROM的中文字型三種字型。液晶顯示器屏幕坐標(AC地址)與DDRAM地址的對應關系如表2。
CGRAM模塊提供四組16×16點的自定義圖象空間,可以將內部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。
GDRAM提供64*32個字節的空間,實際可控制128*64點陣的二維繪圖緩沖空間。GDRAM的二維地址與液晶顯示器屏幕坐標關系如圖5所示。
3.4.1 報警電路
在小說語言中,“士”字出現11次,值得注意的是這樣幾個特殊用法:太子丹以“勇士”指稱所奉養的門客;田光褒揚太子有“仁愛之風”故以“天下之士”而譽之;荊軻與太子說起“烈士之節”,又在易水送別時唱起“壯士一去兮不復還”。作品中,所謂“勇士”“天下之士”“烈士”“壯士”,均非一般的士,更非普通門客,而是那種具有為信義和公理而把生命置之度外的精神氣概的特殊的士。這些特殊的士,除了太子丹、田光、荊軻之外,還應包括“當車前刎頸以送”的夏扶、為除“積忿之怒”而自剄的樊于期。若以“士志于道”來衡定,概之以“志士”可也。
報警電路由PNP三極管(9012),蜂鳴器及單片機的控制引腳(P21)組成。當溫度超限,P21引腳輸出一定頻率的信號,觸發蜂鳴器工作從而實現報警。報警電路如圖5.1。
3.4.2 鍵盤電路
鍵盤電路采用中斷和查詢相結合的方式設定溫度和調整時間。系統由四個按鍵組成,分別對應溫度/時間設定的功能選擇,數字增加和減少的調節。當有鍵按下時,負跳變引起外部中斷1中斷后,再查詢具體按鍵,并執行相應功能。這種結構既擴充了外部中斷源,減少了CPU的工作負擔,又能對按鍵進行實時處理。鍵盤電路如圖5.2。

圖3 DS18B20數字測溫電路

圖4 LCD12864顯示電路

圖5 DS18B20數字測溫電路

圖5.1 報警電路
LM7805三端集成穩壓器和濾波電容組成電源電路,為整個系統提供穩定的工作電壓。電源電路如圖5.3。
主程序流程如圖6所示。
液晶顯示器的驅動函數和界面顯示函數實現讀/寫數據和數字/字符、指針式時鐘顯示等功能。
驅動函數包括:


圖5.2 鍵盤電路

圖5.3 穩壓電路

圖6 系統流程圖

圖7 系統實際運行圖片

啟動DS18B20溫度轉換和數據傳輸必須嚴格按照其時序進行,溫度采集函數包括:

系統實際運行結果如圖7。

表1 LCD12864主要引腳功能表

表2 LCD12864主要引腳功能表
圖片中,陽歷日期的格式為年/月/日。
數字時鐘的格式為小時:分鐘:秒。

指針時鐘的圓心以GDRAM模式坐標(0,0)為起點,坐標是(96,32),時鐘半徑為31;秒針,分針,時針以實際時鐘方式運行。
時間和溫度上限值可通過程序/鍵盤設定。

經過實際運行,系統的測溫、時鐘顯示、超顯報警等功能達到設計要求,整個電路簡單實用,穩定可靠。
[1]http://www.mcu-memory.com/index.htm.
[2]張毅剛,彭喜元.單片機原理與應用設計[M].北京:電子工業出版社,2010.
[3]http://cn.alldatasheet.com/view.jsp?Searchword=DS18B20.
[4]http://www.ceet.hbnu.edu.cn/bbs/viewthread.php?tid=7679.
周鵬(1972—),男,重慶人,華僑大學信息學院電氣系講師,主要研究方向:智能測控系統。