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