下面讓我們共同來學(xué)習(xí)一個(gè)基于單片機(jī)和DS18B20溫度傳感器的實(shí)時(shí)溫度監(jiān)控系統(tǒng),這是一個(gè)溫度監(jiān)控綜合實(shí)驗(yàn),需要全套餐客戶的相關(guān)配件配合才能完成。在這個(gè)實(shí)驗(yàn)中,大家可以一起來學(xué)習(xí),如何綜合開發(fā)出實(shí)用的單片機(jī)應(yīng)用系統(tǒng)。其實(shí),這個(gè)實(shí)驗(yàn)中并沒有涉及到高深的新技術(shù),我們也就是把光盤實(shí)驗(yàn)例程中幾個(gè)簡單技術(shù)綜合應(yīng)用起來,開發(fā)了這個(gè)實(shí)驗(yàn)程序, 美國DALLAS公司生產(chǎn)的DS18B20單總線數(shù)字溫度傳感器,具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、可組網(wǎng)等優(yōu)點(diǎn),DS18B20的測溫分辨率較高,為12位,即溫度分辨率可以達(dá)到0.0625 ℃;在0 ~85 ℃溫度范圍內(nèi)誤差誤差僅0.5 ℃。DS18B20可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào),因此特別適合和單片機(jī)配合使用,直接讀取溫度數(shù)據(jù)。目前DS18B20數(shù)字溫度傳感器已經(jīng)廣泛應(yīng)用于恒溫室、糧庫、計(jì)算機(jī)機(jī)房溫度監(jiān)控及其他各種溫度測控系統(tǒng)中。首先讓我們來看看實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件運(yùn)行的界面及S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板的實(shí)際效果。。。
實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件運(yùn)行的界面 |
||
![]() |
|
|
注: |
電腦軟件上實(shí)時(shí)顯示監(jiān)測到的溫度、傳感器序ID、記錄實(shí)時(shí)溫度曲線、上限高溫報(bào)警、下限低溫報(bào)警等信息 |
從上面兩幅圖中可以看到,我們實(shí)現(xiàn)主要目標(biāo)如下:
1、在S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板上,AT89S51單片機(jī)程序檢測DS18B20溫度傳感器狀態(tài),如果DS18B20不存在或損壞,則發(fā)出相應(yīng)的蜂鳴報(bào)警,如果存在,則讀取DS18B20監(jiān)測的實(shí)時(shí)溫度,顯示在實(shí)驗(yàn)板的1602液晶模塊上,同時(shí)把檢測到的溫度通過RS-232串口通信發(fā)送到電腦上,供實(shí)時(shí)監(jiān)控軟件進(jìn)一步處理。同時(shí),單片機(jī)接受電腦發(fā)送過來的繼電器控制命令,
2、在計(jì)算機(jī)上,VB6.0編寫的實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件通過RS-232串口接收S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板發(fā)送過來的實(shí)時(shí)數(shù)據(jù),經(jīng)過運(yùn)算處理后將DS18B20的傳感器ID、實(shí)時(shí)溫度顯示在軟件界面上;同時(shí),繪制出溫度變化曲線,根據(jù)我們?cè)O(shè)定的上限報(bào)警溫度和下線報(bào)警溫度,判斷當(dāng)前溫度有無高溫報(bào)警或低溫報(bào)警,如果溫度超限,則給出相應(yīng)的報(bào)警信息。
3、單片機(jī)接收計(jì)算機(jī)對(duì)單片機(jī)的控制指令,當(dāng)計(jì)算機(jī)發(fā)送“繼電器ON指令”時(shí),則單片機(jī)驅(qū)動(dòng)實(shí)驗(yàn)板上的繼電器吸合;相反,如果計(jì)算機(jī)發(fā)送“繼電器OFF指令”時(shí),單片機(jī)驅(qū)動(dòng)繼電器釋放,我們可以學(xué)習(xí)掌握計(jì)算機(jī)智能控制的原理,只要掌握了這種方法,我們要在電腦上輕輕點(diǎn)擊鼠標(biāo)就可以控制家里的電氣開關(guān)了就不難了(操作方法,點(diǎn)擊軟件的“繼電器”按鈕,實(shí)驗(yàn)板的繼電器吸合,再次點(diǎn)擊按鈕,繼電器釋放)。
4、實(shí)時(shí)溫度監(jiān)控軟件檢測用戶的繼電器控制命令,如果點(diǎn)擊軟件上“繼電器”控制按鈕,則發(fā)出繼電器控制指令給單片機(jī),控制實(shí)驗(yàn)板上的繼電器產(chǎn)生相應(yīng)動(dòng)作。
【通信實(shí)驗(yàn)程序的開發(fā)】
該系統(tǒng)程序由單片機(jī)實(shí)時(shí)監(jiān)控程序程序和電腦實(shí)時(shí)監(jiān)控程序兩部分軟件構(gòu)成。在微機(jī)測控系統(tǒng)中,一般稱計(jì)算機(jī)為上位機(jī)、而前端采集控制的單片機(jī)系統(tǒng)稱為下位機(jī)。上位機(jī)主要負(fù)責(zé)所有測控?cái)?shù)據(jù)的綜合管理與下位機(jī)的調(diào)度控制,而下位機(jī)由單片機(jī)構(gòu)成前端的測控系統(tǒng),進(jìn)行原始數(shù)據(jù)的采集及設(shè)備的控制,將采集到的原始數(shù)據(jù)發(fā)送給上位機(jī)處理,下位機(jī)受上位機(jī)的管理控制。
一、單片機(jī)程序開發(fā)
51單片機(jī)有一個(gè)全雙工的串行通信口,非常適合與電腦進(jìn)行通信,51單片機(jī)的串口開發(fā)在各種教科書上都有詳細(xì)的介紹,我們這里不在重復(fù),大家可以參考一下書籍。單片機(jī)程序功能主要如下:初始化串口、打開串口中斷、檢測DS18B20溫度傳感器狀態(tài)、讀取實(shí)時(shí)溫度、將實(shí)時(shí)溫度顯示在1602液晶模塊上、將監(jiān)控?cái)?shù)據(jù)發(fā)送到電腦RS-232串口、接收繼電器控制命令、控制繼電器動(dòng)作等。
單片機(jī)通信參考程序如下:
ORG 0000H
AJMP START ;轉(zhuǎn)到初始化程序
ORG 0023H
AJMP PGUART ;轉(zhuǎn)到串行中斷服務(wù)子程序
START: MOV SP,#60H ;堆棧指針初始化
MOV P0,#0FFH ;P0端口初始化
MOV P1,#0FFH ;P1端口初始化
MOV P2,#0FFH ;P2端口初始化
MOV P3,#0FFH ;P3端口初始化
MOV TMOD,#20H ;定時(shí)器T1工作于模式2,自動(dòng)重裝載
MOV TH1,#0FFH ;TH1初值為"0FFH",57600bps
MOV TL1,#0FFH ;TL1初值為"0FFH",57600bps
MOV PCON,#80H ;波特率加倍
MOV SCON,#50H ;串行口工作于方式1,允許接收
SETB TR1 ;啟動(dòng)定時(shí)器T1
SETB ES ;允許串行口中斷
SETB EA ;開總中斷
MAIN: LCALL GETROM ;讀取DS18B20溫度傳感器的序列號(hào)ID
LCALL GETTEMP ;讀取實(shí)時(shí)溫度
...... ;主程序處理其他任務(wù),等待串口中斷
AJMP MAIN
;-------------------單片機(jī)通信參考程序----------------------------------
PGUART: ...... ;串口中斷服務(wù)子程序,接收?qǐng)?zhí)行計(jì)算器控制指令
RETI
END
二、RS-232串行通信測試軟件開發(fā)
計(jì)算機(jī)RS-232串行通信測試軟件采用VB6.0開發(fā),VisualBasic 6.0(簡稱VB6.0)以其簡單易學(xué),功能強(qiáng)大而倍受廣大計(jì)算機(jī)開發(fā)人員的青睞,VB6開發(fā)的各種軟件已廣泛地應(yīng)用于各個(gè)領(lǐng)域,VB6提供了多種控件,其中MSCOMM.OCX是用于串行通信的控件,我們可將該控件添加到工具箱(Toolbox)內(nèi),這樣就可以利用該控件進(jìn)行串行通信程序的設(shè)計(jì)了。
下面介紹Mscomm控件的主要屬性和方法:
1) CommPort:設(shè)置或返回串行端口號(hào),VB6的取值范圍為1~16,表示打開或返回通信端口號(hào)COM1~COM16
2) Setting:設(shè)置或返回串行端口的波特率、奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)、停止位。如:Mscomm1.Setting=“9600,N,8,1”
3) PortOpen:打開或關(guān)閉串行端口,格式為:Mscomm1.PortOpen=『True/False』
4) InBufferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省為1024字節(jié)
5) InBufferCount:返回接收緩沖區(qū)內(nèi)的等待讀取的字節(jié)個(gè)數(shù),可通過設(shè)置該屬性為0來清除接收緩沖區(qū)
6) RThreshold:該屬性為一閥值,當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)達(dá)到或超過該值后就產(chǎn)生OnComm事件
7) InputLen:設(shè)置或返回接收緩沖區(qū)內(nèi)用Input讀入的個(gè)數(shù)。若取0,則Input將讀取整個(gè)緩沖區(qū)的所有內(nèi)容
8) Input:該屬性表示從接收緩沖區(qū)InputLen個(gè)字符
9) OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū)大小,缺省為512字節(jié)
10) OutBufferCounter:返回發(fā)送緩沖區(qū)內(nèi)等待發(fā)送的字符數(shù),可用來清空緩沖區(qū)
11) Output:向發(fā)送緩沖區(qū)傳送一字符串,即向串口發(fā)送數(shù)據(jù)
VB6.0為可視化編程開發(fā)軟件,開發(fā)程序簡單易學(xué),VB程序開發(fā)主要分為兩步:第一步、使用VB控件設(shè)計(jì)出軟件界面,第二步、給各種控件編寫相應(yīng)的執(zhí)行程序代碼,代碼編寫完成后可以運(yùn)行查看結(jié)果了。
第一步:開發(fā)程序界面
打開VB6.0 -> 新建“標(biāo)準(zhǔn) EXE”建立一個(gè)新的工程。在工程窗口Form1中添加我們要使用的各種按鈕和控件,其中一個(gè)圖標(biāo)如電話一樣的控件就是MSCOMM串行通信控件了,該控件在界面設(shè)計(jì)時(shí)候可見,在程序運(yùn)行時(shí)候不可見。最后,放置好了各種控件后,程序的界面界面就出來了,是不是很簡單呀!如下圖4所示:
實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件界面開發(fā) |
||
![]() |
|
|
圖 4 |
第二步:VB軟件編寫
當(dāng)軟件的界面設(shè)計(jì)完成后,我們就可以給程序添加代碼了,在程序中實(shí)現(xiàn)的主要功能如下:RS-232端口初始化、接收處理S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板發(fā)送過來的實(shí)時(shí)數(shù)據(jù)、將實(shí)時(shí)溫度數(shù)據(jù)顯示在軟件界面中,根據(jù)設(shè)定的上下限報(bào)警溫度判斷有無超限報(bào)警、繪制實(shí)時(shí)溫度變化曲線、接收用戶的繼電器控制指令、發(fā)送繼電器控制命令。。。如下圖5所示:
實(shí)時(shí)監(jiān)控系統(tǒng)軟件程序代碼編寫 |
||
![]() |
|
|
圖 5 |
【實(shí)時(shí)溫度監(jiān)控實(shí)驗(yàn)操作】
完成了單片機(jī)通信程序及PC上我VB程序開發(fā)后,我們編譯工程,得到單片機(jī)芯片燒寫的HEX格式目標(biāo)文件lcdtemp.hex和串口測試程序可以執(zhí)行文件Temp Ver1.0.exe,然后我們就可以拿出S51增強(qiáng)型單片機(jī)實(shí)驗(yàn)板,馬上進(jìn)行實(shí)時(shí)溫度監(jiān)控實(shí)驗(yàn)實(shí)驗(yàn)了。
1、使用ISP編程器將目標(biāo)文件lcdtemp.hex燒寫到AT89S51單片機(jī)中(見下圖6)
圖6: ISP編程器燒寫目標(biāo)文件rs232test.hex |
2、如前面的圖2所示:我們將燒寫好了通信程序的AT89S51芯片鎖緊到S51單片機(jī)實(shí)驗(yàn)板上,然后把1602字符型液晶模塊插到實(shí)驗(yàn)板的1602接口上,用RS232串口通信電纜和USB電纜將實(shí)驗(yàn)板和電腦連接好,按壓實(shí)驗(yàn)板的電源開關(guān),開啟電源,此時(shí)實(shí)驗(yàn)板上的電源指示燈亮起來,1602液晶模塊上會(huì)顯示出DS18B20傳感器狀態(tài)和實(shí)時(shí)溫度,同時(shí)將實(shí)時(shí)數(shù)據(jù)發(fā)送到RS-232串行通信接口,我們可以看到實(shí)驗(yàn)板上的“通信”指示燈在閃爍,表示正在發(fā)送監(jiān)控?cái)?shù)據(jù)。
3、雙擊我們編寫的實(shí)時(shí)溫度監(jiān)控PC軟件Temp Ver1.0.exe,啟動(dòng)實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件,在軟件上正確設(shè)置好和實(shí)驗(yàn)板連接的通信端口。從實(shí)驗(yàn)板發(fā)送過來的溫度數(shù)據(jù)就會(huì)實(shí)時(shí)顯示在軟件的左上角,同時(shí)在軟件的右邊窗口中繪制出溫度變化曲線,比如:我們用手去抓住溫度探頭,DS18B20溫度傳感器受我們的體溫加熱后,溫度將逐漸上升,在溫度曲線中將詳細(xì)記錄溫度變化的過程,比起只在實(shí)驗(yàn)板上看到一個(gè)溫度數(shù)據(jù)就更加直觀了,在電腦軟件中顯示的實(shí)時(shí)溫度和S51增強(qiáng)型實(shí)驗(yàn)板上1602液晶模塊上顯示的溫度是始終保持一致的。然后,我們可以點(diǎn)擊實(shí)時(shí)溫度監(jiān)控軟件的“繼電器”按鈕,實(shí)驗(yàn)板上的單片機(jī)接收到電腦的控制指令后,就會(huì)控制繼電器產(chǎn)生相應(yīng)的開關(guān)動(dòng)作,實(shí)現(xiàn)電腦軟件對(duì)實(shí)驗(yàn)板上繼電器的控制。
【實(shí)驗(yàn)總結(jié)】
通過該溫度監(jiān)控實(shí)驗(yàn),我們可以發(fā)現(xiàn):基于DS18B20數(shù)字溫度傳感器構(gòu)成的實(shí)時(shí)監(jiān)控系統(tǒng)確實(shí)具有精度高、抗干擾能力強(qiáng)、電路簡單等諸多優(yōu)點(diǎn),溫度傳感器得到電纜長度達(dá)到幾十米都可以正常讀取溫度數(shù)據(jù),并且已經(jīng)在站長開發(fā)的機(jī)房安全監(jiān)控系統(tǒng)中得到了實(shí)際考驗(yàn),那可是要365天從不間斷地對(duì)機(jī)房及相關(guān)設(shè)備提供實(shí)時(shí)溫度監(jiān)控的哦。
相比之下,傳統(tǒng)的溫度檢測系統(tǒng)采用熱敏電阻等溫度敏感元件,熱敏電阻成本低,但需要后續(xù)信號(hào)調(diào)理、AD轉(zhuǎn)換處理電路才能將溫度信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),不但電路復(fù)雜,而且熱敏電阻的可靠性相對(duì)較差,測量溫度的精度差,很難保證熱敏電阻的一致性和線性,在應(yīng)用中需要很好的解決引線誤差補(bǔ)償問題、共模干擾問題和放大電路零點(diǎn)漂移誤差等技術(shù)問題。
因此,如果你開發(fā)的系統(tǒng)對(duì)溫度監(jiān)控精度要求不是非常高,而且測溫的范圍DS18B20的-55~+125 ℃之間的話,那么采用DS18B20是一個(gè)不錯(cuò)的選擇,通過軟件的插值運(yùn)算,其實(shí)DS18B20的測溫精度還可以進(jìn)一步提高的,具體的實(shí)現(xiàn)方法大家可以參考DALLAS公司相關(guān)技術(shù)資料。當(dāng)然,如果你有條件的話,也可以預(yù)先對(duì)每一個(gè)DS18B20進(jìn)行一次校驗(yàn),在標(biāo)準(zhǔn)恒溫箱中測量并記錄下每個(gè)傳感器的測溫誤差,在實(shí)際應(yīng)用中,我們就可以根據(jù)每個(gè)傳感器的實(shí)際校準(zhǔn)對(duì)讀出的實(shí)時(shí)溫度進(jìn)行適當(dāng)?shù)恼`差糾正,這樣也不失為提高DS18B20測溫精度的一個(gè)好辦法。可惜的是,并非大家都有這種高精度的恒溫箱來校驗(yàn)傳感器,如果你的參考溫度不準(zhǔn)確,那么校準(zhǔn)將會(huì)適得其反。
好了,這個(gè)實(shí)驗(yàn)到此結(jié)束了,希望大家通過對(duì)這個(gè)軟件的學(xué)習(xí),掌握單片機(jī)實(shí)時(shí)溫度監(jiān)控的開發(fā)、串口通信程序的開發(fā)及計(jì)算機(jī)串口實(shí)時(shí)控制開發(fā)原理及PC監(jiān)控軟件的開發(fā),為開發(fā)其他功能更加完善的單片機(jī)綜合應(yīng)用系統(tǒng)打好基礎(chǔ)。
歡迎本站的單片機(jī)全套餐客戶下載教程配套的軟件進(jìn)行測試實(shí)驗(yàn),給我們提供更多的寶貴意見和建議!再次感謝大家長期對(duì)電子驛站的關(guān)心與大力支持,我們會(huì)不斷開發(fā)出更多的有意義的實(shí)驗(yàn)教程提供給大家學(xué)習(xí)研究,祝大家學(xué)習(xí)愉快!
點(diǎn)擊下載實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件
注意: |
|
1、 |
本實(shí)時(shí)溫度監(jiān)控系統(tǒng)軟件為配合本站S51增強(qiáng)型實(shí)驗(yàn)板學(xué)習(xí)而開發(fā),僅適用于和本站產(chǎn)品配套學(xué)習(xí)使用,并且需要本站單片機(jī)學(xué)習(xí)全套餐客戶的相關(guān)實(shí)驗(yàn)器材配合才能完成實(shí)驗(yàn)。 |
2、 |
實(shí)驗(yàn)源程序代碼隨產(chǎn)品提供給本站全套餐客戶學(xué)習(xí)研究使用,本站保留對(duì)本實(shí)驗(yàn)例程的所有權(quán)利,未經(jīng)授權(quán)請(qǐng)勿隨意轉(zhuǎn)載或修改軟件相關(guān)版權(quán)信息。 |