基于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
|