基于STC89C52單片機的溫度檢測系統(tǒng)設計
摘要:為了檢測現(xiàn)場溫度,并直觀反映其變化趨勢,設計了基于STC89C52單片機的溫度檢測系統(tǒng)。利用數(shù)字溫度傳感器DS18B20采集溫度信號,該信號送入STC89C52單片機處理,后由液晶顯示器LCD12864(ST7920)顯示溫度值,并繪制出溫度變化曲線。實測結(jié)果表明,系統(tǒng)可靠性、測試精度及溫度趨勢曲線繪制達到設計要求。
關(guān)鍵詞:STC89C52單片機;DS18B20;LCD12864(ST7920);溫度檢測系統(tǒng)
0 引言
在某些檢測領(lǐng)域?qū)⒈粶y溫度數(shù)字化顯示還不足以完全反應其變化過程和變化規(guī)律,而繪制出趨勢曲線是有效方法之一。其中一種解決方案是將單片機作為下位機采樣現(xiàn)場溫度,將其上傳給PC機繪制曲線。有鑒于點陣型圖形液晶顯示器成本逐年降低、顯示容量越來越大、工耗越來越小、而且可以方便地與單片機接口,本文設計了一種溫度檢測系統(tǒng)。利用DS18B20采集溫度,LCD12864(ST7920)液晶顯示器直接與STC8 9C52單片機接口,在LCD12864(ST7920)上顯示被測溫度和溫度曲線。
1 系統(tǒng)組成
系統(tǒng)主要由單片機STC89C52,溫度傳感器DS18B20,點陣型液晶顯示器LCD12864(ST7920),鍵盤電路和報警電路組成(如圖1所示)。
STC89C52用于實現(xiàn)算法、是整個系統(tǒng)的主控核心;LCD12864用于顯示實測溫度、溫度曲線、時間和日期等參數(shù);DS18B20用于溫度采集;鍵盤電路用于設定相關(guān)參數(shù)(上下限溫度值、時間);報警電路用于溫度超限報警。
2 主要硬件設計
2. 1 STC89C52單片機系統(tǒng)
STC89C52單片機系統(tǒng)由單片機,時鐘電路,復位電路組成。單片機系統(tǒng)如圖2所示。
STC89C52單片機具有抗干擾性能強、速度快、功耗低和指令代碼完全兼容8051單片機等特點。其主要參數(shù)為:時鐘頻率最高可達80MHz;內(nèi)置8 KB的FLASH ROM,512 B的RAM和2 KB的E2PROM;3個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu)。
STC89C52的P0口作為普通I/O口使用,與12864液晶顯示器DB0~DB7數(shù)據(jù)口相連,根據(jù)P0口硬件特點在其外部必須接上上拉電阻。
時鐘電路采用內(nèi)部時鐘方式,為單片機系統(tǒng)提供時鐘信號。
復位電路采用上電自動復位和按鍵復位的方式,只要保證加到RST引腳的高電平持續(xù)時間大于2個機器周期就能使單片機正常復位。
2.2 DS18B20數(shù)字測溫電路
測溫電路的傳感器選用DS18B20數(shù)字式溫度傳感器,它具有特點為:可通過編程的方式實現(xiàn)9~12位的數(shù)字溫度直讀;測溫范圍為-55~125℃,最高12位分辨率,精度可達±0.5℃;可設置超限溫度報警,并有搜索命令識別報警條件;單總線接口,僅需一條輸入輸出線(DQ)就能與單片機(P2.0)進行通信。DS18B20數(shù)字測溫電路如圖3所示。
2.3 LCD12864顯示電路
顯示電路是人機交互的核心,本系統(tǒng)需同時顯示實測溫度、上限溫度、溫度曲線,時間和日期,信息量大,故選擇點降圖形液晶顯示器LCD12864(ST7920)。
LCD12864(ST7920)具有特性為:4位/8位并行、2線或3線串行等多種接口方式;顯示分辨率為128x64,內(nèi)置8 192個16x16點漢字,和128個16×8點ASCII字符集;接口方式靈活、簡單,可方便的構(gòu)成中英文式人機交互圖形界面。LCD12864與單片機接口電路如圖4所示。
LCD12864(ST7920)由DDRAM(顯示數(shù)據(jù)RAM,CGROM(字型產(chǎn)生ROM)和CGRAM(自定義字型產(chǎn)生RAM)和GDRAM(繪圖RAM)等組成,實現(xiàn)顯示字符和圖形的功能。
DDRAM模塊提供64×2個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當寫入顯示數(shù)據(jù)RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示HCGROM字型(半角)、CGRAM字型及CGROM的中文字型3種字型。液晶顯示器屏幕坐標(AC地址)與DDRAM地址的對應關(guān)系如表1所示。
CGRAM模塊提供4組16×16點的自定義圖像空間,可以將內(nèi)部字型沒有提供的圖像字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。
GDRAM提供64×32個字節(jié)的空間,實際可控制128×64點陣的二維繪圖緩沖空間。GDRAM的二維地址與液晶屏幕坐標的對應關(guān)系如圖5所示。
2.4 其他電路
2.4.1 報警電路
報警電路由PNP三極管(9012),蜂鳴器及單片機的控制引腳(P21)組成。當溫度超限,P21引腳輸出一定頻率的信號,觸發(fā)蜂鳴器工作從而實現(xiàn)報警。報警電路如圖6所示。
2.4.2 鍵盤電路
鍵盤電路采用中斷和查詢相結(jié)合的方式設定溫度和調(diào)整時間。系統(tǒng)由4個按鍵組成,分別對應溫度/時間設定的功能選擇,數(shù)字增加和減少的調(diào)節(jié)。當有鍵按下時,負跳變引起INT1中斷,再查詢具體按鍵,并執(zhí)行相應功能。這種結(jié)構(gòu)既擴充了外部中斷源,減少了CPU的工作負擔,又能對按鍵進行實時處理。鍵盤電路如圖7所示。
2.4.3 電源電路
LM7805三端集成穩(wěn)壓器和濾波電容組成電源電路,為整個系統(tǒng)提供穩(wěn)定的工作電壓。電源電路如圖8所示。
3 軟件設計
主程序流程如圖9所示。
3.1 液晶顯示器函數(shù)
液晶顯示器的讀/寫數(shù)據(jù)和數(shù)字/字符、溫度顯示、曲線繪制和時鐘顯示等功能由驅(qū)動函數(shù)和界面顯示函數(shù)完成。
驅(qū)動函數(shù)包括:
界面顯示函數(shù)包括:
3.2 溫度采集函數(shù)
啟動DS18B20溫度轉(zhuǎn)換和數(shù)據(jù)傳輸必須嚴格按照其時序進行,溫度采集函數(shù)包括:
3.3 主函數(shù)
主函數(shù)包括初始化液晶顯示器,定時/計數(shù)器等模塊,而后調(diào)用溫度采集,界面顯示等函數(shù)。
每50 ms采樣一次(即每50 ms調(diào)用上述溫度采集函數(shù)),共采樣6次,利用去極值平均值濾波法得到實測溫度(采樣的6個數(shù)據(jù)排序后去掉最大值和最小值再平均),顯示實測溫度,繪制曲線,并判斷是否超限。
4 實驗
系統(tǒng)實際運行結(jié)果如圖10~圖13所示。
左邊顯示包括:
(1)“12/06/21”為陽歷日期,格式為年/月/日。
(2)“16:59:09”為數(shù)字時鐘,格式為小時:分鐘:秒。
(3)“S:30℃”代表設定的上限溫度;“<”,“=”,“>”代表上限溫度與實測溫度的大小關(guān)系。
(4)“46.84℃”,“26.35℃”,“31.23℃”,“40.99℃”等代表實測溫度。
圖中右邊為溫度曲線和上限溫度線。
時間和溫度上限值可通過程序或鍵盤設定。
實測溫度的誤差范圍(單位:℃)在(-0.5~0.5)/100內(nèi),繪制的溫度曲線能夠直觀地反映其變化情況。
5 結(jié)論
利用點陣型液晶顯示器和單片機直接接口顯示被測溫度和繪制曲線,可以更直觀地反映其變化趨勢,為后續(xù)研究其變化規(guī)律奠定基礎(chǔ)。實際運行表明,系統(tǒng)測試精度、曲線繪制、超限報警等功能達到設計要求,整個電路簡單實用,穩(wěn)定可靠。