DS18B20温度采集与控制
- 格式:pdf
- 大小:303.31 KB
- 文档页数:9
桂林航院电子工程系单片机课程设计与制作说明书设计题目:DS18B20数字温度计的设计专业:通信技术班级:学号:姓名:指导教师:2012年 6 月 28 日桂林航天工业学院单片机课程设计与制作成绩评定表单片机课程设计与制作任务书专业:通信技术学号: 2 姓名:一、设计题目:DS18B20数字温度计的设计二、设计要求:1.要求采集温度精确到度。
2.显示测量温度三、设计内容:硬件设计、软件设计及样品制作四、设计成果形式:1、设计说明书一份(不少于4000字);2、样品一套。
五.完成期限: 2010 年月日指导教师:贾磊磊年月日教研室:年月日目录一摘要 (1)设计要求 (1)二理论设计 (2)硬件电路计 (2)2.1.1芯片介绍 (2)2.1.2 DS18B20简介 (7)设计方案 (9)2.2.1.显示方案 (9)2.2.2.系统硬件电路设计 (11)2.2.3软件设计流程及描述 (11)三.系统的调试 (13).硬件的调试 (13)实验结果 (19)四、设计注意事项 (19)点阵设计注意事项 (20)单片机注意事项 (16)仿真器使用注意事项 (16)五.设计心得体会 (17)总结与体会 (17)摘要在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等部分于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
因此,单片机广泛用于现代工业控制中。
本论文侧重介绍“单片机温度控制系统”的软件设计及相关内容。
基于DS18B20数字温度测量模块设计1.设计目的(1)掌握DS18B20数字温度传感器的工作原理及使用方法(2)掌握对DS18B20转换数据进行处理的方法(3)学习用数码管显示复杂数据的方法2.设计任务用AT89S52控制DS18B20,读取数据,并对DS18B20转换后的数据进行处理,最后在数码管上显示DS18B20测出的温度。
要求使用6位数码管显示,最高位为符号位,如果温度值为正,不显示,如果温度为负,则显示负号;第2—4位显示温度值的整数部分,并在第4位数据上显示小数点;第5位显示一位小数,最低位显示摄氏度符号“C”。
(1)基本要求a.用AT89C51控制DS18B20,读取数据b.对DS18B20转换后的数据进行处理,转换成实际温度值c. 将符号位,整数值和小数值分别存放在特定的存储单元中.(2)进阶要求在数码管上显示DS18B20测出的温度,只要求显示出温度值的整数部分及符号位。
(3)高级要求a.使用6位数码管显示测得的温度b.最高位为符号位,如果温度值为正,不显示,如果温度为负,则显示负号c.第2—4位显示温度值的整数部分,并在第4位数据上显示小数点d.第5位显示一位小数e.最低位显示摄氏度符号“C”3.DS18B20数字温度传感器概述DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点:a.只要求一个端口即可实现通信。
b.在DS18B20中的每个器件上都有独一无二的序列号。
c.实际应用中不需要外部任何元器件即可实现测温。
d.测量温度范围在-55。
C到+125。
C之间。
e.数字温度计的分辨率用户可以从9位到12位选择。
f.内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见图4-2,其引脚功能描述见表4-1。
单总线温度传感器DS18B20简介DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。
它具有3引脚TO-92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS18B20外形及引脚说明外形及引脚如图2所示:图2 管脚排列图在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:1(GND):地2(DQ):单线运用的数据输入输出引脚3(VDD):可选的电源引脚DS18B20工作过程及时序DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
电子综合实践设计报告专业班级:学生姓名:指导教师:设计时间:物理与通信电子学院摘要DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小、低功耗、高精度、抗干扰能力强等特点的数字温度传感器。
本设计采用多点测温方法,在一个IO口上挂接多个DS18B20测温,在远距离工作时,为了防止信号的衰减,DS18B20用屏蔽双绞线包裹,远端接地的方法工作,并把所测得的温度在LCD上显示出来。
文中简要的介绍了DS18B20的基本特点、引脚功能、测温原理及时序的控制。
给出了DS18B20的使用电路、使用中的注意事项、硬件及软件设计方法。
经过测试,该系统的测量精度及速度等指标均能满足设计要求。
关键词:DS18B20 测温系统数字温度传感器多点测温目录摘要 (2)1 引言 (4)2 设计要求 (4)3 方案设计与原理 (4)3.1 DS18B20 简介 (4)3.1.1 DS18B20特性 (4)3.1.2说明: (5)3.1.3 DS18B20测温原理: (5)3.1.4 DS18B20测温原理图: (6)3.1.5 64位激光刻ROM (7)3.1.6 CRC发生器 (7)3.1.7 单总线系统 (7)3.2 DS18B20指令控制 (7)3.2.1 ROM时序指令控制 (8)3.2.2DS18B20功能指令控制 (8)3.3 18B20时序详解 (9)3.3.1初始化时序 (9)3.3.2读/写时序 (9)3.4二叉树遍历 (11)4 设计程序流程图: (16)5 设计硬件原理图 (17)6 DS18B20使用中应注意事项 (18)7测试中出现的问题及解决办法和说明: (18)8 结束语 (19)9 参考文献: (20)10 附录: (21)1 引言本系统利用DS18B20进行测温,基于单片机AT89S52进行温度控制,具有硬件电路简单,控温精度高、功能强,体积小,简单灵活等优点,可以应用于控制温度在-55℃到+125℃之间的各种场合,可以实现温度的实时采集、显示功能。
DS18B20 水温控制系统(全)上个月参加的学校的电子设计大赛,说真的,参加完除了没有感受之外,剩下的感受就是很累。
我是计算机科学与技术学院的,按道理说电子大赛和我的专业根本就不怎么挂钩,不过我还是在同学的督促下“上当”了。
学校的那个信息工程的老师很奇怪,对我们专业好像及其有偏见,也怪不得他被扯下来,不让他教书了。
对我们也是非常有意见,讲说的那天,也是专门和我们做对。
这个温度控制,是用最小系统板做的。
因为我们不会硬件电路一些焊接等。
所以就找了个系统板来做.代码用了36个小时,文档用了18个小时完成。
差不多90%都是自己做的,所以我才说累。
由于代码是汇编做的,我是用Keil来调试代码的,还好最小系统板ME300B有在线仿真功能。
不过也调试了几乎100多次。
做完这个,学校还算给面子,应付我们一个三等奖。
然后他们大赛选一批人去北京培训,然后回来参加广东省的电子大赛,呵呵,当然我是被选上了,但是我从一开始不怎么想做这个,所以我不怎么想去,后来金山公司的暑假实习培训,录取了我,所以我就爽快的拒绝了去北京的那件事。
现在我觉得自己的决定还是很明智的。
呵呵,我只想做自己喜欢做的。
单片机是今年刚刚学的,然后就可以作出这么一个东西来,我觉得自己的脑子还好,至少吸收掌握的比较快,估计和我的基础有关系吧。
但是我的兴趣仍然是高级编程,Windows编程,毕竟自己学了很久了。
不想就这么放弃。
好废话不多说了,这个文档是我花了一个小时整理到博客上的,我觉得这个博客还是非常的COOL的,竟然没有字数限制。
呵呵喜欢。
以后就用你了。
这是我第一篇发表的文章,还希望大家多多留言,提出宝贵的意见。
目录一.引言...二.设计目的...三.系统功能...四.系统设备...五.温度控制总体方案与原理...1.系统模块图...2.系统模块总关系图...六.温度转换核心及其算法...1.温度传感器DS18B20原理与特性...DSl8B20的管脚及特点...DS18B20的内部结构...DS18B20的内存结构...DS18B20的测温功能...DSl820工作过程中的协议...温度传感器与单片机通讯时序...2.温度转换算法及分析...七.硬件设计说明...1.系统总体电路图...2.各个模块电路图...输入系统...输出系统...芯片系统...八.软件设计说明...1.总模块的流程图...2.各个模块的流程图...读取温度DS18B20模块的流程...键盘扫描处理流程...九.操作指引...按键功能...显示温度...设定温度...十.参考文献...程序源代码...一.引言在一些温控系统中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成A/D转换器能接收的模拟量,再经过采样/保持电路进行A/D转换,最终送入单片机及其相应的外围电路,完成监控。
DS18B20和ADC0832共同使用DS18B20是一款数字温度传感器,它采用单总线接口进行通信,只需要一个引脚就能完成数据的传输。
它具有精确的温度测量能力,温度范围为-55℃到+125℃,精度可达±0.5℃。
DS18B20芯片内部有一个ROM存储器,用于存储每个传感器的唯一序列号,可以通过读取序列号来区分不同的传感器。
ADC0832是一款8位模数转换器,它可以将模拟信号转换为数字信号。
ADC0832具有2个模拟输入通道和1个数字输出接口。
它采用串行通信方式与主控芯片进行数据传输,通过配置转换通道和启动转换命令,可以实现对模拟信号的采样和转换。
ADC0832具有较高的转换精度和采样速率,适用于多种数据采集和测量应用。
我们可以将DS18B20和ADC0832结合起来,实现对温度进行采集和转换。
具体实现步骤如下:1. 连接硬件:将DS18B20和ADC0832与主控芯片(如Arduino)连接。
DS18B20通过单总线接口连接到主控芯片的数字引脚,ADC0832通过串行通信接口连接到主控芯片的数字引脚。
确保连接正确,使得主控芯片能够与两个芯片进行通信。
2.初始化DS18B20:在程序中初始化DS18B20传感器,读取每个传感器的唯一序列号,并将其保存在变量中以供后续使用。
可以使用DS18B20的相关库函数来完成这些操作。
3.初始化ADC0832:在程序中初始化ADC0832,配置转换通道和采样参数。
可以使用ADC0832的相关库函数来完成这些操作。
4.温度采集:通过对DS18B20传感器发送读取温度的命令,获取温度值。
可以使用DS18B20的相关库函数来实现温度的读取。
5.模拟信号采集:通过对ADC0832发送启动转换的命令,开始模拟信号的采样和转换。
等待转换完成后,通过读取ADC0832的输出接口,获取转换后的数字信号。
可以使用ADC0832的相关库函数来实现这些操作。
6.数据处理:将获取到的温度值和模拟信号进行处理,可以进行数据显示、保存、传输等操作。
第7章DS18B20温度传感器7.1 温度传感器概述温度传感器是各种传感器中最常用的一种,早起使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的阻值也发生线性变化,用处理器采集电阻两端的电压,然后根据某个公式就可以计算出当前环境温度。
随着科技的进步,现代的温度传感器已经走向数字化,外形小,接口简单,广泛应用在生产实践的各个领域,为我们的生活提供便利。
随着现代仪器的发展,微型化、集成化、数字化、正成为传感器发展的一个重要方向。
美国DALLS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即单片机接口仅需占用一个I/O端口,无需任何外部元件,直接将环境温度转化为数字信号,以数码方式串行输出,从而大大简化了传感器与微处理器的接口。
7.2 DS18B20温度传感器介绍DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
1.DS18B20温度传感器的特性①独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
②在使用中不需要任何外围元件。
③可用数据线供电,电压范围:+3.0~ +5.5 V。
④测温范围:-55 ~+125 ℃。
固有测温分辨率为0.5 ℃。
⑤通过编程可实现9~12位的数字读数方式。
本程序为ds18b20的多路温度采集程序,是我自己参考其他程序后改写而成,可显示4路正负温度值,并有上下限温度报警(声音、灯光报警)。
欧阳引擎(2021.01.01)亲测,更改端口即可使用。
(主要器件:51单片机,ds18b20,lcd显示器)附有proteus仿真图,及序列号采集程序/****上限62度下限-20度****/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit ds=P1^1;sbit rs=P1^4;sbit e=P1^6;sbit sp=P1^0;sbit d1=P1^2;sbit d2=P1^3;uchar lcdrom[4][8]={{0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e}, {0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9},{0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0},{0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7}}; unsigned char code table0[]={"TEMPERARTURE:U "}; unsigned char code table1[]={"0123456789ABCDEF"};int f[4];int tvalue;float ftvalue;uint warnl=320;uint warnh=992;/****lcd程序****/void delayms(uint ms)//延时{uint i,j;for(i=ms;i>0;i--)for(j=110;j>0;j--);}void wrcom(uchar com)//写指令{delayms(1);rs=0;P3=com;delayms(1);e=1;delayms(1);e=0;}void wrdat(uchar dat)//写数据{rs=1;e=0;P3=dat;delayms(5);e=1;delayms(5);e=0;}void lcdinit()//初始化lcd{delayms(15);wrcom(0x38);delayms(5); wrcom(0x0c);delayms(5); wrcom(0x06);delayms(5);wrcom(0x01);delayms(5); }void display(uchar *p)//显示{while(*p!='\0'){wrdat(*p);p++;delayms(1);}}displayinit()//初始化显示{lcdinit();wrcom(0x80);display(table0);}/****ds18b20程序****/ void dsrst()//ds18b20复位{uint i;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bit dsrd0()//读一位数据{uint i;bit dat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return(dat);}uchar dsrd()//读1个字节数据{uchar i,j,dat;dat=0;for(i=8;i>0;i--){j=dsrd0();dat=(j<<7)|(dat>>1);}return(dat);}void dswr(uchar dat)//写数据{uint i;uchar j;bit testb;for(j=8;j>0;j--){testb=dat&0x01;dat=dat>>1;if(testb){ds=0;i++;i++;ds=1;i=8;while(i>0)i--;}else{ds=0;i=8;while(i>0)i--;ds=1;i++;i++;}}}void tmstart()//初始化ds18b20{sp=1;d1=1;d2=1;dsrst();delayms(1);dswr(0xcc);dswr(0x44);}void read_dealtemp()//读取并处理温度{uchar i,j,t;uchar a,b;for(j=0;j<4;j++){dsrst();delayms(1);dswr(0x55);for(i=0;i<8;i++){dswr(lcdrom[j][i]);//发送64位序列号}dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0){d1=1;tvalue=~tvalue+1;wrcom(0xc0);wrdat(0x2d);if(tvalue>warnl){d2=0;sp=0;}else{d2=1;sp=1;}}else{d2=1;wrcom(0xc0); wrdat(' ');if(tvalue>warnh) {d1=0;sp=0;}else{d1=1;sp=1;}}if(j==0){wrcom(0x8e); wrdat('2'); }if(j==1){wrcom(0x8e); wrdat('3');}if(j==2){wrcom(0x8e); wrdat('4');}if(j==3){wrcom(0x8e);wrdat('5');}ftvalue=tvalue*0.0625;tvalue=ftvalue*10+0.5;ftvalue=ftvalue+0.05;f[j]=tvalue;//温度扩大十倍,精确到一位小数tvalue=f[j];t=tvalue/1000;wrcom(0x80+0x41);wrdat(table1[t]);//显示百位t=tvalue%1000/100;wrdat(table1[t]);//显示十位t=tvalue%100/10;wrdat(table1[t]);//显示个位wrdat(0x2e); //显示小数点儿t=tvalue%10/1;wrdat(table1[t]);//显示小数位delayms(5000);}}/****主函数****/void main(){d1=1;d2=1;sp=1;displayinit();//初始化显示while(1){tmstart();//初始化read_dealtemp();//读取温度}}/****序列号读取程序****/#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit DQ = P1^1; //温度传感器信号线sbit rs = P1^4; //LCD数据/命令选择端(H/L)位声明sbit lcden = P1^6; //LCD使能信号端位声明void delay(uint z); //延时函数void DS18B20_Reset(void); //DQ18B20复位,初始化函数bit DS18B20_Readbit(void); //读1位数据函数uchar DS18B20_ReadByte(void); //读1个字节数据函数void DS18B20_WriteByte(uchar dat); //向DQ18B20写一个字节数据函数void LCD_WriteCom(uchar com); //1602液晶命令写入函数void LCD_WriteData(uchar dat); //1602液晶数据写入函数void LCD_Init(); //LCD初始化函数void Display18B20Rom(char Rom); //显示18B20序列号函数/**********************************************//* 主函数 *//**********************************************/void main(){ uchar a,b,c,d,e,f,g,h;LCD_Init();DS18B20_Reset();delay(1);DS18B20_WriteByte(0x33);delay(1);a = DS18B20_ReadByte();b = DS18B20_ReadByte();c = DS18B20_ReadByte();d = DS18B20_ReadByte();e = DS18B20_ReadByte();f = DS18B20_ReadByte();g = DS18B20_ReadByte();h = DS18B20_ReadByte();LCD_WriteCom(0x80+0x40);Display18B20Rom(h);Display18B20Rom(g);Display18B20Rom(f);Display18B20Rom(e);Display18B20Rom(d);Display18B20Rom(c);Display18B20Rom(b);Display18B20Rom(a);while(1);}/***************************************************//* 延时函数:void delay() *//* 功能:延时函数*//***************************************************/void delay(uint z)//延时函数{uint x,y;for( x = z; x > 0; x-- )for( y = 110; y > 0; y-- );}/***************************************************//* DS18B20函数:void DS18B20_Reset() *//* 功能:复位18B20 *//***************************************************/void DS18B20_Reset(void)//DQ18B20复位,初始化函数{uint i;DQ = 0;i = 103;while( i > 0 ) i--;DQ = 1;i = 4;while( i > 0 ) i--;}/***************************************************//* DS18B20函数:void DS18B20_Readbit() *//* 功能:读1个字节数据函数*//***************************************************/bit DS18B20_Readbit(void) //读1位数据函数{uint i;bit dat;DQ = 0;i++; //i++起延时作用DQ = 1;i++;i++;dat = DQ;i = 8;while( i > 0 )i--;return( dat );}/***************************************************//* DS18B20函数:void DS18B20_ReadByte() *//* 功能:读1个字节数据函数*//***************************************************/uchar DS18B20_ReadByte(void) //读1个字节数据函数{uchar i,j,dat;dat = 0;for( i = 1; i <= 8; i++ ){j = DS18B20_Readbit();dat = ( j << 7 ) | ( dat >> 1 );}return(dat);}/***************************************************//* DS18B20函数:void DS18B20_WriteByte() *//* 功能:向DQ18B20写一个字节数据函数*//***************************************************/void DS18B20_WriteByte(uchar dat) //向DQ18B20写一个字节数据函数{uint i;uchar j;bit testb;for( j=1; j<=8; j++){testb = dat&0x01;dat= dat>>1;if(testb) //写1{DQ = 0;i++;i++;DQ = 1;i = 8;while(i>0)i--;}else{DQ = 0; //写0i = 8;while(i>0)i--;DQ = 1;i++;i++;}}}/***********************************************//* LCD函数:void LCD_WriteCom() *//* 功能:向LCD写入命令 */ /***********************************************/void LCD_WriteCom(uchar com){rs = 0;P3= com;delay(5);lcden = 0;delay(5);lcden = 1;delay(5);lcden = 0;}/***********************************************//* LCD函数:void LCD_WriteData(uchar dat) */ /* 功能:向LCD写入数据 *//***********************************************/void LCD_WriteData(uchar dat){rs = 1; //选择LCD为写入数据状态lcden = 0;P3= dat; //将待写入数据放到总线上delay(5);lcden = 1; //给LCD使能端一个脉冲delay(5); //信号将之前放到总线上lcden = 0; //的数据写入LCDdelay(5);}/***********************************************//* LCD函数:void LCD_Init() *//* 功能:初始化LCD,设定LCD的初始状态*//***********************************************/void LCD_Init(){LCD_WriteCom(0x38); //LCD显示模式设定delay(15);LCD_WriteCom(0x08); //关闭LCD显示delay(3);LCD_WriteCom(0x01); //LCD显示清屏delay(3);LCD_WriteCom(0x06); //设定光标地址指针为自动加1delay(3);LCD_WriteCom(0x0c); //打开LCD显示,但不显示光标}/**********************************************//* *//* 显示18B20序列号 *//* *//**********************************************/void Display18B20Rom(char Rom){uchar h,l;l = Rom & 0x0f; //取低4位h = Rom & 0xf0; //取高4位h >>= 4;if( ( h >= 0x00 )&&( h <= 0x09 ) )LCD_WriteData(h+0x30); //取ASCII码 elseLCD_WriteData(h+0x37); //取ASCII码 if( ( l >= 0x00 )&&( l <= 0x09 ) )LCD_WriteData(l+0x30); //取ASCII码 elseLCD_WriteData(l+0x37); //取ASCII码}。
• 178•基于DS18B20设计的一种智能温度控制系统,它能够很好的对多点温度进行监控和控制,然后得知定点的温度情况,从而达生产中一定的要求。
其中,用单片机来作为主导器件,DS18B20数字温度传感器进行温度的转换,来实现一种真正意义上的智能温度控制。
在日常的工业、农业和日常的生活中,对于温度的控制有着十分重要的作用。
温度的控制,表现在生活的方方面面,例如家电,材料,化工,汽车,农业...等电子电力等,在很多的工业相关单位,怎样去提升温度控制对象的运行能力,一直以来都是需要面临的重要问题,然而,传统的仪器又存基于DS18B20的智能温度控制系统大连理工大学城市学院 孟萧振 宁秋月 姜 宁 裴若男 谢印庆图2 系统PCB板图图1 系统结构图• 179•图3 流程图在各种各样的问题。
很多情况下,传统的温度控制设备表现为性能不好,很多时候甚至会出现失控现象。
而我们设计的基于DS18B20智能温度控制系统,可以使得温度的测量更加精确,减少了很多连线连线的麻烦,很大程度上提升了仪器的使用性能。
与此同时成本也比较低,使用起来也十分方便,可以很好地满足工业和生活的需要,成为一种生活的温度控制利器。
1 系统总体设计系统由温度传感器,报警电路,LED显示电路,键盘控制,A T89S52组成。
智能温度控制系统,利用单片机和较高精度传感器进行结合。
即可以通过单片机来实现对系统的控制,包括对信号分析处理,通过前面的温度传感器去采集和转换信号。
此过程相对于通过FPGA/CPLD方式进行信号的采集转换过程灵活性较强,控制精确度高,调试也相对比较方便,可以很好地使功能得以实现。
系统结构框图如图1所示。
2 系统的硬件设计2.1 DS18B20温度传感器DS18B20温度传感器可以进行多种封装形式,信号的输出为数字信号,体积比较小,在抗干扰能力方面比较强,同时精确度比较高,硬件的开销也比较低。
并且DS18B20温度传感器还适应于跟很多种情况,可以根据不同的场合进行不同的外观改造,从而可以使其应用于不同的场合。
18B20温度传感器应用解析温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。
超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。
对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。
了解其工作原理和应用可以拓宽您对单片机开发的思路。
DS18B20的主要特征:?? 全数字温度转换及输出。
?? 先进的单总线数据通信。
?? 最高12位分辨率,精度可达土0.5摄氏度。
?? 12位分辨率时的最大工作周期为750毫秒。
?? 可选择寄生工作方式。
?? 检测温度范围为–55°C ~+125°C (–67°F ~+257°F)?? 内置EEPROM,限温报警功能。
?? 64位光刻ROM,内置产品序列号,方便多机挂接。
?? 多样封装形式,适应不同硬件系统。
DS18B20芯片封装结构:DS18B20引脚功能:·GND 电压地 ·DQ 单数据总线 ·VDD 电源电压 ·NC 空引脚DS18B20工作原理及应用:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。
18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由用户更改。
DS18B20共64位ROM。
RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。