项目五任务4数字温度计_第1页
项目五任务4数字温度计_第2页
项目五任务4数字温度计_第3页
项目五任务4数字温度计_第4页
项目五任务4数字温度计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

项目五任务4DS18B20工作原理

一.任务描述介绍数字温度传感器DS18B20的工作原理,了解其内部结构及相关寄存器的使用方法。

二.DS18B20简介数字温度传感器DS18B20作为温度检测元件,硬件电路简单,节省系统成本并提高了系统可靠性。DS18B20主要具有以下特点:(1)采用单总线(1-wirebus)通信方式,仅需一条口线即可实现与单片机进行数据传输;(2)具有3引脚小体积封装方式,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(3)测温范围为-550C~+1250C;(4)电源供电范围为3.0~5.5V;(5)可编程为9~12位数字量输出(自带模数转换ADC);(6)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;(7)在每个DS18B20器件都有独一无二的序列号。表7-1

DS18B20详细引脚功能描述

三.DS18B20内部结构

1.引脚功能DS18B20为三引脚元件,外形同普通三极管,见右图,引脚功能详见表。

序号名称引脚功能描述1GND电源地2DQ为数据(数字信号)输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;3VDD为外接供电电源输入端(在寄生电源接线方式时此引脚必须接地)(1)64位ROM的位结构如下表所示。开始8位为产品类型编号,接着是每个器件的惟一序号,共有48位,最后8位是前面56位的CRC验证码。非易失性温度报警触发器TH与TL,可通过软件写入报警上下限。8位检验CRC48位序列号8位工厂代码(10H)MSBLSBMSBLSBMSBLSB2.DS18B20内部结构DS18B20主要由64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、及配置寄存器等组成。(2)9字节高速缓存存储器,结构如表7-2所示。寄存器内容字节地址温度LSB0温度MSB1TH用户字节12TL用户字节23配置寄存器4保留5保留6保留7表7-2高速缓存存储器结构第1、第2字节为所测温度信息;第3、第4字节为TH与TL的考贝,是易失性的,上电复位时被刷新;第5字节为配置寄存器,用于确定温度值的数字分辩率。该字节低5位始终为1,各位具体定义如下:TMR1R011111TM:测试模式位,该位已被设置为0R1、R0:分辩率设置位,即温度转换的精度位数R1R0分辩率/位温度最大转换时间/ms步进单位00993.750.5℃/LSB0010187.50.25℃/LSB10113750.125℃/LSB11127500.0625℃/LSB表7-3DS18B20分辩率设置DS18B20温度转换时间与分辩率有关,分辩率愈高,转换时间愈长。高速缓存第6、7、8字节保留未用;第9字节读出前面所有8字节的CRC码,用来校验通信数据的正确性。(3)温度数据值格式。DS18B20接收到温度转换命令后,启动温度转换,并将转换后的温度值以16位带符号二进制补码形式存储在高速缓存存储器的每1、2字节.单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。232221202-12-22-32-4LS字节

SSSSS262524其中“S”为符号标志位:当符号位S=0时,表示测得温度值为正,直接将二进制位转换为十进制;当S=1时,表示测得温度值为负,先将补码变换为原码,再计算十进制值。表7-4为部分温度值与二进制温度数据的对应关系。MS字节图7-3温度数据值格式表7-4DS18B20温度与二进制温度数据对应关系7418温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDSI8B20完成温度转换后,就把测得的温度值与TH、TL做比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应。四、DSl8B20工作命令工作时,DS18B20主机(单片机)可以使用各种命令对DSI8B20进行操作。操作过程为:初始化DS18B20、发ROM功能命令、发存储器操作命令。1.读ROM[33H]这个命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20的时候才能使用这个命令。2.匹配ROM[55H]这个是匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。3.跳过ROM[0CCH]这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。4.搜索ROM[0F0H]当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。5.报警搜索[0ECH]这条命令的流程和SearchROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。6.写暂存存储器[4EH]这个命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。7.写暂存存储器[0BEH]这个命令读取暂存器的内容。读取将从第1个字节开始,一直进行下去,直到第9(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

8.拷贝暂存存储器[48H]这个命令把暂存器的内容拷贝到DS18B20的E2ROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20则输出1。9.温度转换[44H]这条命令启动一次温度转换而无需其它数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做温度转换的话,DS18B20将在总线上输出0,若温度转换完成,则输出1。10.重新调出[0B8H]这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。11.读电源[0B4H]

五、DSl8B20工作时序作为单总线器件,DSl8B20与单片机间采用串行数据传输方式,要求按照严格的时隙进行操作。主机使用时间隙来读写DSl8B20的数据位和写命令字的位(在此所有程序均采用12M晶振),单片机P3.7引脚接DSl8B20数据线。1.初始化DS18B20对DSl8B20操作时首先要进行初始化:单片机发出复位脉冲,DSl8B20以存在脉冲响应。当DSl8B20发出存在脉冲对复位脉冲响应时,表明该器件已在总线上并作好操作准备。初始化时序见图7-4。主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态。DSl8B20在检测到总线的上升沿之后等待15-60us接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us)如图中虚线所示。DS18B20工作时序DS18B20初始化子程序如下:Init_DS18B20() //传感器初始化{ ucharx=0; DATA=1; //DQ复位

delay(10); //稍做延时

DATA=0; //单片机将DQ拉低

delay(80); //精确延时大于480us//450 DATA=1; //拉高总线

delay(20); x=DATA;//稍做延时后如果x=0则初始化成功x=1则初始化失败

delay(30);}2.写DS18B20DSl8B20有两种类型的写时序:写0时序(图7-5)和写1时序(图7-6)。当主机总线to时刻从高拉至低电平时就产生写时间隙。从to时刻开始15us之内应将所需写的位送到总线上,DSl8B20在t0后15-60us间对总线采样,若为低电平,则写入的位是0,见图7-5;若为高电平,则写入的位是1,见图7-6。连续写2位间的间隙应大于1us。图7-5写0时序图7-6写1时序写DS18B20一个字节子程序WriteOneChar(unsignedchardat){ uchari=0; for(i=8;i>0;i--) { DATA=0; DATA=dat&0x01; delay(10); DATA=1; dat>>=1; } delay(8);}3.读DS18B20当单片机发出读时序时,DS18B20可发送数据到单片机。所有读时序必须持续60us以上,每个时序之间发须有至少1us的恢复时间。图7-7中,主机在to时刻将总线从高电平拉至低电平时,至少在1us后t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后到t2时刻前有效。T2距to为15us。也就是说t2时刻前主机必须完成读位,并在to后的60us一120us内释放总线。图7-7DS18B20读时序

基础篇;读DS18B20一个字节子程序,ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) {DATA=0; //给脉冲信号

dat>>=1; DATA=1; //给脉冲信号

if(DATA) dat|=0x80; delay(8); } return(dat);}基础篇

一.任务描述利用单片机89S51与DS18B20设计一数字温度计,测温范围-55~125OC,显示精度为0.1OC。采用4位LED数码管显示温度,一位小数、三位整数。正温度时,最高位显示百位温度或不显示,负温度时最高位显示符号“-”。系统采用12M晶振。

二、硬件电路设计硬件电路见图7-8所示。DS18B20数据端接至单片机P3.7引脚,采用四位数码管显示温度值(3位整数,一位小数)。

三、软件设计系统程序主要包括主程序、温度转换子程序、温度BCD码转换子程序、显示缓冲区刷新子程序、显示子程序等。

1.主程序主程序的主要功能是进行温度转换、温度BCD码转换、显示缓冲区刷新及温度显示等,见流程图图7-92.温度读取子程序该子程序的功能是启动DS18B20温度转换,并将DS18B20RAM中的前两个字节温度数据读入单片机指定存储单元中。其流程图见图7-10。

数字温度计设计(一)基础篇3.温度BCD码转换子程序该子程序的功能是判别所测温度的正负值,并将其小数及整数部分分别转换成BCD码,再存入单片机指定的温度存储单元中。表7-5小数部分二进制和十进制的近似对应关系表二进制值0123456789ABCDEF十进制值00112334556678894.显示缓冲区刷新子程序该子程序将压缩BCD码温度数据拆分后装入显示缓冲区70H—73H中。基础篇四、源程序清单应用程序清单如下(程序仅供参考):/***********************************************************程序描述:温度超过35度,继电器吸合P0端驱动共阳七段数码管,P2端接共阳数码管的公共端***********************************************************/#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitDATA=P3^7;//DS18B20接入口ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};charbai,shi,ge;//定义变量

数字温度计设计(二)基础篇/********延时子函数***********/voiddelay(uintn){ while(n--);//uinti;for(i=0;i<n;i++);}/*************DS18b20温度传感器函数*********************/Init_DS18B20(void) //传感器初始化{ ucharx=0; DATA=1; //DQ复位

delay(10); //稍做延时

DATA=0; //单片机将DQ拉低

delay(80); //精确延时大于480us//450 DATA=1; //拉高总线

delay(20); x=DATA; //稍做延时后如果x=0则初始化成功x=1则初始化失败

delay(30);}基础篇/****读一个字节******/ReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) DATA=0; //给脉冲信号

dat>>=1; DATA=1; //给脉冲信号

if(DATA) dat|=0x80; delay(8); } return(dat);}基础篇/*****8写一个字节*****/WriteOneChar(unsignedchardat){

uchari=0; for(i=8;i>0;i--) { DATA=0; DATA=dat&0x01; delay(10); DATA=1;

dat>>=1; } delay(8);}/*******读取温度*******/intReadTemperature(void){ uchara=0; ucharb=0; intt=0; floattt=0; Init_DS18B20(); WriteOneChar(0x

温馨提示

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

评论

0/150

提交评论