基于单片机的智能温度计的设计_第1页
基于单片机的智能温度计的设计_第2页
基于单片机的智能温度计的设计_第3页
基于单片机的智能温度计的设计_第4页
基于单片机的智能温度计的设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学课程设计专用纸分院信息科学与工程学院专业自动化学生姓名学号设计题目基于单片机的智能温度计的设计内容及要求:1. 基于单片机和DS18B20的智能温度计的设计;2. 采用是非接触的温度测量系统;3. 通过这个课程的设计对单片机加深了认识和理解;4. 由于此课设是两个人共同完成的,让我体会到合作分工的精神;5. 单片机设计系统的接线力求简单灵活,便以操作维护和今后系统的使用。 进度及安排:1确定课设的题目并熟悉其中所所涉及的内容(1天);2. 图书馆查资料确定设计的方案和学习使用软件keil3和proteus(2天);3. 把确定的方案通过一系列的程序设计来实现设计的初衷,完成报告(2

2、天)。指导教师(签字): 年 月 日分院院长(签字): 年 月 日摘要 随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用AT89C52型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD7SEG-MPX8CABLUE实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳

3、定,线性度较好,在0100最大线性偏差小于0.01。该器件可直接向单片机传输数字信号,便于单片机处理及控制。沈阳理工大学 目录基于单片机的智能温度计的设计11. 实现方法12 .DS18B20简单介绍22.1 DS18B20 的性能特点如下:22.2 DS18B20使用中的注意事项32.3 DS18B20内部结构42.4 DS18B20测温原理63 软件设计:83.1 DS18B20初始化程序:103.2 DS18B20写一个字节:133.3 获取温度:144 单片机的程序设计:155 总结:206参考文献21 沈阳理工大学 基于单片机的智能温度计的设计1. 实现方法采用数字温度芯片DS18B

4、20 测量温度,输出信号全数字化。采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,它直接输出温度的数字信号,也可直接与计算机连接。采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限温度。该系统扩展性非常强。该测温系统电路简单、精确度较高、实现方便、软件设计也比较简单。系统框图如图1所示。时钟振荡电路AT89C51复位电路电源电路LED显示DS1

5、8B20温度传感器图1 DS18B20温度测温系统框图2 .DS18B20简单介绍DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个

6、DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。2.1 DS18B20 的性能特点如下:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内适应电压范围更宽,电压范

7、围:3.05.5V,在寄生电源方式下可由数据线供电温范围55125,在-10+85时精度为±0.5零待机功耗可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快用户可定义报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力负电压特性,电源极性接反时,温度计不会因发热而烧毁,

8、但不能正常工作以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图12所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。图 12 外部封装形式2.2 DS18B20使用中的注意事项DS18B20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:DS18

9、B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。在实际使用中发现,应使电源电压保持在5V 左右,若电源电压过低,会使所测得的温度精度降低。较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。在DS18B20的有关资料中均未提及单总线上所挂DS18B20 数量问题,容易使人误认为可以挂任意多个DS18B20,

10、在实际应用中并非如此,当单总线上所挂DS18B20 超过8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。在DS18B20测温程序设计中,向DS18B20 发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20 接触不好或断线,当程序读该DS18B20 时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。2.3 DS18B20内部结构图13为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定

11、的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。DS18B20采用3脚PR35 封装或8脚SOIC封装,其内部结构框图如图 6所示图 13DS18B20内部结构框图64 b闪速ROM的结构如下:8bit检验CRC48bit序列号8bit工厂代码(10H)MSBLSBMSBLSBMSBLSB开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48 位,最后8位是前面56 位的CRC 检验码,这也是多个DS18B20 可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。主机操作ROM的命令有五种,如表所列指  令说&

12、#160; 明读ROM(33H)读DS1820的序列号匹配ROM(55H)继读完64位序列号的一个命令,用于多个DS1820时定位跳过ROM(CCH)此命令执行后的存储器操作将针对在线的所有DS1820搜ROM(F0H)识别总线上各器件的编码,为操作各器件作好准备报警搜索(ECH)仅温度越限的器件对此命令作出响应DS18B20 温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM 的结构为字节的存储器,结构如图14所示。便笺式存储器(上电状态)温度测量值LSB(50H)温度测量值MSB(50HTH高温寄存器TL低温寄存器配位寄存器预留(FFH)预留(OC

13、H)预留(IOH)循环冗余码校验(CRC)E2PROM(85)Byte0Byte1TH高温寄存器TL低温寄存器配位寄存器Byte2Byte3Byte4Byte5Byte6Byte7Byte8 图 14 高速暂存RAM结构图前2个字节包含测得的温度信息,第3和第4字节和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。温度低位温度高位THTL配置保留保留保留8位CRCLSB MSB当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补

14、码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 /LSB形式表示。温度值格式如下:232221202-12-22-32-4 MSB LSBSSSSS262524MSB LSB这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。图中,S表示位。对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直

15、接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625LSB形式表示。表2是部分温度值对应的二进制温度表示数据。表2 部分温度值温度/二进制表示十六进制表示+12500000111 1101000007D0H+25.062500000001 100100010191H+0.500000000 00

16、0010000008H000000000 000000000000H-0.511111111 11111000FFF8H-25.062511111110 01101111FE6FH-5511111100 10010000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前 56位来计算CRC值,并和存入DS18B20中的C

17、RC值做比较,以判断主机收到的ROM数 据是否正确。2.4 DS18B20测温原理DS18B20的测温原理如图15所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低

18、温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操

19、作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。预置斜率累加器比较低温度系数振荡器计数器1温度寄存器Tx预置=0高温度系数振荡器-0计数器2T1加1停止T2图15 DS18B20测温原理图在正常测温情况下,DS1820的测温分辨力为0.5,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25、0.75为进位

20、界限的关系,实际温度Ts可用下式计算:Ts=(Tz-0.25)+(CD-Cs)/CD3 软件设计: 系统程序主要包括主程序、读取温度子程序、数据转换子程序、显示数据子程序等。 3.1主程序:主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值。 图16 主程序流程图3.2 DS18B20初始化程序: 所有操作都必须由初始化脉冲开始,波形如图,单片机先输出一个480960us低电平到DQ引脚,再将DQ引脚置高电平,过1560us后检测DQ引脚状态,若为低电平则DS18B20工作正常,否则初始化失败,不能正常测量温度。 3.3 DS18B20读一个字节 : 图18 DS

21、18B20读一个字节流程图 3.4 DS18B20写一个字节: 图19 DS18B20写一个字节流程图 3.5 获取温度: 图20 获取温度的流程图4 单片机的程序设计:#include<reg52.h>typedef unsigned char uchar;typedef unsigned int uint;sbit DQ=P30;sbit DLE=P31; /段选sbit WLE=P32; /位选uchar code tablewei8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; /*数码管07*/uchar code tableduan=

22、0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/*数字09*/uchar temp; uint bai,shi,ge,t;/*数码管延时函数*/void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*DS18B20延时函数*/void delayDS18B20(uint i)while(i-);/*DS18b20初始化函数*/void Init_DS18B20() unsigned char x=0; DQ = 1; /DQ复位 delayDS18B20(8);

23、 /稍做延时 DQ = 0; /单片机将DQ拉低 delayDS18B20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delayDS18B20(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delayDS18B20(20);/*DS18b20读一个字节*/ uchar ReadByteDS18B20()uint i=0;uchar date=0;for(i=0;i<8;i+) DQ=0; / 给脉冲信号 date>>=1; DQ=1; / 给脉冲信号 if(DQ) date|=0x80; delayDS18B20(4

24、); return(date);/*ds18b20写一个字节*/ void WriteByteDS18B20(uchar date) uint i=0; for (i=0;i<8;i+) DQ=0; DQ=date&0x01; delayDS18B20(5); DQ=1; date>>=1; /*读取ds18b20当前温度*/void Get_Temperature() uchar a,b;Init_DS18B20();WriteByteDS18B20(0xcc); / 跳过读序号列号的操作WriteByteDS18B20(0x44); / 启动温度转换 delayD

25、S18B20(100); /这个延时非常重要,Init_DS18B20();WriteByteDS18B20(0xcc); /跳过读序号列号的操作WriteByteDS18B20(0xbe); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delayDS18B20(100);a=ReadByteDS18B20(); /读取温度值低位b=ReadByteDS18B20(); /读取温度值高位if(!(b&0xf8) /*二进制中的前面五位是符号位,如果测得温度大于0,这五位是0*/temp=(a>>4)|(b<<4); /正数的算法t=0;elsetemp

26、=(a>>4)|(b<<4)+1; /负数的算法,测到的数值取反后加1t=1;void main()while(1)Get_Temperature();bai=temp/100;shi=temp%100/10;ge=temp%10;if(t=0) /如果是正数WLE=0;P1=tablewei4;WLE=1;DLE=0;P2=tableduanbai;DLE=1;delay(5);WLE=0;P1=tablewei5;WLE=1;DLE=0;P2=tableduanshi;DLE=1;delay(5);WLE=0;P1=tablewei6;WLE=1;DLE=0;P2=tableduange-0x80; /加小数点DLE=1;delay(5);WLE=0;P1=tablewei7;WLE=1;DLE=0;P2=0xc0;DLE=1;delay(5);if(t=1)/如果是负数WLE=0;P1=tablewei3;WLE=1;DLE=0;P2=0xbf;DLE=1;delay(5);WLE=0;P1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论