嚴(yán)敏
摘 要: 利用溫度傳感器DS18B20,以AT89C51為主控制器設(shè)計了電子溫度計,并在Proteus仿真平臺中進行系統(tǒng)硬件設(shè)計。在Medwin3.0開發(fā)環(huán)境中采用C語言進行系統(tǒng)程序設(shè)計,調(diào)試直至成功。再使用全國技能大賽單片機項目的指定設(shè)備亞龍YL-236構(gòu)建電子溫度計,進行實際驗證。結(jié)果表明,與傳統(tǒng)測溫方法相比,基于DS18B20的電子溫度計具有電路簡單、測量精度高、系統(tǒng)穩(wěn)定、抗干擾能力強等優(yōu)點。
關(guān)鍵詞: DS18B20; 單片機; LED數(shù)碼管; Proteus
中圖分類號: TP 212.11 文獻標(biāo)志碼: A 文章編號: 1671-2153(2016)03-0083-03
0 引 言
在人們的日常生活中,溫度的測量和顯示隨處可見,如:冰箱、空調(diào)、熱水器等等,同時在工農(nóng)業(yè)的許多領(lǐng)域也得到廣泛的應(yīng)用[1-3]。傳統(tǒng)的測溫方法一般采用的是熱敏電阻,由于輸出的是模擬信號且信號微弱,因此需要先增益放大,再進行A/D轉(zhuǎn)換,電路比較復(fù)雜,測量精度不高、抗干擾能力弱[4-5]。本文利用溫度傳感器DS18B20,以AT89C51為主控制器設(shè)計了電子溫度計,在Proteus仿真平臺進行系統(tǒng)硬件設(shè)計。在Medwin3.0開發(fā)環(huán)境中采用C語言進行系統(tǒng)程序設(shè)計,調(diào)試直至成功,再使用全國技能大賽單片機項目的指定設(shè)備亞龍YL-236構(gòu)建電子溫度計,進行實際驗證。
1 硬件設(shè)計
1.1 設(shè)計總體結(jié)構(gòu)
本設(shè)計是以AT89C51為核心控制,采用DS18B20數(shù)字溫度傳感器進行溫度的測量。DS18B20輸出的是數(shù)字信號,單片機的任務(wù)是讀取數(shù)字溫度信號,再進行數(shù)值變換和量程變換后,送LED數(shù)碼管動態(tài)掃描顯示,當(dāng)溫度超出設(shè)定溫度范圍時,LED燈點亮并發(fā)出報警。系統(tǒng)電路如圖1所示。
1.2 DS18B20溫度采集模塊
DS18B20是Dallas半導(dǎo)體公司生產(chǎn)的數(shù)字化溫度傳感器,具有抗干擾性高、價格便宜、體積小、精度高、布線簡單等特點,它采用一線總線方式,即一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸。DS18B20測量溫度范圍為-55~+125 ℃,測量分辨率為0.0625 ℃。用戶可以在程序中設(shè)定9~12位的分辨率和報警溫度,它們存儲在EEPROM中,掉電也不丟失。在電路設(shè)計時,將引腳VDD接5V電源,引腳GND接電源地,引腳DQ接4.7 kΩ的上拉電阻到單片機的I/O口即可。
2 軟件設(shè)計
軟件程序主要完成溫度的讀取、轉(zhuǎn)換及顯示功能,采用模塊化設(shè)計思路,包括系統(tǒng)初始化程序、LED數(shù)碼管顯示子程序、中斷服務(wù)子程序、延時子程序、溫度測量子程序等。程序流程如圖2所示。
2.1 DS18B20溫度測量子程序設(shè)計
由于DS18B20采用一線總線方式,因此,必須有嚴(yán)格的初始化時序、讀時序、寫時序,才能確保溫度信息傳輸?shù)臏?zhǔn)確性和完整性。測量溫度時,單片機先初始化DS18B20,單片機作為主設(shè)備,DS18B20作為從設(shè)備。首先由單片機發(fā)出復(fù)位脈沖,即不低于480 μs的低電平,然后釋放總線做好接收準(zhǔn)備,DS18B20檢測到總線的上升沿,等待15~60 μs,發(fā)出60~240 μs的應(yīng)答脈沖,通知單片機已經(jīng)接在總線上,如圖3所示。接著,單片機對DS18B20進行ROM操作命令和RAM操作命令,得到RAM中的2字節(jié)16位的溫度數(shù)據(jù)(低位在前,高位在后),再進行數(shù)值變換和量程變換,最終得到實際溫度。這16位的溫度數(shù)據(jù)中前5位是符號位,當(dāng)為0時,表示測得的溫度高于零度,這時,16位溫度數(shù)據(jù)直接乘以0.0625得到實際溫度;當(dāng)為1時,則表示溫度低于零度,須先將其取反加1再乘以0.0625。如:+25.0625 ℃的數(shù)字輸出是0191H,-25.0625℃的數(shù)字輸出是FE6FH。其部分代碼設(shè)計如下所示:
2.2 LED數(shù)碼管顯示子程序設(shè)計
在編程時,LED數(shù)碼管要顯示哪個數(shù)字或字符,只須寫入相應(yīng)地字段碼,利用循環(huán)掃描的方式,分時輪流選通各個LED數(shù)碼管,當(dāng)掃描速度達到一定程度時,由于人眼的視覺暫留效應(yīng)就分辨不出來了,感覺是所有LED數(shù)碼管同時點亮。其部分代碼設(shè)計如下所示:
3 仿真實驗
硬件電路接好后,啟動MedWin3.0單片機集成開發(fā)環(huán)境,采用C51語言編寫系統(tǒng)程序,編譯并排除錯誤,直至無誤,生產(chǎn).hex十六進制文件,加載到單片機芯片中,系統(tǒng)的仿真結(jié)果如圖4所示。由圖4可以看出,測得溫度為零上18.2 ℃。圖4中,數(shù)碼管第一位為符號位(零上溫度不顯示,零下溫度顯示-),第二、三、四位顯示測量溫度值,第五位顯示小數(shù)值,第六位顯示C(攝氏)。
再使用亞龍YL-236設(shè)備,溫度傳感器模塊的輸出(OUT)口接單片機的P3.0,LED數(shù)碼管的D0~D7,CS1,CS2,WR分別接單片機的P0,P2.7,P2.6,P3.6口,這里L(fēng)ED數(shù)碼管的顯示采用數(shù)據(jù)總線方式(圖略),結(jié)果數(shù)碼管同樣顯示18.2 ℃。
4 結(jié)束語
從以上仿真和實驗結(jié)果可以看出:以單片機AT89C51作為控制器,利用DS18B20數(shù)字傳感器測量溫度,可以實現(xiàn)-55~+125 ℃的測量,與傳統(tǒng)測溫方法相比,基于DS18B20的電子溫度計因電路設(shè)計簡單、測量精度高、成本低廉、系統(tǒng)穩(wěn)定、抗干擾能力強等優(yōu)點廣泛應(yīng)用于工農(nóng)業(yè)和日常生活中。
參考文獻:
[1] 盧進軍. 基于AT89C51 的數(shù)據(jù)采集系統(tǒng)設(shè)計[J]. 河南科學(xué),2014(8):74-77.
[2] 王云飛. DS18B20溫度傳感器的應(yīng)用設(shè)計 [J]. 電子世界,2014(12):255.
[3] 宋全,謝頌華,王超,等. 基于單片機和DS18B20的溫度采集和分析系統(tǒng)[J]. 電子科技,2015(9):100-103.
[4] 國慶鋒. 基于單片機溫度采集系統(tǒng)的開發(fā)與應(yīng)用[J]. 黑龍江科技信息,2015(31):36.
[5] 石建平. 基于PROTEUS的單片機溫度采集系統(tǒng)設(shè)計與仿真[J]. 電子測試 ,2013(21):70-72.
Abstract: This paper use the temperature sensor DS18B20 to design the electronic thermometer with the AT89C51 as the controller. The hardware design of the system is carried out in the Proteus simulation platform. In the Medwin3.0 development environment using C language system program design, debug until successful. Then use the national skills competition SCM project specified equipment of YL-236 to verify. The electronic thermometer based on DS18B20 has such advantages as simple circuit、high measurement accuracy、system stability、strong anti?鄄interference ability, compared with the traditional method of measuring temperature.
Keywords: DS18B20; single?鄄chip microcomputer; LED digital tube; Proteus
(責(zé)任編輯:徐興華)