摘 要:介紹了以STC89C52單片機(jī)為主控制器的基于DS18B20的溫度測控系統(tǒng)的硬件和軟件設(shè)計(jì)方法,給出了完整的硬件電路及程序流程圖。并根據(jù)串行通訊原理設(shè)計(jì)了單片機(jī)與PC機(jī)的接口電路,建立了單片機(jī)與PC機(jī)之間的串行通訊協(xié)議,同時(shí)利用VB6.0對測溫系統(tǒng)實(shí)現(xiàn)了對象化操作,可以用于溫度數(shù)據(jù)的采集、存儲和控制。本系統(tǒng)結(jié)構(gòu)簡單、測量精度高、可靠性高。
關(guān)鍵詞:DS18B20;STC89C52;串行通訊;VB6.0
中圖法分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2014)06-0019-03
0引言
溫度是表征物體冷熱程度的一個(gè)物理量。在工農(nóng)業(yè)生產(chǎn)和人們的日常生活中,對于溫度的測量及控制一直占據(jù)著重要地位。傳統(tǒng)的常用測溫元件主要有熱敏電阻、熱電偶、溫敏二極管和普通的集成溫度傳感器等,但是它們或多或少存在一些不足。由美國Dalls公司推出的單總線數(shù)字溫度傳感器 DS18B20,以其高集成度、高精度、高可靠性、接口簡單、使用方便等諸多傳統(tǒng)的測溫元件無法比擬的優(yōu)點(diǎn)而成為我們設(shè)計(jì)的溫控系統(tǒng)的溫度傳感器首選[1]。
1測溫系統(tǒng)的總體方案設(shè)計(jì)
本溫控系統(tǒng)要求下位機(jī)采用52單片機(jī)通過DS18B20溫度傳感器采集環(huán)境的溫度數(shù)據(jù),并在數(shù)碼管上顯示當(dāng)前溫度值,可測溫范圍為-55~125 ℃,精度0.1 ℃。
上位機(jī)程序使用VB6.0編寫,接收溫度數(shù)據(jù)并儲存在數(shù)據(jù)庫中。接收數(shù)據(jù)時(shí),要求能顯示當(dāng)前的溫度值以及最大、最小和平均值,并同步畫出溫度變化曲線,要求系統(tǒng)可查詢歷史溫度信息。同時(shí)能夠控制下位機(jī)的加熱和降溫設(shè)備,進(jìn)行溫度的控制。本系統(tǒng)的整體總體方案如圖1所示。
圖1系統(tǒng)整體總體方案
2系統(tǒng)硬件電路設(shè)計(jì)
系統(tǒng)整體硬件電路包括:傳感器數(shù)據(jù)采集電路,溫度顯示電路,報(bào)警電路,單片機(jī)主控電路,串口傳輸電路等,圖2所示是本系統(tǒng)的整體硬件電路。
圖2系統(tǒng)整體硬件電路
溫度傳感器的數(shù)據(jù)線接單片機(jī)的P3.3口,單片機(jī)通過反復(fù)讀寫P3.3口的狀態(tài)采集數(shù)據(jù),顯示電路采用8個(gè)共陽極的LED顯示,顯示代碼由P0口發(fā)送,P2口的邏輯狀態(tài)作為選線信號,達(dá)到分時(shí)選通的目的。實(shí)際使用中只用到7個(gè)LED,最后2個(gè)用來顯示攝氏度符號,第2個(gè)用來顯示溫度的正負(fù),當(dāng)溫度為負(fù)時(shí),顯示“—”號,為正時(shí)不顯示,當(dāng)百位為零時(shí),百位不顯示,百位十位為零時(shí),百位十位都不顯示,這樣設(shè)計(jì)方便觀察,更加直觀。
此外還接有蜂鳴器,當(dāng)DS18B20不能正常工作時(shí)可以報(bào)警。最后實(shí)現(xiàn)單片機(jī)與上位機(jī)通信的功能,并實(shí)現(xiàn)上、下位機(jī)之間的數(shù)據(jù)發(fā)送或接收[2]。
3系統(tǒng)軟件設(shè)計(jì)
3.1溫度采集系統(tǒng)程序設(shè)計(jì)(下位機(jī)軟件設(shè)計(jì))
本系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。
3.1.1主程序流程
主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20測量的當(dāng)前溫度值,溫度測量每1 s進(jìn)行一次。其程序流程見圖3所示。
3.1.2溫度轉(zhuǎn)換命令子程序
溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750 ms,在本程序設(shè)計(jì)中采用1 s顯示程序延時(shí)法等待轉(zhuǎn)換的完成,圖4所示是其溫度轉(zhuǎn)換流程圖。
圖3主程序流程圖 圖4溫度轉(zhuǎn)換流程圖
3.1.3讀出溫度子程序
讀出溫度子程序的主要功能是讀出RAM中的9 B數(shù)據(jù),在讀出時(shí)需進(jìn)行CRC校驗(yàn),有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖5所示。
3.1.4計(jì)算溫度子程序
計(jì)算溫度子程序?qū)腞AM中讀取的值進(jìn)行轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖6所示。
圖5讀溫度流程圖 圖6計(jì)算溫度流程圖
3.1.5顯示數(shù)據(jù)刷新子程序
顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí),將符號顯示位移入下一位。其程序流程圖如圖7所示[3]。
圖7顯示數(shù)據(jù)刷新流程圖
3.2溫度控制系統(tǒng)程序設(shè)計(jì)(上位機(jī)軟件設(shè)計(jì))
本程序上位機(jī)應(yīng)用VB編寫,使用VB6.0的通用串口控件MSComm來對發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理,把下位機(jī)傳送上來的2 B十六進(jìn)制數(shù)據(jù)進(jìn)行解碼并顯示出來。
當(dāng)點(diǎn)擊采集溫度時(shí),上位機(jī)向下位機(jī)發(fā)送采集溫度命令,當(dāng)下位機(jī)接收到命令時(shí),向上位機(jī)發(fā)送數(shù)據(jù);
當(dāng)點(diǎn)擊加熱或降溫控制鍵時(shí),上位機(jī)向下位機(jī)發(fā)送控制命令,當(dāng)下位機(jī)接收到命令時(shí),下位機(jī)發(fā)出相應(yīng)的動(dòng)作;
程序接收數(shù)據(jù)時(shí),能同步畫出溫度變化的曲線,同時(shí)將接收的溫度數(shù)據(jù)儲存在數(shù)據(jù)庫中;系統(tǒng)可查詢歷史溫度信息。具體在上下位機(jī)程序里面體現(xiàn)出來[4]。圖8所示為上位機(jī)的工作流程圖。
圖8上位機(jī)軟件工作流程圖
4系統(tǒng)調(diào)試結(jié)果
4.1軟件仿真調(diào)試
當(dāng)DS18B20采集到的溫度為12 ℃時(shí),數(shù)碼管同時(shí)顯示12 ℃,圖9所示是系統(tǒng)下位機(jī)的工作狀態(tài)圖,采集的數(shù)據(jù)通過串口送到上位機(jī)進(jìn)行處理并顯示存儲。當(dāng)值班人員從PC機(jī)觀測到被測區(qū)的溫度異常時(shí),如溫度過高,可以通過上位機(jī)進(jìn)行遠(yuǎn)程控制,點(diǎn)擊上位機(jī)的降溫按鈕,啟動(dòng)下位機(jī)的風(fēng)扇,當(dāng)溫度過低時(shí),點(diǎn)擊上位機(jī)的加熱按鈕,啟動(dòng)下位機(jī)的加熱系統(tǒng),給被測區(qū)加溫。當(dāng)加熱或者降溫達(dá)到預(yù)定要求時(shí),通過點(diǎn)擊上位機(jī)的停止按鈕控制下位機(jī)關(guān)閉降溫系統(tǒng)或者加熱系統(tǒng),以達(dá)到保持溫度基本不變的目的。
圖9 下位機(jī)工作狀態(tài)圖
上位機(jī)的調(diào)試結(jié)果與數(shù)據(jù)如圖10所示。
圖10上位機(jī)界面與調(diào)試結(jié)果
4.2控制界面說明
重新采集:此按鈕一是控制上位機(jī)溫度采集的開始,二是讓上位機(jī)采集溫度的界面清除后重新采集溫度。
停止采集:此按鈕是上位機(jī)運(yùn)行時(shí)控制上位機(jī)的開始與停止。
退出程序:此按鈕控制整個(gè)上位機(jī)程序的退出。
加熱:此按鈕控制下位機(jī)的加熱系統(tǒng)。
降溫:此按鈕控制下位機(jī)的降溫系統(tǒng)。
停止:此按鈕可以關(guān)閉下位機(jī)的加熱與降溫系統(tǒng)。
統(tǒng)計(jì)計(jì)算:記錄被測區(qū)溫度的當(dāng)前值,開機(jī)以來的最大值,最小值與平均值。
軟件設(shè)置:設(shè)置通信用的串口,波特率,需要采集的次數(shù)與每次采集所需要的時(shí)間。
曲線繪制:這個(gè)界面可以很直白的看到整個(gè)監(jiān)測過程中的溫度變化情況。
除此之外,上位機(jī)還有它的溫度記錄存儲功能,它將采集過的歷史溫度儲存在文本文件中,具體如圖11所示。
4.3系統(tǒng)硬件調(diào)試
基于上述硬件和軟件設(shè)計(jì),對該溫度采集與控制系統(tǒng)進(jìn)行了相關(guān)實(shí)物焊接和調(diào)試,具體調(diào)試結(jié)果如圖12和圖13所示。其中圖12是下位機(jī)溫度顯示及用上位機(jī)開啟降溫系統(tǒng),圖13則是下位機(jī)顯示溫度及用上位機(jī)開啟加熱系統(tǒng)圖[5]。
圖11上位機(jī)記錄的歷史溫度
圖12下位機(jī)溫度顯示及用上位機(jī)開啟降溫系統(tǒng)
圖13下位機(jī)顯示溫度及用上位機(jī)開啟加熱系統(tǒng)
5結(jié) 語
本系統(tǒng)通過軟、硬件的仿真和實(shí)物調(diào)試,實(shí)現(xiàn)了溫度的采集、顯示、存儲和遠(yuǎn)程控制功能,已經(jīng)在實(shí)驗(yàn)室投入使用,驗(yàn)證了DS18B20的性能。同時(shí)該系統(tǒng)設(shè)計(jì)簡單、抗干擾能力強(qiáng)、擴(kuò)展方便,在多點(diǎn)溫度檢測中有較廣泛的應(yīng)用前景。
參 考 文 獻(xiàn)
[1]夏莉英,陳雁.基于DS18B20的溫度測控系統(tǒng)設(shè)計(jì)[J]. 微計(jì)算機(jī)信息.2011(1):115-117.
[2]張毅剛,彭喜元.單片機(jī)原理與應(yīng)用設(shè)計(jì)[M]. 北京:電子工業(yè)出版社,2008.
[3]魏英智.DS18B20在溫度控制中的應(yīng)用[J]. 煤礦機(jī)械,2005(3): 92-93.
[4]劉文濤. Visual Basic + Access數(shù)據(jù)庫開發(fā)與實(shí)例[M]. 北京:清華大學(xué)出版社,2006.
[5]王海寧.基于單片機(jī)的溫度控制系統(tǒng)的研究[D]. 合肥:合肥工業(yè)大學(xué),2008.