数字温度计活页教材_第1页
数字温度计活页教材_第2页
数字温度计活页教材_第3页
数字温度计活页教材_第4页
数字温度计活页教材_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、微控制器(微控制器)控制技术理实一体化教材项目五 测控仪表徐广振潍坊职业学院Micro Controller Unit (MCU) Control TechnologyIntegration of Theory & Practice of Teaching MaterialsThe fifth project Measure & Control InstrumentGuangzhen XuWeifang vocational college项目五 测控仪表在日常生活和工业自动化控制中智能化仪表被越来越广泛的使用,用来实现对外界信息的采集与控制。但是测量的对象往往是连续变化的模拟

2、量,比如温度、压力、流量等物理量。 微控制器要能采集控制这些物理量一般需要相应传感器转换成数字信号后进行处理。本项目通过设计最基本简单的测量仪表来掌握微控制器在测空仪表中的应用。任务二 数字温度计明确任务:在工业控制、智能家居等领域的测量系统中,环境温度的测量和控制是非常普遍和重要的。为了能对温度进行检测,需要温度传感器,把温度转换成相应的电信号。常用的模拟量传感器主要是PT100等,但是需要设计人员进行微弱电信号处理,然后再进行AD转换,将数字信息传给微控制器进行处理,非常复杂。目前温度传感器正从模拟向数字方法转变,体积小使用方便,在很多场合已经代替了模拟式传感器。本任务利用数字式温度传感器

3、DS18B20制作一个数字温度计,利用LCD1602进行显示,精度1。知识链接:一、DS18B20简介图5.7 DS18B20封装DS18B20数字温度传感器是DALLAS公司生产的1Wire,即单总线器件,用它来组成一个测温系统,具有线路简单,体积小的特点。其全部传感元件及转换电路集成在形如一只三极管的集成电路内。另外1Wire总线协议,节省且经济,可以挂接多个传感器,组建网络。DS18B20引脚图如图5.7所示,引脚定义如下。l DQ为数字信号输入/输出端;l GND为电源地;l VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20特点如下。(1)适应电压范围更宽,电压范

4、围:3.05.5V,在寄生电源方式下可由数据线供电。(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范围55125,在-10+85时精度为±0.5 。(6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 。 

5、 (7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 。 (8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 。 (9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。二、DS18B20内部结构   DS18B20内部结构如图5.8所示,主要由四部分组成:64位光刻ROM、温度传感器、温度报警触发器TH和TL、配置寄存器。图5.8 DS18B20内部结构图

6、1、64位光刻ROM光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。2、温度传感器DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 如图5.9温度寄存器格式 图5.9 温度

7、寄存器格式这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。图5.10常用温度表3、DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和

8、低温度触发器TH、TL和结构寄存器。高速暂存存储器由9个字节组成,其分配如图5.11所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。微控制器可通过单线接口读到该数据,读取时低位在前,高位在后。数据格式如图5.9所示。图5.11 DS18B20存储器4、配置寄存器 配置寄存器结构各位的意义如下bit7 bit6bit5bit4bit3bit2bit1bit0TMR1R011111低5位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1

9、和R0用来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。图5.12 DS18B20的温度分辨率设置5、报警触发器TH和TLDS18B20完成一次温度转换后,就拿温度值与和存储在TH和TL中一个字节的用户自定义的报警预置值进行比较。标志位S指出温度值的正负:正数S=0,负数S=1。TH和TL寄存器是非易失性的,所以它们在掉电时仍然保存数据。TH和TL寄存器格式如图5.13。图5.13 TH和TL寄存器格式当TH和TL为8位寄存器时,温度寄存器中的11个位用来和TH、TL进行比较。如果测得的温度高于TH或低于TL,报警条件成立,DS18B20内部就会置位一个报警标识。每进行一次测温

10、就对这个标识进行一次更新;因此,如果报警条件不成立了,在下一次温度转换后报警标识将被移去。 总线控制器通过发出报警搜索命令 ECh 检测总线上所有的DS18B20报警标识。任何置位报警标识的DS18B20将响应这条命令,所以总线控制器能精确定位每一个满足报警条件的DS18B20。如果报警条件成立,而TH或T L的设置已经改变,另一个温度转换将重新确认报警条件。三、DS18B20通信指令根据DS18B20的通讯协议,微控制器控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行

11、预定的操作。复位要求主CPU将数据线下拉500us,然后释放。当DS18B20收到信号后等待1660us左右,后发出60240us的存在低脉冲,主CPU收到此信号表示复位成功。图5.14 DS18B20的ROM指令图5.15 DS18B20的RAM指令四、DS18B20时序DS18B20需要严格的单总线协议以确保数据的完整性。协议包括集中单总线信号类型:复位脉冲、存在脉冲、写0、写1、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。 1.初始化时序 和DS18B20间的任何通讯都需要以初始化序列开始,初始化序列见图5.16。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备

12、好发送和接收数据。 在初始化序列期间,总线控制器拉低总线并保持480us以发出TX一个复位脉冲,然后释放总线,进入接收状态RX。单总线由5 K上拉电阻拉到高电平。当DS18B20探测到I/O引脚上的上升沿后,等待1560us ,然后发出一个由60240us低电平信号构成的存在脉冲。 图5.16 初始化时序2.写时序由两种写时序:写1时序和写0时序。总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。所有写时序必须最少持续60us,包括两个写周期之间至少1us的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始,见图5.17。 总线控制器要生产一

13、个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的15us释放总线。当总线被释放的时候,5 K的上拉电阻将拉高总线。总控制器要生成一个写0时序,必须把数据线拉到低电平并持续保持(至少60us)。总线控制器初始化写时序后,DS18B20在一个15us到60us的窗口内对I / O线采样。如果线上是高电平,就是写1。如果线上是低电平,就是写0。图5.17 写时序3.读时序总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令BEH或读电源模式指令B4H后必须立刻开始读时序,DS18B20可以提供请求信息。除此之外,总线控制器在发出发送温度转换指令

14、 44H 或召回EEPROM指令B8H之后读时序。 所有读时序必须最少60us ,包括两个读周期间至少1us的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放。在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us内有效。因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状态。图5.18 读时序五、DS18B20供电方式1、DS18B20寄生电源供电方式如下面图5.19

15、所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量,在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。图5.19 DS18B20寄生电源供电方式独特的寄生电源方式有三个好处: 进行远距离测温时,无需本地电源;可以在没有常规电源的条件下读取ROM;电路更加简洁,仅用一根I/O口实现测温。 要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻

16、就无法提供足够的能量,会造成无法转换温度或温度误差极大。 因此,图5.19电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。2、DS18B20外部电源供电方式在外部电源供电方式下,如图5.20,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。图5.20

17、DS18B20外部电源供电方式外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。图5.21 DS18B20多点测温六、DS18B20应用举例1、总线上挂有多只寄生电源模式下的DS18B20,控制器对其中的一只操作启动温度转换,然后读取它的高速暂存器并重新计算CRC以确认数据。图5.22 多个寄生电源供电模式编程2、总线上仅由一个寄生电源模式下的DS18B20,控制器执行写存储器操作。图5.23 一个寄生电源模式下编程3、单个采用外部电源供电方式的DS18B20发出温度转换命令,并读取温度值。序号主机数据(LSB

18、在先)说明1TX复位复位脉冲2RX存在应答应答信号3TXCCH发出跳过ROM指令4TX44H发出温度转换指令5RX1个字节的数据读“忙”标志3次,直至数据为FFH6TX复位复位脉冲7RX存在应答应答脉冲8TXCCH发出跳过ROM指令9TXBEH读暂存存储器命令10RX9个字节的数据读暂存存储器以及CRC,并把计算得出的CRC和读出的CRC相比较。如果两者相符,数据有效,主机保存温度值。11TX复位复位脉冲12RX存在应答应答脉冲,操作完成任务实施:1.设计搭建硬件电路按照任务要求设计并搭建硬件电路及仿真环境。输出口可以任意选择。图5.7 数字温度计电路原理图2.搭建软件编程环境建立工程文件,保

19、存在桌面组号命名的文件夹内,配置工程参数,包括晶振频率12MHz、HEX文件输出配置。新建文件添加文件,准备编程。3.软件设计与编程实现(1)LCD1602显示驱动设计, 参见项目四。(2)利用DS18B20及LCD1602制作精度为1的数字温度计。#include <at89x51.h> / 包含头文件#include <string.h>sbit DQ=P23;/温度传感器sbit LCD_RS=P22;/1602rs 端sbit LCD_RW=P21;/1602rw端sbit LCD_EN=P20; /1602使能端unsigned char code data0

20、="0123456789"/*延时函数*/void delay1(unsigned int x) while(x-);void delay(unsigned int z)unsigned int x,y;for(x=z;x>0;x-)for(y=120;y>0;y-);/*LCD写指令*/void LCD_write_com(unsigned char com) LCD_RS=0;LCD_RW=0;LCD_EN=0;P1=com;LCD_EN=1;delay(5);LCD_EN=0;/*LCD写数据*/void LCD_write_data(unsigned c

21、har dat) LCD_RS=1;LCD_RW=0;LCD_EN=0;P1=dat;LCD_EN=1;delay(5);LCD_EN=0;/*液晶初始化*/void init_1602( )LCD_RS=0;LCD_RW=0;LCD_EN=0;LCD_write_com(0x38);LCD_write_com(0x0c);LCD_write_com(0x06);LCD_write_com(0x01);LCD_write_com(0x80); /*LCD显示*/void disp_string(unsigned char addr,char *string) unsigned char len

22、,i,k;len=strlen(string); if(addr<0x10) LCD_write_com(0x80+addr);for(i=0;i<len;i+)k=addr+i;if(k=0x10)LCD_write_com(0x80+0x40); LCD_write_data(*(string+i);k=0; elseLCD_write_com(addr-0x10+0xC0);for(i=0;i<len;i+)LCD_write_data(*(string+i);/* 18B20初始化*/void init_DS18B20( ) unsigned char x=0;DQ=

23、1;/DQ复位delay1(8);DQ=0; /将DQ拉高delay1(80);DQ=1; /拉高总线delay1(15);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay1(20);/*ds18b20读一个字节*/unsigned char DS18B20_read_byte( ) unsigned char i,dat;for(i=0;i<8;i+)DQ=0;dat>>=1;DQ=1;if(DQ)dat=dat|0x80;delay1(4); return dat; /*ds18b20写一个字节*/void DS18B20_write_byte(unsigned char dat) unsigned char i;for(i=0;i<8;i+)DQ=0;DQ=dat&0x01;delay1(5);DQ=1;dat>>=1; /*读取温度*/unsigned char DS18B20_read_C( )unsigned char di,gao,dat;init_DS18B20();DS18B20_write_byte(0xcc);/ 跳过读序号列号的操作DS1

温馨提示

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

评论

0/150

提交评论