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