王麗娟,王 艷
(鄭州升達經貿管理學院 資訊管理系,鄭州 451191)
基于DS18B20的多通道溫度測試儀
王麗娟,王 艷
(鄭州升達經貿管理學院 資訊管理系,鄭州 451191)
在控制和監(jiān)測系統(tǒng)中,許多場合都需要環(huán)境溫度參數。例如樓宇溫度監(jiān)測系統(tǒng)、糧倉溫度控制系統(tǒng)以及蔬菜大棚溫度監(jiān)測系統(tǒng)等。測量多點環(huán)境溫度數據可采用美國DALLAS公司的DS18B20單總線式數字溫度傳感器,傳感器的控制和設置利用單片機STC89C52實現(xiàn)。同時各點溫度數據可經由串行總線RS232傳送至通用PC機,由PC機作為監(jiān)控系統(tǒng)的上位機,實現(xiàn)對整個系統(tǒng)的設置、監(jiān)測和報警。PC機控制界面和通信程序采用VB6.0編寫。其開發(fā)過程具有簡單、界面友好的特點,同時還可將多點環(huán)境溫度存儲至PC機,對歷史溫度進行統(tǒng)計和分析,并可將數據繪制成圖像方式顯示。
該系統(tǒng)設計了四通道測溫系統(tǒng),單片機與溫度傳感器的數據傳輸采用1-Wire總線即單總線結構,該結構是Dallas Semiconductor公司推出的非常簡單實用的總線協(xié)議。實用1-Wire結構可將引腳減少到最少,因此特別適合應用于單片機系統(tǒng)中[1]。
Dallas Semiconductor公司推出DS18B20即為1-W i r e總線結構,其溫度測量范圍為-55℃~125℃,測溫分辨率可達0.0625℃。多個DS18B20可以并聯(lián)到3根或者2根線上,CPU只需要一根端口線就能與多個DS18B20通信,占用MCU端口較少,可節(jié)省大量的口線和硬件電路。因此,DS18B20非常適合與遠距離多點溫度檢測系統(tǒng)中[2]。
下位機以單片機為核心,其外圍器件有4個數字溫度傳感器DS18B20,液晶顯示器LCD1602,與RS232的接口芯片MAX202。單片機的編程采用C51語言,該語言接近C語言,程序更易移植和模塊化。
系統(tǒng)的連接框圖如圖1所示。系統(tǒng)的核心元件是單片機,采用STC89C52。系統(tǒng)中的測溫傳感器采用DALLAS公司的DS18B20單線式溫度傳感器,可有效節(jié)省單片機的I/O接口,簡化系統(tǒng)連線。系統(tǒng)設計4通道采集溫度傳感器,各通道傳感器收集到的溫度可由1-wire總線送至單片機,單片機通過輪詢機制采集4通道溫度數據,并將數據經由RS232總線同時傳送至PC機和LCD1602液晶顯示器。PC機可存儲各通道歷史溫度,顯示各通道當前溫度??紤]到PC機擔任任務較多,并非溫度監(jiān)測控制專用機,系統(tǒng)中四路溫度的當前值也同時送至LCD1602液晶顯示。彌補PC機擔任其他任務時不能顯示當前溫度數據的不足。
2.2.1 測溫電路詳圖
溫度傳感器DS18B20只有三個引腳,其中VDD為外部供電電源引腳,GND為接地引腳,DQ為1-Wire總線的數據輸入/輸出引腳。多個DS18B20的DQ引腳可以直接接在一起接入單片機的一個I/O引腳上,本系統(tǒng)接入單片機的P1.1引腳??紤]到系統(tǒng)中有多個DS18B20,在實際的應用中分部在不同的位置,其供電方式采用外部電源供電方式,方便系統(tǒng)接線。DS18B20與單片機的接線示意圖如圖2所示。
圖2 溫度傳感器和單片機的接線示意圖
2.2.2 1-wire總線的時序及編程
單片機與DS18B20通過1-wire信號線連接,單片機要實現(xiàn)各類操作命令以及溫度的讀取與設置,必須要嚴格按照單總線及DS18B20的通信協(xié)議進行通信。DS18B20的1-wire工作協(xié)議是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序。在實際的編程過程中,可將各個時序編寫成子函數,以方便調用。1-wire初始化時序、寫時序和讀時序如圖3所示[3]。
1)1-wire的初始化時序及編程
分析圖3(a)初始化時序圖,1-wire初始化即復位時序的步驟如下:首先將數據線DQ拉低并保持一段時間來實現(xiàn)1-wire總線上的所有器件的復位。接著主機等待DS18B20返回的存在脈沖,并返回存在信號。如果返回0,則表示器件存在,返回1,則表示器件不存在。根據初始化時序,采用C51編寫單片機模擬1-wire的初始化協(xié)議函數initial(),其代碼如下:
2)1-wire寫時序及編程
分析圖3(b)寫數據時序圖,主機要將一位數據寫入DS18B20,首先應將數據線DQ置低電平,開始寫時間間隙,然后按照數據位從低到高發(fā)送數據(一次只發(fā)送1位),如果寫入1則數據線DQ置1,如果寫入0則數據線DQ置0。根據以上1-wire總線的寫時序流程,采用C51語言分別編寫位寫入函數BitWrite()和字節(jié)寫入函數ByteWrite
圖3 1-wire總線的時序圖
3)1-wire讀時序及編程
分析圖3中的(c)讀時序圖,主機要讀入DS18B20的數據,首先拉低數據線DQ開始讀時間間隙,然后將DQ置1。延時一段時間,讀取并返回數據總線DQ上的1位數據,重復以上步驟,直到8位數據讀完。根據以上1-wire總線的讀時序流程,采用C51語言分別編寫位讀入函數BitRead()和字節(jié)讀入函數ByteRead()。程序代碼如下:
單片機作為PC機和DS18B20的聯(lián)絡器件,主要負責接收PC機發(fā)送的指令,并將指令以特定的形式和時序傳送給相應的DS18B20,同時,讀取多個DS18B20的溫度數據,并將數據送至LCD顯示,同時將數據送至PC及進行顯示、存儲和分析。單片機控制控制DS18B20的流程圖如圖4所示。
單片機接收到PC機的復位指令,或者單片機本身的復位按鈕被按下,單片機首先進行系統(tǒng)初始化,定義有關數據線的位地址。接著調用復位函數,發(fā)送復位時隙復位所有的1-wire總線上的DS18B20。由于所有的DS18B20都要檢測溫度,此時可以忽略每個DS18B20的64位ROM序列號,由單片機發(fā)送跳過ROM的命令CCH,緊接著發(fā)送溫度轉換命令44H,之后延時1s,以便各個溫度傳感器進行溫度轉換。
單片機要讀入每個DS18B20D 溫度數據,因此要建立每個DS18B20的64位ROM和測量位置點之間的對應關系。單片機讀入DS18B20的命令是33H,但該命令只能讀出1-wire總線上的單個1-wire器件的序列號,因此,在當主機需要對眾多在線的DS18B20中的某一個進行操作時,首先應該講單片機逐個與DS18B20進行掛接,發(fā)送33H命令讀入其序列號,并將該序列號和測溫點的對應關系存儲在單片機的CODE區(qū)。
系統(tǒng)中多個DS18B20,單片機要逐個讀入其溫度數據,首先發(fā)送匹配ROM的指令55H,緊接著發(fā)送測溫點的DS18B20的64位序列號,讀入單個測溫點的數據,該數據送到LCD的與測溫點相對應的區(qū)域顯示,同時該數據送至PC機進行顯示和存儲。主程序中該處共有4個DS18B20,因此讀入溫度的循環(huán)次數是4次。
考慮到系統(tǒng)要顯示4通道測溫點溫度數據,采用點陣字符LCD液晶模塊,液晶體積小、功耗低、顯示操作簡單。本系統(tǒng)選用市面上較為流行的并行接口通用LCD1602,該液晶可以顯示2行,每行顯示16個字符。每個通道的溫度數據可占用8個字符。
圖4 下位機程序流程圖
單片機和LCD1602的連接如圖5所示,液晶顯示模塊的端口引腳7~14為并行數據線D0~D7與單片機的P0.0~P0.7連接,液晶的引腳6為使能信號LCDEN接單片機的P1.1,液晶的端口4為數據/命令選擇端接P1.2,液晶的端口5為“讀/寫選擇端”,在本系統(tǒng)中只用于寫入命令和數據,因此始終選擇為寫狀態(tài),即低電平接地。
單片機對LCD1602的讀寫,在較多的資料中都有介紹,在此不再贅述。
單片機采集到4通道溫度數據后,一方面送入LCD1602顯示,一方面送入PC機,單片機和PC機之間的通信采用RS232總線連接。由于RS232的邏輯電平和單片機所用的TTL電平不匹配,因此需要接入電平轉換芯片MAX202,其所配電容只需0.1μ即可。采用RS232可實現(xiàn)全雙工通信,故單片機可每隔10秒主動向PC機發(fā)送一次測量的溫度數據(每隔10s測量一次溫度,測后即發(fā)),單片機與MAX202的電路連接如圖5所示。
PC機采用VB6.0編寫用戶界面,上位機的主要任務是通過串口和單片機進行通信,顯示4通道的當前溫度,并可以輸入各個通道的溫度的上下限。上位機軟件流程圖如圖6所示。通過初始化命令按鈕將各通道的溫度上下限的值通過單片機送至各個DS18B20,然后通知單片機開始進行溫度轉換,延遲10s后即可接收數據,由于環(huán)境溫度時刻變化,因此程序中每個10s接收一次溫度數據,并同時將當前溫度數據顯示在PC機界面的文本框內,在PC機中用軟件檢測溫度是否超限,如果超限,可彈出提示窗口進行提醒。VB6.0的串口通信主要是通過調用MSComm控件實現(xiàn),通過設置MSComm控件的屬性可以設置系統(tǒng)的波特率,傳送字符的格式,串口標號等信息。上位機運行界面如圖7所示[4]。
該系統(tǒng)實現(xiàn)了4通道溫度的測量和顯示,上位機以通用的PC機作為主機,用VB6.0編寫人機交互界面,通過調用VB6.0的MSComm1控件實現(xiàn)與下位機的串行通信。同時可以通過界面設定溫度的上下限。下位機以單片機STC89C52為核心器件,采用4路DS18B20數字溫度傳感器進行多點溫度采樣,其上下限溫度數據來自PC機的設定,多點溫度數據可同時送至LCD1602顯示,彌補PC機擔任其他任務時不能實時看到溫度的不足。
讀者也可在該系統(tǒng)的基礎上進行擴展,例如,由PC機檢測到溫度超限時通知單片機報警,PC機接收的數據可以做歷史保存,并對數據采樣進行圖像的繪制和分析。
圖5 單片機與并行LCD1602液晶和MAX202的接口電路
圖7 上位機運行界面
[1]趙建領,薛園園,等. 51單片機開發(fā)與應用技術詳解[M].北京:電子工業(yè)出版社,2009.
[2]張維君,等.基于PC機串口與DS18B20的單線多點溫度測量[J].儀表技術與傳感器,2009(4):52-54.
[3]馬云峰.單片機與數字溫度傳感器DS18B20的接口設計[J].計算機測量與控制,2002(10):279-280.
[4]郭天祥.51單片機C語言教程—入門、提高、開發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2009.
The multi-channel temperature tester based on DS18B20
WANG Li-juan,WANG Yan
本文設計了4路溫度測試顯示系統(tǒng)。下位機以STC89C52單片機為主控芯片,溫度傳感器采用DALLAS公司的數字溫度傳感器DS18B20,采集4路溫度數據,并將溫度數據傳送至單片機,同時由單片傳經由串口送至PC機和LCD1602液晶進行顯示。PC機采用VB編寫控制界面和通信程序,可設定各通道溫度的上下限,并檢測和顯示當前溫度,同時對于超限溫度進行提示。
單片機;溫度傳感器DS18B20;RS232
王麗娟(1979-),女,河南長葛人,講師,碩士,研究方向為計算機通信及自動控制。
TP273.1
A
1009-0134(2013)01(下)-0123-05
10.3969/j.issn.1009-0134.2013.01(下).36
2012-09-05
基于DS18B20的網絡型溫度測試系統(tǒng)(2011YJ07)