基于DS18B20的單總線 多點測溫系統 、 摘要:本文主要介紹了一個基于DS18B20單片機的測溫系統,詳細描述了傳感器在單片機下的硬件連接,軟件編程以及各模塊系統流程進行了詳盡分析,特別是數字溫度傳感DS18B20的數據采集過程。對各部分的電路也一一進行了介紹,該系統可以方便的實現實現溫度采集和顯示,它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優點,適合于我們日常生活和工、農業生產中的溫度測量,也可以當作溫度處理模塊嵌入其它系統中,作為其他主系統的輔助擴展。DS18B20與AT89C51結合實現最簡溫度檢測系統,該系統結構簡單,抗干擾能力強,適合于惡劣環境下進行現場溫度測量,有廣泛的應用前景。
隨著社會的進步和工業技術的發展,人們越來越重視溫度因素,許多產品對溫度范圍要求嚴格,而目前市場上普遍存在的溫度檢測儀器大都是單點測量,同時有溫度傳遞不及時、精度不夠的缺點,不利于工業控制者根據溫度變化及時作出決定。在這樣的形式下,開發一種能夠同時測量多點,并且實時性高、精度高,能夠綜合處理多點溫度信息的測量系統就很有必要
關鍵詞:DS18B20,AT89c51,多點測溫
DS18B20數據處理,通過for循環,依次發送一次序列號,匹配對應節點溫度傳感器,采集數據溫度,轉換成實際溫度值,保存在數組中。不斷循環,直至所有序列號發送完畢。
4. 主要代碼:
a) 主程序代碼:
void main()
{
LCD_init();
LED1=0;
Show();
while(1)
{
keyscan();
if(num==1)
{
LCD_write_command(0x01);
if(k>10) k=k-10;
k++;
if(k>5) k=1;
num=0;
}
if(num==2)
{
LCD_write_command(0x01);
if(k<10) k=k+10;
if(k>15) k=10;
num=0;
}
if(k>0&&k<10)
{
Ent();
}
if(k==1)
{
ShowC1();
}
if(k==2)
{
ShowC2();
}
if(k==3)
{
ShowC3();
}
if(k==4)
{
ShowAl();
}
if(k==5)
{
ShowAv();
}
if(k>10)
{
change_temp();
read_temp();
}
if(k==11)
{
ShowChar1();
display_DS1();
}
if(k==12)
{
ShowChar2();
display_DS2();
}
if(k==13)
{
ShowChar3();
display_DS3();
}
if(k==14)
{
ShowCharAl();
display_DS1();
delay(40);
display_DS2();
delay(40);
display_DS3();
}
if(k==15)
{
ShowCharA();
display_DSA();
}
}
}
b)LCD初始化代碼:
void LCD_init(void)
{
LCD_write_command(0x08);
LCD_write_command(0x38);
LCD_write_command(0x0c);
LCD_write_command(0x06);
LCD_write_command(0x01);
delay_n40us(100);
}
c)按鍵掃描代碼:
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
num=1;
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
num=2;
while(!key2);
}
}
}
5. 程序占有資源:片內rom :56B 片外rom:0B ram:2970B
七、 測試結果與數據分析:
| T1 | T2 | T3 | 平均溫度 | 溫度計 | 誤差 | 實驗室 | 26.8
| 26.7 | 26.8
| 26.8 | 26.4 | 0.4 | 電子樓前 | 30.5 | 30.5 | 30.5 | 30.5 | 30.6 | -0.1 | 致遠樓 | 29.3 | 29.3 | 29.5 | 29.4 | 29.4 | 0 | 本部籃球場 | 29.5 | 29.5 | 29.5 | 2.95 | 29.2 | 0.3 | 怡遠樓 | 30.0 | 30.0 | 30.1 | 30.0 | 29.2 | 0.8 | 電子樓一樓大廳 | 29.1 | 29.0 | 29.0 | 29.0 | 27.2 | 1.8
|
表7—1 數據測試表 結論:
1. 在一定誤差范圍內,各節點傳感器的溫度精度正常。
2. 怡遠樓和電子樓一樓大廳的數據誤差超過實際傳感器的精度 0.5℃。
3. 各節點溫度顯示穩定,不會出現個別節點的跳變情況。
誤差分析:
1. 市場長標準的數字溫度計一般誤差在1℃,DS18B20的誤差在0.5 ℃,因此實際測量的允許最大誤差應該在1.5℃。 2. 選取的溫度計為食物溫度計,與被測物接觸面積較大,而DS18B20 接觸面積較小,測量本身存在讀取誤差。 八、 參考文獻:
[1]LCD1602數據手冊
[2]DS18B20數據手冊
[3]郭天祥.51片機C語言教程.電子工業出版社.2009.1
[4]陳蕾.單片機原理與接口技術.機械工業出版社.2012.8
[5]潘勇.孟慶斌.基于DS18B20的多點溫度測量系統設計.
電子測量技術.2008.09
|