ds18b20温度检测毕业设计(编辑修改稿)内容摘要:

芯片介绍 DS18B20 数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有 LTM8877, LTM8874 等等。 主要根据应用场合的不同而改变其外观。 封装后的 DS18B20 可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。 耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域 “ [5]”。 DS18B20 芯片特征 DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: ( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 ( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 55 ℃ ~+ 125 ℃ ; 在 10~+ 85176。 C 范围内,精度为 177。 176。 C。 ( 3 )在使用中不需要任何外围元件。 ( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 ( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。 因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 ( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。 ( 7 )负压特性电源极性接反时, 温度计不会因发热而烧毁,但不能正常工作。 ( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。 注:单总线特点 —— 单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。 单总线通常要求外接一个约为 — 10K 的上拉电阻,这样,当总线闲置时其状态为高电平“ [6]”。 DS18B20 内部结构 主要由 4 部分组成: 64 位 ROM、温度寄存器、温度报警触发器 TH 和 TL、配置寄存器。 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作 是该 DS18B20 的地址序列码,每个 DS18B20 的 64 位序列号均不相同。 64 位 ROM 的排的循环冗余校验码( CRC=X^8+X^5+ X^4+ 1)。 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可以实现一根总线上挂接多个 DS18B20 的目的。 8 图 DS18B20 内部结构图 硬件构造 单总线系统只 有一条定义的信号线。 每一个总线上的器件必须是漏极开路或三态输出。 这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。 DS18B20 的单总线端口( DQ 引脚)是漏极开路式的,单总线需要一个约 5KΩ的外部上拉电阻;单总线的空闲状态是高电平。 无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。 在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。 如果总线停留在低电平超过 480us,总线上的所有器件都将被复位。 图 DS18B20 硬件构造图 “ [7]” 9 DS18B20 引脚排列 图 DS18B20 引脚排列图“ [8]” 1. GND 为电源 地; 2. DQ 为数字信号输入/输出端; 3. VDD 为外接供电电源输入口 ; DS18B20 芯片各部分介绍 (1) 64BIT ROM AND 1wire PORT 每个 DS18B20 都有一个唯一储存在 ROM 中的 64 位编码。 最前面 8 位是单线系列编码:28h。 接着的 48 位是一个唯一的序列号。 最后 8 位是以上 56 位的 CRC 编码。 64 位 ROM 和ROM 操作控制区允许 DS18B20 作为单总线器件并按照单总线协议工作。 64BIT ROM AND 1wire PORT 8 位 CRC 48 位序列号 8 位系列码 (2) SCRATCHPAD SCRATCHPAD 有一个温度寄存器,高低温报警触发器以及配置寄存器组成。 当报警功能不使用时, TH 和 TL 寄存器可以被当作普通寄存器使用。 字节 0 和字节 1 为测得温度信息的 LSB 和 MSB。 这两个字节是只读的。 第 2 和第 3 字节是 TH 和 TL 的拷贝。 位 4 包含配置寄存器 数据,其被详述于配置寄存器节。 字节第 5, 6 和 7 位被器件保留,禁止写入;这些数据在读回时全部表现为逻辑 1。 高速暂存器的位 8 是只读的,包含以上八个字节的CRC 码, CRC 的执行方式如 CRC 发生器节所述。 数据通过写暂存器指令 [4Eh]写入高速暂 10 存器的 2, 3 和 4 位;数据必须以位 2 为最低有效位开始传送。 为了完整的验证数据,高速暂存器能够在数据写入后被读取(使用读暂存器指令 [BEh])。 在读暂存器时,数据以字节 0为最低有效位从单总线移出。 总线控制器传递从暂存器到 EEPROMTH,TL 和配置数据必须发出拷贝暂存器指令 [48h]。 EEPROM 寄存器中的数据在器件掉电时仍然保存;上电时,数据被载入暂存器。 数据也可以通过召回 EEPROM 命令从暂存器载入 EEPROM。 总线控制器在发出这条命令后发出读时序, DS18B20 返回 0 表示正在召回中,返回 1 表示操作结束。 图 存储器图“ [9]” (3) 配置寄存器 存储器的第 4 位为配置寄存器。 用户可以通过按 下图 所示设置 R0 和 R1 位来设定DS18B20 的精度。 上电默认设置: R0=1,R1=1( 12 位精度)。 注意:精度和转换时间之间有直接的关系。 暂存器的 位 7 和位 04 被器件保留,禁止写 入;在读回数据时,它们全部表现为逻辑 1。 图 配置寄存器组成图 图 温度计精确度配置图 11 ( 4) CRC 发生器 CRC 字节作为 DS18B2064 位 ROM 的一部分存储在存储器中。 CRC 码由 ROM 的前 56 位计算得到,被包含在 ROM 的重要字节当中。 CRC 由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时, CRC 的值也随之改变。 CRC 能够在总线 控制器读 DS18B20时进行数据校验。 为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个CRC 值,和存储在 DS18B20 的 64 位 ROM 中的值(读 ROM 时)或 DS18B20 内部计算出的 8 位 CRC 值(读存储器时)进行比较。 如果计算得到的 CRC 值和读取出来的 CRC 值相吻合,数据被无错传输。 CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。 12 第三章 DS18B20 代码指令介绍及程序设计 通过单线总线端口访问 DS18B20 的协议如下: 步骤 1. 初始化 步骤 2. ROM 操作指令 步骤 3. DS18B20 功能指令 每一次 DS18B20 的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。 程序设计流程图: 13 DS18B20 初始化 通过单总线的所有执行操作处理都从一个初始化序列开始。 初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。 存在脉冲让总线控制器知道DS18B20 在总线上且已准备好操作。 图 初始化时序图“ [10]” 本次实验设 计的初始化程序: // //空操作 // void NOP(void) { } // //向 DS18B20 发送 RESET 脉冲(低脉冲) //主机通过把 TX 拉低至少 480us 来发送 RESET 脉冲。 // void DS18B20_RESET(void) { DQ=0。 Delay(1000)。 //拉低保持 500us DQ=1。 //发送完 RESET 脉冲后,主机等待 15us 至 60us 的时间以等待 DS18B20 回复 PRESENCE信号。 Delay(40)。 //等待约 20us return。 } // //检测 DS18B20 回应的 PRESENCE 脉冲 //该低脉冲持续 60us 至 240us 的时间。 // 14 void DS18B20_PRESENCE(void) { while(DQ==1)//DS18B20 仍然没回应 PRESENCE 信号 { NOP()。 } while(DQ==0)//DS18B20 发送了 PRESENCE 信号,该信号持续 60us~240us { NOP()。 } return。 } DS18B20 读写操作 主机发出各种操作命令,但各种操作命令都是向 DS18B20 写 0 和写 1 组成的命令字节,接收数据时也是从 DS18B20 读取 0 或 1 的过程。 因此首先要搞清主机是如何进行写 0、写 读 0 和读 1 的。 写操作:写周期最少为 60 微秒,最长不超过 120 微秒。 写周期一开始做为主机先把总线拉低 1 微秒表示写周期开始。 随后若主机想写 0,则继续拉低电 平最少 60 微秒直至写周期结束,然后释放总线为高电平。 若主机想写 1,在一开始拉低总线电平 1 微秒后就释放总线为高电平,一直到写周期结束。 而做为从机的 DS18B20 则在检测到总线被拉底后等待 15微秒然后从 15us 到 45us 开始对总线采样,在采样期内总线为高电平则为 1,若采样期内总线为低电平则为 0“ [11]”。 图 写操作图“ [12]” 写操作程序: // //write 0 slot:每次调用后向 DS18B20 写一次‘ 0’ // void write_0(void) { DQ=0。 //写 0 时隙,必须拉低持续至少 60us Delay(120)。 //维持 60us 15 DQ=1。 //发送结束,单总线复位 39。 139。 NOP()。 NOP()。 NOP()。 NOP()。 NOP()。 NOP()。 return。 } // //write 1 slot:每次调用后向 DS18B20 写一次‘ 1’ // void write_1(void) { DQ=0。 //写 1 时隙,拉低至少一个 1us,然后。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。