基于ds18b20的多点测温.docx
- 文档编号:9982469
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:23
- 大小:598.68KB
基于ds18b20的多点测温.docx
《基于ds18b20的多点测温.docx》由会员分享,可在线阅读,更多相关《基于ds18b20的多点测温.docx(23页珍藏版)》请在冰豆网上搜索。
基于ds18b20的多点测温
基于DS18B20的单总线
多点测温系统
、
摘要:
本文主要介绍了一个基于DS18B20单片机的测温系统,详细描述了传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。
对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时作出决定。
在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要
关键词:
DS18B20,AT89c51,多点测温
一、任务分工:
表1—1任务分工表
二、功能描述:
1.使用前程序读取序列号,一次性写入代码中。
此系统写入了三个传感器的序列号。
2.上电,显示“welcome”开机画面。
3.按键1功能选择键,可以选择显示相应的节点,显示所有节点温度,显示平均温度。
4.按键2确认键,按键1选择相应的界面后,按确认键,,同时对传感器进行数据采集,并显示温度。
三、方案选择:
一)总线方案:
方案一:
单端口单总线的多点测温
典型应用如图所示,所有DS18B20并联后其数据线连接到处理器的一个端口线上,显著特点是只占用单片机的一个端口。
每个DS18B20内部均有一个唯一的64位序列号,在工作之前先将主系统与DS18B20逐个连接,分别读出序列号并存储在单片机中,根据序列号就可以对同一总线上多个DS18B20进行识别控制,分别读取其温度。
图3—1DS18B20单总线连接图
其主要设计思想是:
当单片机需要对众多DS18B20中某一个进行操作,首先发出匹配命令,接着单片机把存储的64位序列号发送到总线,只有此序列号的DS18B20才接收相应的命令,之后的操作就是针对该DS18B20的。
设计优缺点:
这种测温连接方法是电路连接简单,硬件开销小。
缺点是该方案是由多个DS18B20并联连接在一起的,他们之间会有一定的相互影响。
最重要的是,在这种方案中,多个器件串接在总线上,对所有器件的查询操作,需要一个一个分别识别,完成一次查询需要花费大量时间,降低了系统效率,对一些实时性要求较高的设计不大适用。
方案二:
多端口并行法
各个DS18B20数据线分别连接到不同的端口,工作时,单片机同时对各个DS18B20进行统一的并行操作,对所有DS18B20而言,其命令的接收与数据的传送是同步进行的,所花费时间等同于操作单个DS18B20所用时间。
图3—2DS18B20多端口连接图
这种方案最大好处是节省时间,能满足对实时性要求较高的温度测量系统设计需求,同时由于这种方法不涉及序列号问题节省了读取与匹配的操作过程。
而其缺点也显而易见,占用的端口数较多,每个测试点需要一个连接线,硬件资源开销大
方案二:
I²C总线
两线式串行总线,用于连接微控制器及其外围设备。
是微电子通信控制领域广泛采用的一种总线标准。
它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。
通过串行数据(SDA)线和串行时钟(SCL)线在连接到总线的器件间传递信息。
每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。
而DS18B20只有一根数据线,I²C总线需要一根数据线与一根地址线,无法实现。
综上所述:
为了更好的节省硬件资源,达到多点测控,我们选择方案二。
二)液晶显示方案:
方案一:
LCD1602
图3—3LCD引脚图
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
方案二:
LCD12864
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。
两者各自优点:
1602是字符型液晶,显示字母和数字比较方便,控制简单,成本较低。
1602采用并口传输,速度比12864串口快。
12864顾名思义像素是128*64,能显示8*4个汉字,因型号不同,有的带汉字库,有的不带,能显示图像效果,功能比1602强大。
综上所述:
1602是字符型液晶,显示字母和数字比较方便,控制简单,成本较低。
1602采用并口传输,速度比12864串口快。
四、硬件设计:
一)系统框图:
图4—1多点测温系统框图
温度传感器DS18B20检测到环境温度进行转换保存高速缓存RAM中,主控器STC89C51在发出命令后在读取数据进行处理,按键扫描再输出数据到LCD1602控制其显示的具体温度值。
图4—2系统仿真图:
二)各部分硬件介绍:
1.STC89C51单片机
图4—3STCSTC89C51单片机引脚图
①电源引脚
Vcc(40脚):
典型值+5V。
Vss(20脚):
接低电平。
②外部晶振
X1、X2分别与晶体两端相连接。
当采用外部时钟信号时,X2接振荡信号,X1接地。
③输入输出口引脚:
P0口:
I/O双向口。
作输入口时,应先软件置“1”。
P1口:
I/O双向口。
作输入口时,应先软件置“1”。
P2口:
I/O双向口。
作输入口时,应先软件置“1”。
P3口:
I/O双向口。
作输入口时,应先软件置“1”。
④控制引脚:
RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp组成了MSC-51的控制总线。
RST/Vpd(9脚):
复位信号输入端(高电平有效)。
第二功能:
加+5V备用电源,可以实现掉电保护RAM信息不丢失。
ALE/-PROG(30脚):
地址锁存信号输出端。
第二功能:
编程脉冲输入。
-PSEN(29脚):
外部程序存储器读选通信号。
-EA/Vpp(31脚):
外部程序存储器使能端。
第二功能:
编程电压输入端(+21V)。
2.温度传感器DS18B20
图4—3DS18B20引脚图
温度传感器电路直接采用DS18B20设计,相比于模拟温度传感器,这种设计方法可以节省电路连接。
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出北侧温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
1)独特的单线接口仅需一个端口引脚进行通讯
2)每个器件有唯一的64位的序列号存储在内部存储器中
3)简单的多点分布式测温应用
4)无需外部器件
5)可通过数据线供电。
供电范围为3.0V到5.5V
6)测温范围为-55~+125℃(-67~+257℉)
7)在-10~+85℃范围内精确度为±0.5℃
8)温度计分辨率可以被使用者选择为9~12位
9)最多在750ms内将温度转换为12位数字
10)用户可定义的非易失性温度报警设置
11)应用包括温度控制、工业系统、消费品、温度计或任何热感测系统
64位ROM的位结构如图3所示。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
非易失性温度报警器触发器TH和TL,可通过软件写入户报警上下限。
图4—464位ROM结构图
DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义热图5所示。
低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要改动,R1和R0决定温度转换得精度位数,即用来设置分辨率,定义方法见表1。
图4—6配置寄存器
高速暂存RAM的第6,7,8字节保存未用,表现为逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可以通过单线接口读出数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到ROM数据是否正确。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,如图8所示.单片机端口接单线总线,为为保证有效DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
图4—7DS18B20采用寄生电源的电路图
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD和GND端均接地。
由于单线制只有一根线,因此发送接口必须是三态的。
3.显示器LCD1602
图4—8LCD尺寸图
LCD1602采用标准的16脚接口,其中:
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚
三)仿真电路:
1)开机仿真图:
图4—9开机仿真图
2)选择界面仿真图:
图4—10.1选择界面仿真图
2)温度显示界面仿真图:
图4—10.1温度显示界面仿真图
五、数据处理:
一)程序变量说明:
1.序列号存储数组:
SN[3][8]
将实现读取的序列号保存在此变量中,方便后续程序的读取调用。
定义方式为:
ucharSN[3][8]=
{
0x28,0x1a,0x10,0xaa,0x05,0x00,0x00,0x71,
0x28,0x9a,0x51,0xaa,0x05,0x00,0x00,0xbf,
0x28,0xb1,0x4d,0xaa,0x05,0x00,0x00,0xac,
};
2.字符串存取数组:
dis[]、table1[]、table2[]、table3[]、table4[]、choose1[]、choose2[]、choose3[]、chooseAl[]、chooseAv[]、enter[]
将需要显示的字符窜分别保存在响应的数组里,进行模块化封装,方便在主程序与子程序之间调用显示,例如:
ucharcodedis[]="Welcome!
";
ucharcodechooseAv[]="DISPLAYAVERAGE";
3.键盘返回值num
每个按键对应一个返回值,本系统为了体现简介节约的理念,只设置了两个按键,按键1返回值1,按键2返回值2。
返回值储存在num变量中,有利于按键符合功能的实现。
4.功能变量k
每一个k值对应一个功能,通过按键来判断k值的不同
num值
k值
功能
0
欢迎界面
1
1—6
对应节点选择界面
5
平均温度选择界面
2
>10
读取并转换温度
11—16
对应节点节点温度显示界面
15
平均温度显示界面
二)程序数据处理:
1.温度数据处理
DS18B20初始默认值11位,最后一位位符号位,正温度为正,负温度为负,精度为0.0625,实际温度:
tvalue[j]=d*0.625(为实际温度的10倍)
tvalue[j]—储存j节点的的实际温度
d—采集的前10位温度
符号位判断:
tvalue[j]<0x07fftflag[j]=0
tvalue[j]>=0x07fftflag[j]=1
tflag[j]—储存j节点的温度符号
2.显示数据处理:
disdata[0]=flagdat—显示符号位
disdata[1]=tvalue[0]%1000/100+0x30—显示十位
disdata[2]=tvalue[0]%100/10+0x30—显示个位
disdata[3]=0x2e—显示小数点
disdata[4]=tvalue[0]%10+0x30—显示小数一位
三)人机界面设计:
初始界面,无任何操作,如图5—1:
图5—1欢迎界面
功能选择界面(按键1选择),如图5—2、图5—3:
图5—2功能界面,显示所有温度
图5—2功能界面,显示平均温度
温度显示界面(按键2选择),如图5—4、图5—5:
图5—4温度显示界面,显示第二节点温度
图5—5温度显示界面,显示所有节点温度
六、软件设计:
1.语言选择:
程序选择C语言编写,语言的结构性更强,移植性更强。
2.资源配置:
端口
资源
P1
LCD数据端
P2.0~P2.2
LCD控制端
P2.5
DS18B20数据端
P3.0
功能按键
P3.1
显示按键
3.程序流程图:
A.主程序:
将各部分功能函数封装,写在子程序中,主程序只负责调用,大大减少了主程序的冗杂度,增加代码的可读性。
开始上电,主程序运行,初始化LCD,并且显示开机画面。
进入while循环,不断扫描按键,如果按键按下,会返回相应的num值。
判断num值,对功能变量k操作,使k的值在1~5,11~15循环显示。
再判断相应的k值,显示相应的功能。
并且循环扫面。
B.LCD初始化流程图:
LCD设置函数,两行显示,输入后光标右移,屏幕不移动,光标不显示。
C.DS18B20数据处理流程图:
DS18B20数据处理,通过for循环,依次发送一次序列号,匹配对应节点温度传感器,采集数据温度,转换成实际温度值,保存在数组中。
不断循环,直至所有序列号发送完毕。
4.主要代码:
a)主程序代码:
voidmain()
{
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初始化代码:
voidLCD_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)按键扫描代码:
voidkeyscan()
{
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:
0Bram:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ds18b20 多点 测温