




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 DS18B20 一 DS18B20 的外形及其与单片机的连接图 a b 图 1 DS18B20 是 Dallas 公司生产的 1 Wire 接口数字温度传感器 其外形如图 1 a 所示 有 三个引脚 分别为 电源地 1 GND 数字信号输入 输出端 2 DQ 外接供电电源输入端 3 VDD 在寄生电源接线方式时接地 它是一种单总线数字温度传感器 所有的数据交 换和控制都通过这根数据线来完成 测试温度范围 55 125 温度数据位可配置为 9 10 11 12 位 对应的刻度值分别为 0 5 0 25 0 125 0 0625 对应的最长 转换时间分别为 93 75ms 187 5ms 375ms 750ms 出厂默认配置为 12 位数据 刻度值 为 0 0625 最长转换时间为 750ms 从以上数据可以看出 DS18B20 数据位越低 转换 时间越短 反应越快 精度越低 单总线没有时钟线 只有一根通信线 其读写数据是靠 控制起始时间和采样时间来完成 所以时序要求很严格 图 1 a 为 DS18B20 与单片机的连 接电路图 它的数据线通常要求外接一个 4 7K 10K的上拉电阻 该电阻画原理图时靠 近单片机画故没有显示出来 故其闲置时状态位高电平 提示 DS18B20 外形酷似三极管 分辨引脚时 面对着扁平的那一面 左负右正 一 旦接反就会立刻发热 甚至有可能烧毁 二 DS18B20 存储器结构 DS18B20 的内部有 64 位的 ROM 单元 和 9 字节的暂存器单元 1 64 位 激 光刻只读存储器 每只 DS18B20 都有一个唯一存储在 ROM 中的 64 位编码 跟人的身份证号类似 一人 一个身份证号 这是出厂时被光刻好的 最前面 8 位是单线系列编码 28h 接着的 48 位 是一个唯一的序列号 最后 8 位是以上 56 位的 CRC 编码 64 位的光刻 ROM 又包括 5 个 ROM 的功能命令 读 ROM 匹配 ROM 跳跃 ROM 查找 ROM 和报警查找 ROM 的作 用是使每个 DS18B20 各不相同 这样就可以实现一根总线上挂接多个 DS18B20 以实现多 点监测 2 9 字节的暂存器单元 表 1 2 DS18B20 的暂存器单元如表 1 所示 各部分介绍如下 1 温度传感器 图 2 暂存器的第 0 LSB 字节 第 1 MSB 字节为 DS18B20 的温度传感器 它们负责保存对 温度的测量结果 用 16 位二进制提供 格式如图 2 所示 DS18B20 读取温度时共读取 16 位 前 5 个位 MSB 的高 5 位 为符号位 当前 5 位为 1 时 读取的温度为负数 当前 5 位 为 0 时 读取的温度为正 温度为正时读取方法为 将 16 进制数转换成 10 进制即可 温 度为负时读取方法为 实际就是取补码 将 16 进制取反后加 1 再转换成 10 进制 例 0550H 85 度 FC90H 55 度 0191H 为 25 0625 度 LSB 的低四位用于表示测量值中 小数点后的数值 2 非挥发的温度报警触发器 TH 和 TL 位于第 2 和第 3 字节 用于写入温度报警值 实际上就是设定温度的最高和最低界限 3 配置寄存器 配置寄存器位于存储器的第 4 字节 其组织如图 3 所示 配置寄存器的 0 4 位和 7 位 被器件保留 禁止写入 在读回数据时全部为逻辑 1 R1 和 R0 用于设置 DS18B20 的精度 具体如表 2 所示 图 3 表 2 3 4 CRC 发生器 CRC 字节作为 DS18B2064 位 ROM 的一部分存储在存储器中 CRC 码由 ROM 的前 56 位计算得到 被包含在 ROM 的重要字节当中 CRC 由存储在存储器中的数据计算得到 因此当存储器中的数据发生改变时 CRC 的值也随之改变 CRC 能够在总线控制器读取 DS18B20 时进行数据校验 为校验数据是否被正确读取 总线控制器必须用接受到的数据计算出一个 CRC 值 和存储在 DS18B20 的 64 位 ROM 中 的值 读 ROM 时 或 DS18B20 内部计算出的 8 位 CRC 值 读存储器时 进行比较 如 果计算得到的 CRC 值和读取出来的 CRC 值相吻合 数据被无错传输 CRC 值的比较以及 是否进行下一步操作完全由总线控制器决定 当在 DS18B20 中存储的或由其计算到 CRC 值和总线控制器计算的值不相符时 DS18B20 内部并没有一个能阻止命令序列进行的电路 CRC 的计算等式如下 CRC X8 X5 X4 1 单总线 CRC 可以由一个由移位寄存器和 XOR 门构成的多项式发生器来产生 这个回 路包括一个移位寄存器和几个 XOR 门 移位寄存器的各位都被初始化为 0 从 ROM 中的 最低有效位或暂存器中的位 0 开始 一次一位移入寄存器 在传输了 56 位 ROM 中的数据 或移入了暂存器的位 7 后 移位寄存器中就存储了 CRC 值 下一步 CRC 的值必须被循 环移入 此时 如果计算得到的 CRC 是正确的 移位寄存器将复 0 其他字节保留用 不需要看 三 关于单总线系统 单总线系统包括一个总线控制器和一个或多个从机 DS18B20 总是充当从机 当只有 一只从机挂在总线上时 系统被称为 单点 系统 如果由多只从机挂在总线上 系统被 称为 多点 所有的数据和指令的传递都是从最低有效位开始通过单总线 单总线需要 一个约 5K 的外部上拉电阻 单总线的空闲状态是高电平 无论任何理由需要暂停某一 执行过程时 如果还想恢复执行的话 总线必须停留在空闲状态 在恢复期间 如果单总 线处于非活动 高电平 状态 位与位间的恢复时间可以无限长 如果总线停留在低电平 超过 480us 总线上的所有器件都将被复位 四 操作流程 1 DS18B20 复位 2 执行 ROM 指令 就是访问 搜索 匹配每个 DS18B20 独有的 64 位序列号 实验板上只 连有一个 DS18B20 故不需识别 也就是不需读出此序列号 写代码时直接写命令 0 xcc 跳过 3 执行 DS18B20 功能指令 RAM 指令 就是读写暂存器指令 DS18B20 的功能指令很多 比较常用的有两个 0 x44 开始转换温度 转换好的温度会储存到暂存器字节 0 和 1 0 xBE 读暂存指令 读暂存指令 会从暂存器 0 到 9 一个一个字节读取 如果要停 止 的话 必须写下 DS18B20 复位 4 ROM 指令和 RAM 指令的具体情况见表 3 表 3 五 读写 DS18B20 的时序 1 DS18B20 的复位时序 1 单片机拉低总线 480us 960us 然后释放总线 拉高电平 2 这时 DS18B20 会拉低信号 大约 60 240us 表示应答 3 DS18B20 拉低电平的 60 240us 之间 单片机读取总线的电平 如果是低电平 那么表示复位成功 4 DS18B20 拉低电平 60 240us 之后 会释放总线 复位 主机 t0 时刻发送一复位脉冲 最短为 480us 的低电平信号 接着在 t1 时刻释放总线 拉高总线电平 进入接收状态 DS18B20 在检测到总线的上升沿之后等待 15 60us 接着 DS18B20 在 t2 时刻发出存在脉冲 持续 60 240us 的低电平 void DS18B20 Reset DQ 1 nop 5 DQ 0 拉低总线 delay2us 280 持续 280 2 5 565s DQ 1 释放总线 while DQ 等待应答 电平拉低 while DQ 应答电平大约持续 60 240us 后重新拉高总线 2 读时序 1 在读取的时候单片机拉低电平大约 1us 2 单片机释放总线 然后读取总线 电平 3 这时候 DS18B20 会拉低电平 0 或拉高电平 1 4 读取电平过后 延迟大约 40 45us 读字节 主机总线 t0 时刻从高拉至低电平时 总线只须保持低电平 l 7us 之后在 t1 时刻将总线拉高产生读时间隙 读时间隙在 t1 时刻后 t2 时刻前有效 t2 距 t0 为 15us 也就是说 t2 时刻前主机必须完成读位 并在 t0 后的 60us 120us 内释放总线 注意读的时候从最低位向最高位读 uchar DS18B20 Read Byte uchar i temp 0 for i 0 i 1 DQ 0 主机将总线拉至低电平 只需保持 1 7us nop 保持一个时钟周期 也即 1us DQ 1 delay2us 1 延时 7us 一般读数在后半段读 if DQ temp temp 0 x80 delay2us 2 这里延时 45us 前面 7us 1us 53us 接近 60us return temp 3 写时序 1 单片机拉低电平大约 10 15us 2 单片机持续拉低电平 0 或拉高电平 1 大 约 20 45us 的时间 3 释放总线 6 写字节 当主机总线 t0 时刻从高拉至低电平时就产生写时间隙 从 to 时刻开始 15us 之内应将所需写的位送到总线上 在随后 15 60us 间 DS18B20 对总线采样若 低电平写入的位是 0 若高电平写入的位是 1 连续写 2 位间的间隙应大于 1us 注意 无论读写都是从最低位开始 void DS18B20 Write Byte uchar dat uchar i for i 0 i 1 4 读取温度流程 读温度 流程 复位 写命令 跳过读序列号 单个 DS18B20 时用 启动温度转换 等待转换完成 完成总线会跳回高电平 复位 写命令 跳过 ROM 编码命令 读取暂存寄存器字节命令 读低字节 读高字节 复位 合并高低字节 判断 正负 DS18B20 Read Temperature uchar temp low temp high DS18B20 Reset DS18B20 Write Byte 0 xcc DS18B20 Write Byte 0 x44 while DQ 等待转换完成 DS18B20 Reset DS18B20 Write Byte 0 xcc DS18B20 Write Byte 0 xbe temp low DS18B20 Read Byte temp high DS18B20 Read Byte 7 DS18B20 Reset tvalue temp high tvalue tvalue 8 temp low if tvalue 0 x0fff tflag 0 else tvalue tvalue 1 因为最高位的前五位是 1 所以寄存器存的是温度的补码 补 码要取反加一得到二进制数 tflag 1 tvalue tvalue 0 625 温度值扩大 10 倍 精确到 1 位小数 return tvalue 例子 DS18B20 1602 include include include define uchar unsigned char define uint unsigned int sbit DQ P2 3 ds18b20 与单片机连接口 sbit RS P2 6 sbit RW P2 7 sbit E P2 5 unsigned char code str1 temperature unsigned char code str2 uchar data disdata 5 uint tvalue 温度值 uchar tflag 温度正负标志 lcd1602 程序 声明调用函数 void Lcd W Cmd uchar com void Lcd W Dat uchar dat uchar Lcd R Busy void Lcd Init void delay uchar t void delay 4 nop 延时 define delay 4 nop nop nop nop nop void delay uchar t uchar i j for i 0 i t i 8 for j 0 j 50 j void Lcd Init uchar i Lcd W Cmd 0 x3c Lcd W Cmd 0 x0e Lcd W Cmd 0 x01 Lcd W Cmd 0 x06 Lcd W Cmd 0 x80 for i 0 i strlen str1 i Lcd W Dat str1 i Lcd W Cmd 0 xC0 for i 0 i strlen str2 i Lcd W Dat str2 i uchar Lcd R Busy uchar s RW 1 delay 4 nop RS 0 delay 4 nop E 1 delay 4 nop s P0 delay 4 nop E 0 return s void Lcd W Cmd uchar com uchar i do i Lcd R Busy 9 i i delay 2 while i 0 RW 0 delay 4 nop RS 0 delay 4 nop E 1 delay 4 nop P0 com delay 4 nop E 0 void Lcd W Dat uchar dat uchar i do i Lcd R Busy i i delay 2 while i 0 RW 0 delay 4 nop RS 1 delay 4 nop E 1 delay 4 nop P0 dat delay 4 nop E 0 ds1820 程序 void delay2us unsigned int i 延时 1 微秒 while i 牛人实测 本人没有做过试验 针对的是 12Mhz 的晶振 delay 0 延时 518us 误差 518 2 256 6 delay 1 延时 7us 原帖写 5us 是错的 10 delay 10 延时 25us 误差 25 20 5 delay 20 延时 45us 误差 45 40 5 delay 100 延时 205us 误差 205 200 5 delay 200 延时 405us 误差 405 400 5 复位 主机 t0 时刻发送一复位脉冲 最短为 480us 的低电平信号 接着在 t1 时刻释放总线 拉高总线电平 进入接收状态 DS18B20 在检测到总线的上升沿之后等待 15 60us 接着 DS18B20 在 t2 时刻发出存在脉冲 持续 60 240us 的低电平 void DS18B20 Reset DQ 1 nop DQ 0 拉低总线 delay2us 280 持续 280 2 5 565s DQ 1 释放总线 while DQ 等待应答 电平拉低 while DQ 应答电平大约持续 60 240us 后重新拉高总线 读字节 主机总线 t0 时刻从高拉至低电平时 总线只须保持低电平 l 7us 之后在 t1 时刻将总线拉高产生读时间隙 读时间隙在 t1 时刻后 t2 时刻前有效 t2 距 t0 为 15us 也就是说 t2 时刻前主机必须完成读位 并在 t0 后的 60us 120us 内释放总线 注意读的时候从最低位向最高位读 uchar DS18B20 Read Byte uchar i temp 0 for i 0 i 1 DQ 0 主机将总线拉至低电平 只需保持 1 7us nop 保持一个时钟周期 也即 1us DQ 1 delay2us 1 延时 7us 一般读数在后半段读 if DQ temp temp 0 x80 delay2us 2 这里延时 45us 前面 7us 1us 53us 接近 60us 11 return temp 写字节 当主机总线 t0 时刻从高拉至低电平时就产生写时间隙 从 to 时刻开始 15us 之内应将所需写的位送到总线上 在随后 15 60us 间 DS18B20 对总线采样若 低电平写入的位是 0 若高电平写入的位是 1 连续写 2 位间的间隙应大于 1us 注意 无论读写都是从最低位开始 void DS18B20 Write Byte uchar dat uchar i for i 0 i 1 读温度 流程 复位 写命令 跳过读序列号 单个 DS18B20 时用 启动温度转换 等待转换完成 完成总线会跳回高电平 复位 写命令 跳过 ROM 编码命令 读取暂存寄存器字节命令 读低字节 读高字节 复位 合并高低字节 判断 正负 DS18B20 Read Temperature uchar temp low temp high DS18B20 Reset DS18B20 Write Byte 0 xcc DS18B20 Write Byte 0 x44 while DQ 等待转换完成 DS18B20 Reset DS18B20 Write Byte 0 xcc DS18B20 Write Byte 0 xbe temp low DS18B20 Read Byte temp high DS18B20 Read Byte DS18B20 Reset tvalue temp high tvalue tvalu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2309-2025重点排放单位碳计量审查规范
- 2025年第2批次浙江宁波前湾产业集团有限公司招聘9人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025福建厦门市集美区幸福幼儿园招聘1人模拟试卷(含答案详解)
- 2025年甘肃省武威市事业单位招聘628人【教育岗48人】模拟试卷及一套参考答案详解
- 2025江苏宿迁市泗洪县卫健系统面向社会招聘工作人员5人模拟试卷有完整答案详解
- 安全培训教室证书课件
- 2025年5月四川西南石油大学考试招聘事业编制辅导员15人考前自测高频考点模拟试题及一套完整答案详解
- 安全培训教学资料课件
- 2025辽宁本溪高新区国有企业招聘6人模拟试卷及完整答案详解
- 2025北京大学医学部总务处房地产管理中心宿舍管理员招聘1人考前自测高频考点模拟试题及完整答案详解
- CNN 卷积神经网络介绍
- 北师大版五年级上册数学《练习四》
- 新概念英语第二册优质课件Lesson5 NCE2新概念2
- 铸剑先生行为分析技术
- 11、2015年10月25日广东省直机关公开遴选公务员笔试真题解析
- 有理数的乘法说课课件(说课一等奖)
- 口腔颌面外科学第十章 口腔颌面部损伤
- JJG 520-2005粉尘采样器
- stata回归结果详解-stata回归解释
- 审计综合实训(周海彬)答案项目三+货币资金审计程序表
- 药品经营质量风险分析评估报告
评论
0/150
提交评论