專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

單片機DS18B20實時溫度監(jiān)控系統(tǒng)軟硬件設計

作者:mcu110   來源:51hei   點擊數(shù):  更新時間:2007年08月05日   【字體:


    下面讓我們共同來學習一個基于單片機和DS18B20溫度傳感器的實時溫度監(jiān)控系統(tǒng),這是一個溫度監(jiān)控綜合實驗,需要全套餐客戶的相關配件配合才能完成。在這個實驗中,大家可以一起來學習,如何綜合開發(fā)出實用的單片機應用系統(tǒng)。其實,這個實驗中并沒有涉及到高深的新技術,我們也就是把光盤實驗例程中幾個簡單技術綜合應用起來,開發(fā)了這個實驗程序, 美國DALLAS公司生產(chǎn)的DS18B20單總線數(shù)字溫度傳感器,具有微型化、低功耗、高性能、抗干擾能力強、可組網(wǎng)等優(yōu)點,DS18B20的測溫分辨率較高,為12位,即溫度分辨率可以達到0.0625 ℃;在0 ~85 ℃溫度范圍內(nèi)誤差誤差僅0.5 ℃。DS18B20可直接將溫度轉(zhuǎn)化成串行數(shù)字信號,因此特別適合和單片機配合使用,直接讀取溫度數(shù)據(jù)。目前DS18B20數(shù)字溫度傳感器已經(jīng)廣泛應用于恒溫室、糧庫、計算機機房溫度監(jiān)控及其他各種溫度測控系統(tǒng)中。

首先讓我們來看看實時溫度監(jiān)控系統(tǒng)軟件運行的界面及S51增強型單片機實驗板的實際效果。。。

實時溫度監(jiān)控系統(tǒng)軟件運行的界面

 

 
圖 1    
實時溫度監(jiān)控系統(tǒng)軟件運行的界面
 
注:
電腦軟件上實時顯示監(jiān)測到的溫度、傳感器序ID、記錄實時溫度曲線、上限高溫報警、下限低溫報警等信息
 

S51增強型單片機實驗板實時采集溫度

 

 
圖 2
 
注: S51增強型實驗板采集實時溫度,顯示在實驗板上液晶模塊上,同時通過實驗板的RS-232串口通信將監(jiān)控數(shù)據(jù)傳輸?shù)诫娔X上,電腦上的實時監(jiān)控軟件接收后,進一步處理,繪制溫度曲線,判斷報警等。。。
1、液晶模塊第一行顯示“ DS18B20 OK!”, 表示溫度傳感器DS18B20正常
2、液晶模塊第二行顯示“ TEMP: 28.6250 ℃ ”,表示測到的實時溫度為 28.6250 ℃
 
   

    從上面兩幅圖中可以看到,我們實現(xiàn)主要目標如下:

    1、在S51增強型單片機實驗板上,AT89S51單片機程序檢測DS18B20溫度傳感器狀態(tài),如果DS18B20不存在或損壞,則發(fā)出相應的蜂鳴報警,如果存在,則讀取DS18B20監(jiān)測的實時溫度,顯示在實驗板的1602液晶模塊上,同時把檢測到的溫度通過RS-232串口通信發(fā)送到電腦上,供實時監(jiān)控軟件進一步處理。同時,單片機接受電腦發(fā)送過來的繼電器控制命令,

    
    2、在計算機上,VB6.0編寫的實時溫度監(jiān)控系統(tǒng)軟件通過RS-232串口接收S51增強型單片機實驗板發(fā)送過來的實時數(shù)據(jù),經(jīng)過運算處理后將DS18B20的傳感器ID、實時溫度顯示在軟件界面上;同時,繪制出溫度變化曲線,根據(jù)我們設定的上限報警溫度和下線報警溫度,判斷當前溫度有無高溫報警或低溫報警,如果溫度超限,則給出相應的報警信息。

  3、單片機接收計算機對單片機的控制指令,當計算機發(fā)送“繼電器ON指令”時,則單片機驅(qū)動實驗板上的繼電器吸合;相反,如果計算機發(fā)送“繼電器OFF指令”時,單片機驅(qū)動繼電器釋放,我們可以學習掌握計算機智能控制的原理,只要掌握了這種方法,我們要在電腦上輕輕點擊鼠標就可以控制家里的電氣開關了就不難了(操作方法,點擊軟件的“繼電器”按鈕,實驗板的繼電器吸合,再次點擊按鈕,繼電器釋放)。

    4、實時溫度監(jiān)控軟件檢測用戶的繼電器控制命令,如果點擊軟件上“繼電器”控制按鈕,則發(fā)出繼電器控制指令給單片機,控制實驗板上的繼電器產(chǎn)生相應動作。

    【通信實驗程序的開發(fā)】

    該系統(tǒng)程序由單片機實時監(jiān)控程序程序和電腦實時監(jiān)控程序兩部分軟件構成。在微機測控系統(tǒng)中,一般稱計算機為上位機、而前端采集控制的單片機系統(tǒng)稱為下位機。上位機主要負責所有測控數(shù)據(jù)的綜合管理與下位機的調(diào)度控制,而下位機由單片機構成前端的測控系統(tǒng),進行原始數(shù)據(jù)的采集及設備的控制,將采集到的原始數(shù)據(jù)發(fā)送給上位機處理,下位機受上位機的管理控制。

    一、單片機程序開發(fā)

    51單片機有一個全雙工的串行通信口,非常適合與電腦進行通信,51單片機的串口開發(fā)在各種教科書上都有詳細的介紹,我們這里不在重復,大家可以參考一下書籍。單片機程序功能主要如下:初始化串口、打開串口中斷、檢測DS18B20溫度傳感器狀態(tài)、讀取實時溫度、將實時溫度顯示在1602液晶模塊上、將監(jiān)控數(shù)據(jù)發(fā)送到電腦RS-232串口、接收繼電器控制命令、控制繼電器動作等。

    單片機通信參考程序如下:

        ORG    0000H
        AJMP   START         ;轉(zhuǎn)到初始化程序

        ORG    0023H
        AJMP   PGUART        ;轉(zhuǎn)到串行中斷服務子程序

START:  MOV    SP,#60H       ;堆棧指針初始化
        MOV    P0,#0FFH      ;P0端口初始化
        MOV    P1,#0FFH      ;P1端口初始化
        MOV    P2,#0FFH      ;P2端口初始化
        MOV    P3,#0FFH      ;P3端口初始化
        MOV    TMOD,#20H     ;定時器T1工作于模式2,自動重裝載
        MOV    TH1,#0FFH     ;TH1初值為"0FFH",57600bps
        MOV    TL1,#0FFH     ;TL1初值為"0FFH",57600bps
        MOV    PCON,#80H     ;波特率加倍
        MOV    SCON,#50H     ;串行口工作于方式1,允許接收
        SETB   TR1           ;啟動定時器T1
        SETB   ES            ;允許串行口中斷
        SETB   EA            ;開總中斷
MAIN:   LCALL  GETROM         ;讀取DS18B20溫度傳感器的序列號ID
        LCALL  GETTEMP       ;讀取實時溫度
        ......               ;主程序處理其他任務,等待串口中斷
        AJMP MAIN
;-------------------單片機通信參考程序----------------------------------

PGUART: ......               ;串口中斷服務子程序,接收執(zhí)行計算器控制指令
        RETI

        END

    二、RS-232串行通信測試軟件開發(fā)

    計算機RS-232串行通信測試軟件采用VB6.0開發(fā),VisualBasic 6.0(簡稱VB6.0)以其簡單易學,功能強大而倍受廣大計算機開發(fā)人員的青睞,VB6開發(fā)的各種軟件已廣泛地應用于各個領域,VB6提供了多種控件,其中MSCOMM.OCX是用于串行通信的控件,我們可將該控件添加到工具箱(Toolbox)內(nèi),這樣就可以利用該控件進行串行通信程序的設計了。

    下面介紹Mscomm控件的主要屬性和方法:
   1) CommPort:設置或返回串行端口號,VB6的取值范圍為1~16,表示打開或返回通信端口號COM1~COM16
   2) Setting:設置或返回串行端口的波特率、奇偶校驗位、數(shù)據(jù)位數(shù)、停止位。如:Mscomm1.Setting=“9600,N,8,1”
   3) PortOpen:打開或關閉串行端口,格式為:Mscomm1.PortOpen=『True/False』
   4) InBufferSize:設置或返回接收緩沖區(qū)的大小,缺省為1024字節(jié)
   5) InBufferCount:返回接收緩沖區(qū)內(nèi)的等待讀取的字節(jié)個數(shù),可通過設置該屬性為0來清除接收緩沖區(qū)
   6) RThreshold:該屬性為一閥值,當接收緩沖區(qū)內(nèi)字節(jié)個數(shù)達到或超過該值后就產(chǎn)生OnComm事件
   7) InputLen:設置或返回接收緩沖區(qū)內(nèi)用Input讀入的個數(shù)。若取0,則Input將讀取整個緩沖區(qū)的所有內(nèi)容
   8) Input:該屬性表示從接收緩沖區(qū)InputLen個字符
   9) OutBufferSize:設置或返回發(fā)送緩沖區(qū)大小,缺省為512字節(jié)
   10) OutBufferCounter:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來清空緩沖區(qū)
   11) Output:向發(fā)送緩沖區(qū)傳送一字符串,即向串口發(fā)送數(shù)據(jù)

    VB6.0為可視化編程開發(fā)軟件,開發(fā)程序簡單易學,VB程序開發(fā)主要分為兩步:第一步、使用VB控件設計出軟件界面,第二步、給各種控件編寫相應的執(zhí)行程序代碼,代碼編寫完成后可以運行查看結果了。

第一步:開發(fā)程序界面

    打開VB6.0 -> 新建“標準 EXE”建立一個新的工程。在工程窗口Form1中添加我們要使用的各種按鈕和控件,其中一個圖標如電話一樣的控件就是MSCOMM串行通信控件了,該控件在界面設計時候可見,在程序運行時候不可見。最后,放置好了各種控件后,程序的界面界面就出來了,是不是很簡單呀!如下圖4所示:

實時溫度監(jiān)控系統(tǒng)軟件界面開發(fā)

 

 
圖 4
 

第二步:VB軟件編寫

    當軟件的界面設計完成后,我們就可以給程序添加代碼了,在程序中實現(xiàn)的主要功能如下:RS-232端口初始化、接收處理S51增強型單片機實驗板發(fā)送過來的實時數(shù)據(jù)、將實時溫度數(shù)據(jù)顯示在軟件界面中,根據(jù)設定的上下限報警溫度判斷有無超限報警、繪制實時溫度變化曲線、接收用戶的繼電器控制指令、發(fā)送繼電器控制命令。。。如下圖5所示:

實時監(jiān)控系統(tǒng)軟件程序代碼編寫

 

 
圖 5
 


    【實時溫度監(jiān)控實驗操作】

    完成了單片機通信程序及PC上我VB程序開發(fā)后,我們編譯工程,得到單片機芯片燒寫的HEX格式目標文件lcdtemp.hex和串口測試程序可以執(zhí)行文件Temp Ver1.0.exe,然后我們就可以拿出S51增強型單片機實驗板,馬上進行實時溫度監(jiān)控實驗實驗了。

    1、使用ISP編程器將目標文件lcdtemp.hex燒寫到AT89S51單片機中(見下圖6)

圖6: ISP編程器燒寫目標文件rs232test.hex

    2、如前面的圖2所示:我們將燒寫好了通信程序的AT89S51芯片鎖緊到S51單片機實驗板上,然后把1602字符型液晶模塊插到實驗板的1602接口上,用RS232串口通信電纜和USB電纜將實驗板和電腦連接好,按壓實驗板的電源開關,開啟電源,此時實驗板上的電源指示燈亮起來,1602液晶模塊上會顯示出DS18B20傳感器狀態(tài)和實時溫度,同時將實時數(shù)據(jù)發(fā)送到RS-232串行通信接口,我們可以看到實驗板上的“通信”指示燈在閃爍,表示正在發(fā)送監(jiān)控數(shù)據(jù)。

    3、雙擊我們編寫的實時溫度監(jiān)控PC軟件Temp Ver1.0.exe,啟動實時溫度監(jiān)控系統(tǒng)軟件,在軟件上正確設置好和實驗板連接的通信端口。從實驗板發(fā)送過來的溫度數(shù)據(jù)就會實時顯示在軟件的左上角,同時在軟件的右邊窗口中繪制出溫度變化曲線,比如:我們用手去抓住溫度探頭,DS18B20溫度傳感器受我們的體溫加熱后,溫度將逐漸上升,在溫度曲線中將詳細記錄溫度變化的過程,比起只在實驗板上看到一個溫度數(shù)據(jù)就更加直觀了,在電腦軟件中顯示的實時溫度和S51增強型實驗板上1602液晶模塊上顯示的溫度是始終保持一致的。然后,我們可以點擊實時溫度監(jiān)控軟件的“繼電器”按鈕,實驗板上的單片機接收到電腦的控制指令后,就會控制繼電器產(chǎn)生相應的開關動作,實現(xiàn)電腦軟件對實驗板上繼電器的控制。


    【實驗總結】

    通過該溫度監(jiān)控實驗,我們可以發(fā)現(xiàn):基于DS18B20數(shù)字溫度傳感器構成的實時監(jiān)控系統(tǒng)確實具有精度高、抗干擾能力強、電路簡單等諸多優(yōu)點,溫度傳感器得到電纜長度達到幾十米都可以正常讀取溫度數(shù)據(jù),并且已經(jīng)在站長開發(fā)的機房安全監(jiān)控系統(tǒng)中得到了實際考驗,那可是要365天從不間斷地對機房及相關設備提供實時溫度監(jiān)控的哦。

    相比之下,傳統(tǒng)的溫度檢測系統(tǒng)采用熱敏電阻等溫度敏感元件,熱敏電阻成本低,但需要后續(xù)信號調(diào)理、AD轉(zhuǎn)換處理電路才能將溫度信號轉(zhuǎn)換成數(shù)字信號,不但電路復雜,而且熱敏電阻的可靠性相對較差,測量溫度的精度差,很難保證熱敏電阻的一致性和線性,在應用中需要很好的解決引線誤差補償問題、共模干擾問題和放大電路零點漂移誤差等技術問題。

    因此,如果你開發(fā)的系統(tǒng)對溫度監(jiān)控精度要求不是非常高,而且測溫的范圍DS18B20的-55~+125 ℃之間的話,那么采用DS18B20是一個不錯的選擇,通過軟件的插值運算,其實DS18B20的測溫精度還可以進一步提高的,具體的實現(xiàn)方法大家可以參考DALLAS公司相關技術資料。當然,如果你有條件的話,也可以預先對每一個DS18B20進行一次校驗,在標準恒溫箱中測量并記錄下每個傳感器的測溫誤差,在實際應用中,我們就可以根據(jù)每個傳感器的實際校準對讀出的實時溫度進行適當?shù)恼`差糾正,這樣也不失為提高DS18B20測溫精度的一個好辦法?上У氖,并非大家都有這種高精度的恒溫箱來校驗傳感器,如果你的參考溫度不準確,那么校準將會適得其反。

    好了,這個實驗到此結束了,希望大家通過對這個軟件的學習,掌握單片機實時溫度監(jiān)控的開發(fā)、串口通信程序的開發(fā)及計算機串口實時控制開發(fā)原理及PC監(jiān)控軟件的開發(fā),為開發(fā)其他功能更加完善的單片機綜合應用系統(tǒng)打好基礎。

    歡迎本站的單片機全套餐客戶下載教程配套的軟件進行測試實驗,給我們提供更多的寶貴意見和建議!再次感謝大家長期對電子驛站的關心與大力支持,我們會不斷開發(fā)出更多的有意義的實驗教程提供給大家學習研究,祝大家學習愉快!

點擊下載實時溫度監(jiān)控系統(tǒng)軟件


注意:
 
1、
本實時溫度監(jiān)控系統(tǒng)軟件為配合本站S51增強型實驗板學習而開發(fā),僅適用于和本站產(chǎn)品配套學習使用,并且需要本站單片機學習全套餐客戶的相關實驗器材配合才能完成實驗。
2、
實驗源程序代碼隨產(chǎn)品提供給本站全套餐客戶學習研究使用,本站保留對本實驗例程的所有權利,未經(jīng)授權請勿隨意轉(zhuǎn)載或修改軟件相關版權信息。
關閉窗口

相關文章