基于DS18B20的單總線 多點測溫系統(tǒng) 、 摘要:本文主要介紹了一個基于DS18B20單片機的測溫系統(tǒng),詳細描述了傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分析,特別是數(shù)字溫度傳感DS18B20的數(shù)據(jù)采集過程。對各部分的電路也一一進行了介紹,該系統(tǒng)可以方便的實現(xiàn)實現(xiàn)溫度采集和顯示,它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸、農(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20與AT89C51結(jié)合實現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,有廣泛的應用前景。
隨著社會的進步和工業(yè)技術(shù)的發(fā)展,人們越來越重視溫度因素,許多產(chǎn)品對溫度范圍要求嚴格,而目前市場上普遍存在的溫度檢測儀器大都是單點測量,同時有溫度傳遞不及時、精度不夠的缺點,不利于工業(yè)控制者根據(jù)溫度變化及時作出決定。在這樣的形式下,開發(fā)一種能夠同時測量多點,并且實時性高、精度高,能夠綜合處理多點溫度信息的測量系統(tǒng)就很有必要
關(guān)鍵詞:DS18B20,AT89c51,多點測溫
DS18B20數(shù)據(jù)處理,通過for循環(huán),依次發(fā)送一次序列號,匹配對應節(jié)點溫度傳感器,采集數(shù)據(jù)溫度,轉(zhuǎn)換成實際溫度值,保存在數(shù)組中。不斷循環(huán),直至所有序列號發(fā)送完畢。
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. 程序占有資源:片內(nèi)rom :56B 片外rom:0B ram:2970B
七、 測試結(jié)果與數(shù)據(jù)分析:
| 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 數(shù)據(jù)測試表 結(jié)論:
1. 在一定誤差范圍內(nèi),各節(jié)點傳感器的溫度精度正常。
2. 怡遠樓和電子樓一樓大廳的數(shù)據(jù)誤差超過實際傳感器的精度 0.5℃。
3. 各節(jié)點溫度顯示穩(wěn)定,不會出現(xiàn)個別節(jié)點的跳變情況。
誤差分析:
1. 市場長標準的數(shù)字溫度計一般誤差在1℃,DS18B20的誤差在0.5 ℃,因此實際測量的允許最大誤差應該在1.5℃。 2. 選取的溫度計為食物溫度計,與被測物接觸面積較大,而DS18B20 接觸面積較小,測量本身存在讀取誤差。 八、 參考文獻:
[1]LCD1602數(shù)據(jù)手冊
[2]DS18B20數(shù)據(jù)手冊
[3]郭天祥.51片機C語言教程.電子工業(yè)出版社.2009.1
[4]陳蕾.單片機原理與接口技術(shù).機械工業(yè)出版社.2012.8
[5]潘勇.孟慶斌.基于DS18B20的多點溫度測量系統(tǒng)設(shè)計.
電子測量技術(shù).2008.09
|