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