温度传感器3资料_第1页
温度传感器3资料_第2页
温度传感器3资料_第3页
温度传感器3资料_第4页
温度传感器3资料_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、小型嵌入式综合电子系统开发(kif)与设计系统设计(shj) 与集成共六十九页教学(jio xu)过程4单线数字温度计DSl8B20介绍一DS18B20工作过程及时序二在LCD1602上显示温度采集数据三共六十九页 一、 单线(dnxin)数字温度计DSl8B20介绍 共六十九页1、ds18b20概述(i sh) 美国Dallas半导体公司的数字化温度传感器DS18B20是 “一线总线”接口的温度传感器。全部(qunb)传感元件及转换电路集成在形如一只三极管的集成电路内。共六十九页DS18B20 测量温度范围-55+125,在-10+85范围内,精度为0.5。现场温度直接以“一线总线”的数字方

2、式传输,使用户可以轻松的组建(z jin)传感器网络,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。共六十九页2、温度传感器外部(wib)特征图3-1 DS18B20 外观(wigun)及管脚图共六十九页从图3-1可以看出:DS18B20有三个管脚,分别为接地GND、电源Vdd、数据输入/输出DQ。DS18B20测得的温度(wnd)值是通过DQ端进行数据传输的,这也就是“一线总线”的数字方式传输。共六十九页3、Ds18b20 电路(dinl)接法图3-2 DS18B20 供电(n din)方式共六十九页如图3-2所示,每只DS18B

3、20都可以设置成两种供电方式(fngsh),即数据总线供电方式(fngsh)和外部供电方式(fngsh)。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长;采取外部供电方式,则多用一根导线但测量速度较快。共六十九页任务1 焊接DS18B20相关(xinggun)电路共六十九页4、ds18b20 内部结构四部分构成:电源模块、64位ROM和单总线接口、控制(kngzh)模块和存储器模块共六十九页4、ds18b20 内部结构Ds18b20 的内部(nib)存储资源分布如下:共六十九页在芯片内部光刻了一个长度为64bit的ROM,这个编码是器件的身份识别标志。可用于多点温度控制系统(k

4、n zh x tn)。如下图,其中 MSB为最高有效位,LSB为最低有效位ROM共六十九页序号高速存储器RAM0温度值低位1温度值高位2高温报警寄存器3低温报警寄存器4配置寄存器5保留6保留7保留8CRC校验字节RAM共六十九页RAM由9个字节组成,包含8个连续字节;前两个字节是测得的温度信息,第0个字节的内容是温度的低八位,第一个字节是温度的高八位。输出时先低8位,再高8位。第二个和第三个是温度高限TH、温度低限TL暂存区;第四个字节是配置寄存器暂存区,第5、6、7字节是系统保留(boli),就相当于运算内存。第8个字节对前面的字节进行校验共六十九页 以12位精度(jn d)为例最高位为符号

5、位。正温度S=0,负温度S=1,存放的是补码。因此当测得的温度是负数时,应作补码到原码的转换才能得到相应的负温度值。其他(qt)依此类推从温度RAM中读出数据后要作右移4位即除以16或乘0.0625(2-4)才可得到实际温度;如果温度小于0,测到的数值需要取反加1(或减1取反)再乘于0.0625即可得到实际温度。传感器内部温度表示?共六十九页传感器内部温度(wnd)表示?如DS18B20用12位存贮温值度,最高位为符号(fho)位。负温度S=1正温度S=0如0550H为+850191H为25.0625 FC90H为-55 共六十九页报警(bo jng)值高、低限 在RAM的第2、3、4字节和E

6、EPROM的三个字节是对应的,内容是相同的,只是RAM因为是暂存器,失电后数据就丢失了。EEPROM是电擦除只读存储器,失电后数据不丢失。 在工作时得到复位命令后就从EEPROM复制一份数据到RAM的第2、3、4字节内,作为我们进行(jnxng)报警搜索、改写报警值和改写器件设置用,我们从外部只能对RAM进行操作,EEPROM只能从RAM复制而得到要保存的数据。共六十九页配置(pizh)寄存器第4字节的配置寄存器是用来设置DS18B20的工作模式(msh)和测量精度的,其内容如下图:低五位一直都是“1”,TM是测试模式位,出厂时被设置为0,用户不要去改动。共六十九页配置(pizh)寄存器R1R

7、0分辨率转换时间00993ms0110187ms1011375ms1112750msR1和R0用来设置(shzh)分辨率,(DS18B20出厂时被设置为12位),改动后,需要保存这种设置时,要用一条复制命令复制到EPROM中共六十九页EEPROM只有三个字节,和RAM的第2、3、4字节的内容相对应,它的作用就是(jish)存储RAM第2、3、4字节的内容,以使这些数据在掉电后不丢失。EEPROM:共六十九页5、DS18B20操作(cozu)指令DS18B20 指令(zhlng)分为2种:对ROM 操作对RAM操作共六十九页如何向芯片写入下列(xili)命令呢?共六十九页RAM指令(zhlng)

8、又是如何写入呢?共六十九页6、如何实现(shxin)一次简单的温度转换功能?根据DS18B20的通讯协议,主机(zhj)(单片机)控制DS18B20完成一次操作经过以下步骤:首先要对DS18B20进行初始化操作跳过ROM 启动芯片进行温度转换功能单片机对芯片ROM写入指令0CCH单片机对RAM写入命令44H,芯片开始进行温度转换释放总线至少一秒1s内芯片课完成温度转换工作。执行过程与芯片工作时序相对应共六十九页如何对ROM、RAM区域(qy)写入指令呢?如何读取DS18B20采集的温度值呢?共六十九页二、DSl820工作(gngzu)过程及时序共六十九页 DS18B20是单总线器件,通讯协议包

9、括几种单线信号类型(lixng):复位脉冲、存在脉冲、写0、写1、读0、读1。所有这些信号,除存在脉冲外,其余都是由总线控制器(单片机)发出的。共六十九页1、对DS18B20进行(jnxng)初始化复位操作图3-2 初始化时序(sh x)共六十九页对DS18B20进行初始化复位(f wi)操作从图3-2,/让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动(qdng)可以看出从t0t1时刻开始,低电平持续480s,这是复位秒冲。 对应指令: t1时刻释放总线进入到接收状态DQ=0;delay_nus(600);DQ=1共六十九页对DS18B20进行(jnxng)初

10、始化复位操作DS18B20在检测到t1时刻的上升沿之后,等待60s,即t1t2时长。并在随后的240微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件(qjin)已做出应答。若无低电平出现一直都是高电平说明总线上无器件(qjin)应答。在图3-2中为虚线所示。while(DQ) ; /接收到存在脉冲信号,跳出循环 delay_nus(200);共六十九页复位过程:要求(yoqi)主机将数据线下拉480960us,然后释放,ds18b20在总线释放后1660us内发送一个存在脉冲,主机收到此信号表示复位成功.共六十九页初始化程序(chngx)void ds18b20_reset() DQ

11、 = 1;DQ = 0;/拉低总线delay_nus(600); /精确延时在480-960usDQ = 1;/总线释放(shfng)while(DQ); /等待存在脉冲,若为高电平,则一直等待delay_nus(200);共六十九页为了完成一次温度(wnd)转换功能,我们接着需要分别对ROM、RAM 进行读取操作。以命令44H为例:执行一次温度转换指令,要向RAM内写入44H=0100 0100 ,命令芯片开始工作。单线型芯片通信属于串行通信方式,也即是说,在一根数据线上单片机根据时序向芯片写入0100 0100 这一组二进制数,实现转换功能。共六十九页既然我们的指令是转换成二进制代码进行读

12、写的,那么我只需知道(zh do)如何向芯片写入“0”和“1” 即可实现所有命令功能。共六十九页2、写时序(sh x)图(2)写时间隙(jin x)图3-4 a为写“0”时序 b为写“1”时序ab共六十九页共六十九页时序(sh x)图分析从图3-4中,可以看出写时序开始时DQ都为高电平 ,t0时刻为高电平,此时(c sh)主机认为开始写入数据。从t0到t1时刻,共计60s,时间分为2段。第一个15s之内应将所需写的位送到总线上。此时,写入数据“0”DQ = 1;DQ = 0; 共六十九页DSl8B20在t0后15-60us间对总线采样(ci yn),若低电平写入的位是0,见图3-4 a;若高电

13、平写入的位是1,见图3-3 b连续写2位数据,间隙应大于1usdelay_nus(60);DQ = 1;_nop_();_nop_(); 共六十九页写0void ds18b20_write_bit0() DQ = 1;DQ = 0; /开始写时间(shjin)片delay_nus(60); /精确延时在60-120usDQ = 1;_nop_();_nop_(); /为下一次写做准备共六十九页任务(rn wu)2 KEIL中编写写“0”程序 编写写“1”程序共六十九页程序(chngx)编写void ds18b20_write_bit1() DQ = 1;DQ = 0; /开始写时间片_nop_

14、();_nop_();_nop_();_nop_();_nop_();DQ = 1; /释放(shfng)总线delay_nus(60);共六十九页写时序(sh x)总结 写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束(jish),然后释放总线为高电平。 若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则

15、为0。共六十九页3.读时序(sh x)共六十九页读时序(sh x)读时间隙(jin x)图3-4 读时序图共六十九页读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到(zhdo)读周期结束。若要送出1则释放总线为高电平。共六十九页bit ds18b20_read_bit() bit temp;DQ = 1;DQ = 0; /开始(kish)读时间片_nop_();_nop_();_nop_();DQ = 1; 共六十九页 _nop_();_nop_

16、();_nop_();temp = DQ; /主机开始(kish)采样delay_nus(60);return temp;共六十九页任务(rn wu)3KEIL中编写读位(“0”、“1”)程序共六十九页弄清了如何复位,如何写1写0和读1读0,我们现在就要看看在总线上如何进行实际的运用。请同学们自行编写函数(hnsh),如何写入一个字节?共六十九页4.写字节(z ji)最低位为0?向DS18B20写“0”向DS18B20写“1”数据右移1位8位数据写完?Y N NY共六十九页4.写字节(z ji)void ds18b20_write_byte(unsigned char byte) unsign

17、ed char i,temp;temp = byte;for(i = 0;i = 1;共六十九页读到的数据(shj)为1?向存储(cn ch)来自DS18B20的变量最高位写“1”数据右移1位8位数据读完? NY读字节Y N共六十九页读字节(z ji)unsigned char ds18b20_read_byte() bit bit_temp;unsigned char i,temp = 0;for(i = 0;i = 1;bit_temp = bs18b20_read_bit();if(bit_temp) temp |= 0 x80; return temp;共六十九页任务(rn wu)4K

18、EIL中编写写字节、读字节程序共六十九页首先(shuxin)要对DS18B20进行初始化操作跳过ROM 启动芯片进行温度(wnd)转换功能单片机对芯片ROM写入指令0CCH单片机对RAM写入命令44H,芯片开始进行温度转换释放总线至少一秒1s内芯片课完成温度转换工作。执行过程与芯片工作时序相对应完整的温度转换过程共六十九页首先(shuxin)要对DS18B20进行初始化操作跳过ROM 发送(f sn)命令读RAM温度数据单片机对芯片ROM写入指令0CCH单片机对RAM写入命令3EH,芯片开始进行温度转换接受来自DS18B20的两字节数据读两个字节数据执行过程与芯片工作时序相对应共六十九页至此,

19、一个完整的温度(wnd)转换过程,如下图所示 ds18b20_reset();ds18b20_write_byte(SKIP_ROM);ds18b20_write_byte(CONVER_T); /开始(kish)温度转换delay_nms(800); /温度转换时间共六十九页测得温度后存在什么地方?如何读取到温度值,处理(chl)读取到的温度值,并把它在LCD上显示?共六十九页任务5KEIL中编写读温度(wnd)程序共六十九页三、在LCD1602上显示温度(wnd)采集数据共六十九页温度(wnd)转换过程2、转换(zhunhun)温度共六十九页2、读取温度(wnd)值读取RAM内的温度(wn

20、d)数据 ds18b20_reset();ds18b20_write_byte(SKIP_ROM);ds18b20_write_byte(READ_SCRATCHPAD);共六十九页五、实时(sh sh)温度采集(读温度)程序设计初始设置(shzh),没有,按缺省Ds18b20_read_byte() 2次Ds18b20_write_byte(0 xcc)Ds18b20_reset()Ds18b20_write_byte(0 x44)Ds18b20_reset()Ds18b20_write_byte(0 xcc)Ds18b20_write_byte(0 xbe)Delay_nms(800)Ds18b20_reset()Write_byte(0 xcc)Ds18b20初始化从ds18b20读温度定义int型变量wenduzhi放温度值的高、低8位共16位共六十九页2、在LCD上进行(jnxng)显示void main() unsigned char xdata str10; ds18b20_init(); LCM_Init(); while(1) ds18b20_read_temp();sprintf

温馨提示

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

评论

0/150

提交评论