周克輝
(衡陽財經工業(yè)職業(yè)技術學院 電子信息系,湖南 衡陽 421002)
近年來單片機系統在工業(yè)測控領域的應用越來越廣泛,它既可以測量電信號,又可以測量溫度、濕度等非電信號,在日常生活及工農業(yè)生產等許多領域,經常要用到溫度的檢測及控制,本文介紹一種采用數字溫度傳感器實現的基于單片機的數字溫度計。
傳統的溫度監(jiān)控系統大多是利用熱敏電阻組成的測溫電路,測溫元件一般用的是熱電偶和熱電阻。而熱電偶和熱電阻測出的一般都是電壓或者電流,經過A/D與D/A轉換后才能實現測溫,需要比較多的外部硬件支持。而且由于熱敏電阻的不穩(wěn)定性,導致測溫易受外界干擾、且精度不高。
本數字溫度計設計采用美國DALLAS半導體公司繼DS1820之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,與傳統的熱敏電阻不同,DS18B20可直接將被測溫度轉換為串行數字信號,測溫范圍為-55~125℃,最高分辨可達0.0625℃,溫度傳感器DS18B20采用三線制與51單片機相連,減少了外部的硬件電路,具有低成本、易使用和精度等特點。
按照系統設計功能的要求,確定本數字溫度計由三個模塊組成:主控制器、測溫電路和顯示電路。數字溫度計總體電路結構框如圖1所示。
圖1 數字溫度計總體電路結構框圖
本數字溫度計電路設計原理圖如圖2所示,控制器采用用單片機AT89C2051,它是由ATMEL公司推出的一種小型單片機,它具有低電壓供電和小體積等特點,成本較低,兩個端口剛好滿足電路系統的設計需要,很適合便攜手持式產品的設計使用??捎脙晒?jié)電池對本溫度計進行供電。
溫度傳感器使用DS18B20,它可直接將被測溫度轉換為串行數字信號,供單片機處理。通過編程,Dsl8B20可以實現9~12位的溫度讀數。信息經過單線接口送入DSl8820,或從Dsl8820送出,因此,從單片機到Dsl8820僅需連接一條信號線和地線。另DS18B20可以采用采用電源供電方式,此時DS18B20的第1腳接地,第2腳作為信號線,第3腳接電源;當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最長為500ms。所以采用一個上拉電阻完成對總線的上拉。
顯示電路采用4位一體的共陽LED數碼管,從P1口輸出段碼,列掃描用P3.0~P3.3口來實現,列驅動用8550三極管。用4位一體的共陽LED數碼管以動態(tài)掃描法實現溫度顯示。
系統程序主要包括主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序和顯示數據刷新子程序等。
圖2 數字溫度計設計電路原理圖
主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量溫度值。溫度測量每1s進行一次。主程序流程圖如圖3所示。
圖3 主程序流程圖
讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時須進行CRC校驗,校驗有錯時不進行溫度數據的改寫。讀出溫度子程序流程圖如圖4所示。
圖4 讀出溫度子程序流程圖
溫度轉換命令子程序主要是發(fā)溫度轉換開始命令。當采用12位分辨率時,轉換時間約為750ms。在本程序設計中,采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如圖5所示。
計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定。
圖5 溫度轉換命令子程序流程
顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高數據顯示位為0時,將符號顯示位移入下一位。顯示數據刷新子程序流程圖如圖6所示。
圖6 顯示數據刷新子程序流程圖
系統的調試包括硬件調試和軟件調試兩個部分。硬件調試比較簡單,首先檢查電路的焊接是否正確,然后可用萬能表測試或通電檢測。軟件調試可以先編寫顯示程序并運行硬件的正確性檢驗,檢查顯示模塊是否正常工作,然后分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序和顯示數據刷新子程序等的編程及調試。
由于DS18B20與單片機采用串行數據傳送,因此,對DS18B20進行讀/寫編程時必須嚴格地嚴格保證讀/寫時序;否則將無法讀取測量結果。本程序采用單片機C語言編寫,用Keil C51編譯器編程調試。
軟件調試到能正確地顯示出當前的溫度值,而且在有溫度變化時,比如用手去接觸溫度傳感器,如果顯示溫度能改變,說明系統設計就基本完成。
[1]李廣弟.單片機基礎[M].北京:北京航空航天大學出版社,2001.
[2]劉亞利.HIRFL-CSR工程中的智能溫度控制系統[J].微計算機信息,2005.
[3]金偉正.單線數字溫度傳感器的原理與應用[J].電子技術應用,2000,(6).
[4]徐敏.基于AT89C51單片機的數字溫度計設計[J].數字技術與應用,2009.