7数字温度计.ppt_第1页
7数字温度计.ppt_第2页
7数字温度计.ppt_第3页
7数字温度计.ppt_第4页
7数字温度计.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、,基础篇,项目7DS18B20工作原理,一任务描述介绍数字温度传感器DS18B20的工作原理,了解其内部结构及相关寄存器的使用方法。二DS18B20简介数字温度传感器DS18B20作为温度检测元件,硬件电路简单,节省系统成本并提高了系统可靠性。DS18B20主要具有以下特点:(1)采用单总线(1-wirebus)通信方式,仅需一条口线即可实现与单片机进行数据传输;(2)具有3引脚小体积封装方式,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(3)测温范围为550C1250C;(4)电源供电范围为3.05.5V;(5)可编程为912位数字量输出(自带模数转换ADC);(6)支持多点组网

2、功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;(7)在每个DS18B20器件都有独一无二的序列号。,基础篇,表7-1DS18B20详细引脚功能描述,三.DS18B20内部结构1.引脚功能DS18B20为三引脚元件,外形同普通三极管,见右图,引脚功能详见表。,基础篇,(1)64位ROM的位结构如下表所示。开始8位为产品类型编号,接着是每个器件的惟一序号,共有48位,最后8位是前面56位的CRC验证码。非易失性温度报警触发器TH与TL,可通过软件写入报警上下限。,MSBLSBMSBLSBMSBLSB,2.DS18B20内部结构DS18B20主要由64位ROM、温度传感器、非挥发

3、的温度报警触发器TH和TL、及配置寄存器等组成。,基础篇,(2)9字节高速缓存存储器,结构如表7-2所示。,表7-2高速缓存存储器结构,第1、第2字节为所测温度信息;第3、第4字节为TH与TL的考贝,是易失性的,上电复位时被刷新;第5字节为配置寄存器,用于确定温度值的数字分辩率。该字节低5位始终为1,各位具体定义如下:,TM:测试模式位,该位已被设置为0R1、R0:分辩率设置位,即温度转换的精度位数,基础篇,表7-3DS18B20分辩率设置,DS18B20温度转换时间与分辩率有关,分辩率愈高,转换时间愈长。高速缓存第6、7、8字节保留未用;第9字节读出前面所有8字节的CRC码,用来校验通信数据

4、的正确性。,基础篇,(3)温度数据值格式。DS18B20接收到温度转换命令后,启动温度转换,并将转换后的温度值以16位带符号二进制补码形式存储在高速缓存存储器的每1、2字节.单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625LSB形式表示。,LS字节,其中“S”为符号标志位:当符号位S=0时,表示测得温度值为正,直接将二进制位转换为十进制;当S=1时,表示测得温度值为负,先将补码变换为原码,再计算十进制值。表7-4为部分温度值与二进制温度数据的对应关系。,MS字节,图7-3温度数据值格式,基础篇,表7-4DS18B20温度与二进制温度数据对应关系,DSI8B20完

5、成温度转换后,就把测得的温度值与TH、TL做比较,若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应。,基础篇,四、DSl8B20工作命令工作时,DS18B20主机(单片机)可以使用各种命令对DSI8B20进行操作。操作过程为:初始化DS18B20、发ROM功能命令、发存储器操作命令。1读ROM33H这个命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20的时候才能使用这个命令。2匹配ROM55H这个是匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64

6、位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。3跳过ROM0CCH这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。,基础篇,4搜索ROM0F0H当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。5报警搜索0ECH这条命令的流程和SearchROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。6写暂存存储器4EH这个命令向DS18B20的暂存

7、器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。7写暂存存储器0BEH这个命令读取暂存器的内容。读取将从第1个字节开始,一直进行下去,直到第9(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。,基础篇,8拷贝暂存存储器48H这个命令把暂存器的内容拷贝到DS18B20的E2ROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20则输出1。9温度转换44H这条命令启动一次温度转换而无需其它数据

8、。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做温度转换的话,DS18B20将在总线上输出0,若温度转换完成,则输出1。10重新调出0B8H这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。11读电源0B4H,基础篇,五、DSl8B20工作时序作为单总线器件,DSl8B20与单片机间采用串行数据传输方式,要求按照严格的时隙进行操作。主机使用时间隙来读写DSl8B2

9、0的数据位和写命令字的位(在此所有程序均采用12M晶振),单片机P3.7引脚接DSl8B20数据线。1初始化DS18B20对DSl8B20操作时首先要进行初始化:单片机发出复位脉冲,DSl8B20以存在脉冲响应。当DSl8B20发出存在脉冲对复位脉冲响应时,表明该器件已在总线上并作好操作准备。初始化时序见图7-4。主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态。DSl8B20在检测到总线的上升沿之后等待15-60us接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us)如图中虚线所示。,第三十一讲DS18B20工作时序,基础

10、篇,DS18B20初始化子程序如下:INITDS1820:SETBDAT;置位NOP;空操作CLRDAT;清零MOVR2,#250;主机发出延时500微秒的复位低脉冲DJNZR2,$;自减(-1)循环SETBDAT;然后拉高数据线MOVR2,#30DJNZR2,$;延时60us等待DS18B20回应JNBDAT,INIT1JMPINITDS1820;超时而没有响应,重新初始化INIT1:MOVR2,#120DJNZR2,$;延时240usJBDAT,INIT2;数据变高,初始化成功JMPINITDS1820INIT2:MOVR2,#240DJNZR2,$RET,基础篇,2.写DS18B20DS

11、l8B20有两种类型的写时序:写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一个字节子程序WRITEDS1820:MOVR7,#08H;置写入位数SETBP3.7;置位NOPNOPWRITEDS1820LOP:CLRP3.7;复位MOVR6,#07H;延时15usDJNZR6

12、,$RRCA;写第一位数MOVP3.7,CMOVR6,#34H;写入等待DJNZR6,$SETBP3.7;写完一位后置位DJNZR7,WRITEDS1820LOP;8位未写完继续RET,基础篇,3.读DS18B20当单片机发出读时序时,DS18B20可发送数据到单片机。所有读时序必须持续60us以上,每个时序之间发须有至少1us的恢复时间。图7-7中,主机在to时刻将总线从高电平拉至低电平时,至少在1us后t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后到t2时刻前有效。T2距to为15us。也就是说t2时刻前主机必须完成读位,并在to后的60us一120us内释放总线。,图7-7DS1

13、8B20读时序,基础篇,;读DS18B20一个字节子程序,READDS1820:MOVR7,#08H;置写入位数SETBP3.7;置位NOPNOPRDLOOP:CLRP3.7;复位NOPNOPNOPSETBP3.7;接高总线MOVR6,#07H;延时15usDJNZR6,$MOVC,P3.7;读入数据位MOVR6,#3CH;DELAY120usDJNZR6,$RRCA;数据读入累加器ASETBP3.7;读完一位后置位总线DJNZR7,RDLOOP;8位未读完继续MOVR6,#3CH;DELAY120usDJNZR6,$RET,基础篇,一任务描述利用单片机89S51与DS18B20设计一数字温度

14、计,测温范围55125OC,显示精度为0.1OC。采用4位LED数码管显示温度,一位小数、三位整数。正温度时,最高位显示百位温度或不显示,负温度时最高位显示符号“”。系统采用12M晶振。二、硬件电路设计硬件电路见图7-8所示。DS18B20数据端接至单片机P3.7引脚,采用四位数码管显示温度值(3位整数,一位小数)。三、软件设计系统程序主要包括主程序、温度转换子程序、温度BCD码转换子程序、显示缓冲区刷新子程序、显示子程序等。1主程序主程序的主要功能是进行温度转换、温度BCD码转换、显示缓冲区刷新及温度显示等,见流程图图7-92.温度读取子程序该子程序的功能是启动DS18B20温度转换,并将D

15、S18B20RAM中的前两个字节温度数据读入单片机指定存储单元中。其流程图见图7-10。,第三十二讲数字温度计设计(一),基础篇,3.温度BCD码转换子程序该子程序的功能是判别所测温度的正负值,并将其小数及整数部分分别转换成BCD码,再存入单片机指定的温度存储单元中。,表7-5小数部分二进制和十进制的近似对应关系表,4.显示缓冲区刷新子程序该子程序将压缩BCD码温度数据拆分后装入显示缓冲区70H73H中。,温度BCD码转换子程序步骤详解,基础篇,四、源程序清单;工作内存定义TEMPLEQU26H;存放二进制温度低字节TEMPHEQU27H;存放二进制温度高字节TEMPHCEQU28H;存放温度

16、个位及小数位TEMPLCEQU29H;存放温度百位(或符号位)及十位数ORG0000HMOVSP,#60HSTART:LCALLREADTEMP;调温度转换子程序LCALLCONVTEMP;调温度BCD码转换子程序LCALLDISPNEW;调显示缓冲区刷新子程序LCALLDISP;调显示子程序;LJMPSTART,第三十三讲数字温度计设计(二),基础篇,;复位DS18B20子程序INITDS1820:SETBP3.7;置位NOP;空操作CLRP3.7;清零MOVR2,#250;主机发出延时500微秒的复位低脉冲DJNZR2,$;自减(-1)循环SETBP3.7;然后拉高数据线MOVR2,#30

17、DJNZR2,$;延时60us等待DS18B20回应JNBP3.7,INIT1JMPINITDS1820;超时而没有响应,重新初始化INIT1:MOVR2,#120DJNZR2,$;延时240usJBP3.7,INIT2;数据变高,初始化成功JMPINITDS1820INIT2:MOVR2,#240DJNZR2,$RET,基础篇,;从DS18B20中读出一个字节数据子程序READDS1820:MOVR7,#08HSETBP3.7NOPNOPRDLOOP:CLRP3.7NOPNOPNOPSETBP3.7MOVR6,#07H;延时15usDJNZR6,$MOVC,P3.7MOVR6,#3CH;延时

18、120usDJNZR6,$RRCASETBP3.7DJNZR7,RDLOOPMOVR6,#3CH;延时120usDJNZR6,$RET,;向DS18B20中写一个字节数据子程序WRITEDS1820:MOVR7,#08HSETBP3.7NOPNOPWRLOP:CLRP3.7MOVR6,#07H;延时15usDJNZR6,$RRCAMOVP3.7,CMOVR6,#34H;延时104usDJNZR6,$SETBP3.7DJNZR7,WRLOPRET,基础篇,;向DS18B20中写一个字节数据子程序WRITEDS1820:MOVR7,#08HSETBP3.7NOPNOPWRLOP:CLRP3.7MO

19、VR6,#07H;延时15usDJNZR6,$RRCAMOVP3.7,CMOVR6,#34H;延时104usDJNZR6,$SETBP3.7DJNZR7,WRLOPRET,;温度读取子程序READTEMP:LCALLINITDS1820MOVA,#0CCHLCALLWRITEDS1820;跳过ROM匹配MOVA,#44HLCALLWRITEDS1820;写入转换命令MOVR6,#34HDJNZR6,$READTEMP1:LCALLINITDS1820;读出两字节温度子程序MOVA,#0CCHLCALLWRITEDS1820;跳过ROM匹配MOVA,#0BEHLCALLWRITEDS1820;读

20、暂存器MOVR5,#02HMOVR0,#TEMPLREADTEMP2:LCALLREADDS1820;读一个字节MOVR0,AINCR0DJNZR5,READTEMP2;未读完继续RET,基础篇,;处理温度数据并转换为BCD码子程序CONVTEMP:MOVA,TEMPH;取高位字节符号位ANLA,#80HJZTEMPC1;温度为正转移CLRCMOVA,TEMPL;温度为负求补码CPLAADDA,#01HMOVTEMPL,AMOVA,TEMPHCPLAADDCA,#00H,基础篇,MOVTEMPH,AMOVTEMPHC,#0BH;TEMPHCHI=符号位()SJMPTEMPC11TEMPC1:M

21、OVTEMPHC,#0AH;温度为正,符号位不显示,置码为0AHTEMPC11:MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPL;小数位乘0.0625转为BCD码(采用查表法)ANLA,#0FHMOVDPTR,#TEMPDOTTABMOVCA,A+DPTRMOVTEMPLC,A;TEMPLCLOW=小数部分BCDMOVA,TEMPL;将两字节温度组合为一字节整数温度ANLA,#0F0HSWAPAMOVTEMPL,AMOVA,TEMPHANLA,#0FHSWAPAORLA,TEMPL,基础篇,LCALLHEX2BCD1;将整数温度转换为BCD码MOVTEMPL,AANL

22、A,#0F0HSWAPAORLA,TEMPHC;TEMPHCLOW=十位数BCDMOVTEMPHC,AMOVA,TEMPLANLA,#0FHSWAPA;TEMPLCHI=个位数BCDORLA,TEMPLCMOVTEMPLC,AMOVA,R7JZTEMPC12ANLA,#0FHSWAPAMOVR7,AMOVA,TEMPHC;TEMPHCHI=百位数BCDANLA,#0FHORLA,R7MOVTEMPHC,ATEMPC12:RET,基础篇,;小数部分代码表TEMPDOTTAB:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09H;显示区缓冲区刷新子程序DISPNEW:MOVA,TEMPLC;小数位置70H中ANLA,#0FHMOV70H,AMOVA,TEMPLC;个位置7

温馨提示

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

评论

0/150

提交评论