郑州轻工业学院毕业设计 DS18B20的测温原理_第1页
郑州轻工业学院毕业设计 DS18B20的测温原理_第2页
郑州轻工业学院毕业设计 DS18B20的测温原理_第3页
郑州轻工业学院毕业设计 DS18B20的测温原理_第4页
郑州轻工业学院毕业设计 DS18B20的测温原理_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、郑州轻工业学院课 程 设 计 任 务 书题目 DS18B20的测温原理 专业、班级 学号 姓名 主要内容、基本要求、主要参考资料等:一、主要内容分析DS18B20的测温工作原理。二、基本要求1:DS18B20工作原理,内部结构组成框图,工作波形,命令流程。2:DS18B20组网测温的硬件连接。3:DS18B20组网原理及软件实现。4:完成课程设计说明书,说明书应含有课程设计任务书,设计原理说明,设计原理图,要求字迹工整,叙述清楚,图纸齐备。5:设计时间为一周。三、主要参考资料1、徐爱钧,彭秀华 Keil C51 V7.0单片机高级语言编程与Visica2应用实践M 北京电子工业出版社 2004

2、:136-1422、孙育才 MCS-51系列单片机微型计算机应用东南大学出版社,19953、马忠梅,张凯歌 单片机的C语言应用程序设计M 北京航空航天大学出版社 2003完 成 期 限: 2009.6.14-2009.6.21 指导教师签名: 课程负责人签名: 2009年6月14日目录第一章 DS18B20的内部结构及命令流程第一节、内部结构4第二节、命令流程4一、 初始化二、 ROM命令三、DS18B20功能命第二章 DS18B20组网测温的硬件连接第三章 DS18B20组网原理及软件的实现第一节、 组网原理 第二节、软件实现 一、NEXT函数 二、FIRST函数 三、FIND DEVICE

3、S函数 四、Match Rom函数第四章 组网注意事项第五章 心得体会12参考文献13引言传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足 40 摄氏度 至 90 摄氏度 测量范围,但热敏电阻可靠性差,测量温度准确率低,对于 1 摄氏度 的信号是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处理。DS18B20 数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其 能够有效的减小外界的干扰,提高测量的精度,同时,它 可以直接将被测温度转化成串行数字信号供微机处理,接口简单, 使数据传输和处理简单化。 部分功能电路的集成,使总体硬件设计更简

4、洁,能 有效地降低成本, 搭建电路和焊接电路时更快,调试也更方便简单化,这也就 缩短了开发的周期 。第一章 DS18B20概述第一节 内部结构DS18B20Z 8脚SOIC封装如图 1所示,主要由64位ROM、温度传感器、非挥发的温度报警触发器TH和TL和配置寄存器4部分组成。DS18B20的管脚排列如图1.1所示,DQ为数字信号输人/输出端;GND为电源地;VDD为外接供电电源输人端。 ROM中的64位序列号是出厂前被刻好的,它可以看作是该DS 18 B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM排列的循环冗余校验码(CRC=Xg+XS+X,+1)。ROM的作用是

5、使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS 18 B20的目的。 图1 DS18B20的内部结构图1.1 DS18B20的管脚排列DS18 B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2 PRAM;后者存放高温度和低温度触发器TH,TL和结构寄存器。第二节 命令流程 由于DS18B20是一个典型的单总线传感器,其命令序列如下:初始化ROM操作指令DS18B20功能命令。一、初始化 FPGA要与DS18B20通信,首先必须完成初始化。FPGA产生复位信号,DS18B20返回响应脉冲。 二、ROM命令    

6、; 该步骤完成FPGA与总线上的某一具体DS18B20建立联系。ROM命令有搜寻ROM(SEARCH ROM)、读ROM(READ ROM)、匹配ROM(MATCH ROM)、忽略ROM(SKIP ROM)、报警查找等命令(ALARM SEARCH)。 这里,FPGA只连接1个DS18B20,因此只使用读ROM命令,来读取DS18B20的48位ID号。 三、DS18B20功能命令在该步骤中完成温度转换(CONVERTT)、写暂存寄存器(WRITE SCRATCHPAD)、读暂存寄存器(READ SCRATCHPAD)、拷贝暂存寄存器(COPYSCRATCHPAD)、装载暂存器寄存器(RECAL

7、L E2)、读供电模式命令(READ Power SUPPLY)。 文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。 每次访问任何单总线器件,必须严格遵守这个命令序列;如果出现序列混乱,则单总线器件不会响应主机。但是这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。 在主机发出 ROM命令,以访问某个指定的DS18 B20,接着就可以发出DS 18 B20支持的某个功能命令。这些命令允许主机写人或读出DS18 B20暂存器,启动温度转换以及判断从机的供电

8、方式。其工作时序包括初始化时序、写时序和读时序,如下图所示:         第二章 DS18B20组网测温的硬件连接图3以MCS51系列单片机为例,画出了DS18B20与微处理器的典型连接。图3(a)中DS18B20采用寄生电源方式,其VDD和GND端均接地,图3(b)中DS18B20采用外接电源方式,其VDD端用3V5.5V电源供电。    假设单片机系统所用的晶振频率为12MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写了3个子程序:INIT为初始化子程

9、序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始。    DATEQUP1.0        INIT: CLR EA    INI10:SETB DAT     MOV R2,200 INI11:CLRDAT DJNZ R2,INI11;主机发复位脉冲持续3s×200=600s SETB DAT;主机释放总线,口线改为输入 MOV R2,30

10、 IN12: DJNZ R2,INI12;DS18B20等待2s×30=60s CLR C ORL C,DAT;DS18B20数据线变低(存在脉冲)吗? JCINI10;DS18B20未准备好,重新初始化 MOV R6,80         (a)寄生电源工作方式        (b)外接电源工作方式        图3  DS

11、18B20与微处理器的典型连接INI13:ORL C,DAT JC INI14;DS18B20数据线变高,初始化成功 DJNZ R6,INI13;数据线低电平可持续3s×80=240s SJMP INI10;初始化失败,重来INI14:MOV R2,240IN15:DJNZ R2,INI15;DS18B20应答最少2s×240=480s RET; WRITE:CLR EA MOV R3,8;循环8次,写一个字节WR11:SETB DAT MOV R4,8RRCA;写入位从A中移到CY CLR DATWR12:DJNZ R4,WR12;等待16s MOV DAT,C;命令字按

12、位依次送给DS18B20 MOV R4,20WR13:DJNZ R4,WR13;保证写过程持续60s DJNZ R3,WR11;未送完一个字节继续 SETB DAT RET; READ:CLR EA MOV R6,8;循环8次,读一个字节RD11:CLR DAT MOV R4,4 NOP;低电平持续2s SETB DAT;口线设为输入RD12:DJNZ R4,RD12;等待8s MOV C,DAT;主机按位依次读入DS18B20的数据 RR C A ;读取的数据移入A MOV R5,30RD13:DJNZ R5,RD13;保证读过程持续60s DJNZ R6,RD11;读完一个字节的数据,存入

13、A中 SETB DAT RET; 主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。假设一线仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,可写出完成一次转换并读取温度值子程序GETWD。    GETWD:LCALL INIT     MOV A,0CCH     LCALL WRITE;发跳过ROM命令     MOV A

14、,44H     LCALLWRITE;发启动转换命令     LCALL INIT     MOV A,0CCH;发跳过ROM命令     LCALL WRITE     MOV A,0BEH;发读存储器命令     LCALL WRITE     LCALL READ     

15、;MOV WDLSB,A    ;温度值低位字节送WDLSB     LCALL READ     MOV WDMSB,A     ;温度值高位字节送WDMSB     RET          子程序GETWD读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格

16、式及其符号位,经过简单的变换即可得到实际温度值。        如果一线上挂接多个DS18B20、采用寄生电源连接方式、需要进行转换精度配置、高低限报警等,则子程序GETWD的编写就要复杂一些。我们已成功地将DS18B20应用于所开发的“家用采暖洗浴器”控制系统中,其转换速度快,转换精度高,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。第三章 DS18B20组网原理及软件实现第一节 组网原理 前面提及单总线器件的ROM命令,在主机检测到应答脉冲后,就可以发出ROM命令。这些命

17、令与各个从机设备的唯一64位ROM代码相关。允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。 从机设备可能支持5种ROM命令(实际情况与具体型号有关),每种命令长度为8位。主机在发出功能命令之前,必须发送合适的ROM命令。 搜索ROM Foh当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码,这样主机就能够判断出从机的数目和类型。主机通过重复执行搜索ROM循环(搜索ROM命令跟随着位数据交换)以找出总线上所有的从机设备。如果总线只有一个从机设备,则可以采用读ROM命令来替代搜索R

18、OM命令。在每次执行完搜索ROM循环后,主机必须返回至命令序列的第一步(初始化)。 读ROM33h(仅适合于单节点) 该命令仅适用于总线上只有一个从机设备。它允许主机直接读出从机的64位ROM代码,而无须执行搜索ROM过程。如果该命令用于多节点,系统则必然发生数据冲突,因为每个从机设备都会响应该命令。 匹配ROM仁55h匹配ROM命令跟随64位ROM代码,从而允许主机访问多节点系统中某个指定的从机设备。仅当从机完全匹配64位ROM代码时,才会响应主机随后发出的功能命令。其它设备将处于等待复位脉冲状态。 跳越ROM CCh(仅适合于单节点) 主机能够采用该命令同时访问总线上的所有从机设备,而无须

19、发出任何ROM代码信息。例如,主机通过在发出跳越 ROM命令后跟随转换温度命令仁44h,就可以同时命令总线上所有的DS18B20开始转换温度,这样大大节省了主机的时间。值得注意的是,如果跳越ROM命令跟随的是读暂存器BEh的命令(包括其它读操作命令),则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。 报警搜索ECh(仅少数1一Wire器件支持) 除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索ROM命令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。同搜索ROM命令一样,在完成报警搜索循环后,主机必须返回至命令序列的第

20、一步。第二节 软件实现 相对于总线上只有一个器件的情况,比总线上有多个器件的操作过程要相对复杂一些,用得比较多的有下面几个函数。一、 NEXT函数 " NEXT"操作是搜索 1一Wire总线上的下一个从机器件,一般情况下,此搜索操作是在FIRST操作之后或上一次 NEXT操作之后进行;保持上次搜索后这些值的状态不变、执行又一次搜索即可实现NEXT操作。之后从ROM_ NO寄存器中读出一个新的ROM码。若前一次搜索到的是1 - Wire上的最后一个器件,则返回一个无效标记FALSE,并且把状态设置成下一次调用搜索算法时将是FIRST操作的状态(图4中状态)。二、 FIRST函

21、数 " FIRST”操作是搜索1一Wire总线上的第一个从机器件。该操作是通过将LastDiscrepany, LastFam-liyDiscrepany和LastDeviceFlag置零,然后进行搜索完成的。最后ROM码从ROM_ NO寄存器中读出。若I -Wire总线上没有器件,复位序列就检测不到应答脉冲,搜索过程终止。 lastDiscrep =0; doneFlag=false; return Next);三、FIND DEVICES函数 首先复位单总线以确定是否存在任何器件,如果存在则将其唤醒。然后调用FIRST函数跟踪冲突位,并返回到NEXT函数。NEXT函数完成鉴别单总

22、线上每个期间唯一TOM代码的大部分工作。 If(!ow-reset) /如果单总线上存在器件则开始处理 if( First() /至少发现一个器件才开始 numROMs =0; do numROMs+; numDS18b20s=numROMs ; for(m二0;m<8;m+) FoundROMnumROMsm =ROMm;/对发现的器件鉴别ROM代码while(Next)&&(numROMs<=MAXDSl8b20 );/一直持续到没有发现其他器件 四、Match Rom函数 选中某一特定的DS181320进行操作。 if( ow- reset())return

23、false; write-byte (0x55); /发送匹配ROM命令for( i =0;i<8;i+)write-byte( FoundROMalarm numROMsalarmi); /发送ROM代码return true;软件及程序的其他过程跟单总线上只有一个器件的情况相同。第四章 组网注意事项 在DS18 B20的有关资料中均未提及单总线上所挂DS18 B20的数量,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18 B20超过8个时,就需要解决微处理器的总线驱动能力。一般情况下,在寄生电源的工作方式下,由于单个DS18 B20的工作电流为

24、1 mA,而总线上的电流为5 V/4. 7 k,fl =1. 06 mA,加上一个MOSFET可以帮助提供能量,但是由于DS18B20和MOSFET之间的充放电和功耗问题,导致单总线上的DS 18 B20个数不能超过8个。三线制的连接方式很好地解决了能量提供问题,理论上可以在数据总线上接任意多个器件。这点在进行多点测温系统设计时要加以注意。 连接DS 18 B20的总线电缆(普通三芯线)在只有上拉电阻的情况下可靠传输长度可达45 m左右,距离最长时需根据分支点数、总线长度匹配其线间电容及阻抗;一般情况下,采用普通信号电缆传输长度超过50 m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带

25、屏蔽电缆时,正常通信距离可达150 m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通信距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。电缆的分布电容C主要是由双绞线的两条平行导线产生,数字信号通过传输线时,分布电容会出现充放电过程,引起矩形脉冲的上升沿和下降沿变坏,造成波形畸变。电容越大或者脉冲信号的频率越高,畸变越严重。因此,在用DS 18 B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。应注意以下几点:合理估算畸变的允许程度和电容的允许值;不同传输线的电容相差很大,如同轴电缆抗干扰能力最强,但电容较大;传输线越短,电容越小;合理布线,可减少电容。实际运用中,测温电缆线建议采用屏蔽4芯双绞线,其中一组接地线与信号线;另一组接V CC和地线,屏蔽层在源端单点接地。 由于DS18 B20与微处理器间采用串行数据传送,因此,在对DS 18 B20进

温馨提示

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

评论

0/150

提交评论