




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DS18B20 一线总线数字式传感器一线总线数字式传感器 DS18B20 DS1822 一线总线 数字化温度传感器是 DALLAS 最新单线数字温度传感器 同 DS1820 一样 DS18B20 也 支持 一线总线 接口 测量温度范围为 55 C 125 C 在 10 85 C 范围内 精度为 0 5 C DS1822 的精度较差为 2 C 现场温度直接以 一线总线 的数字方式传输 大大提高了系统的抗干扰性 适合于恶劣环境的现场温度测量 与前一代 产品不同 新的产品支持 3V 5 5V 的电压范围 使系统设计更灵活 方便 而且新一代产 品更便宜 体积更小 DS18B20 可以程序设定 9 12 位的分辨率 精度为 0 5 C 可选更小的 封装方式 更宽的电压适用范围 分辨率设定 及用户设定的报警温度 存储在 EEPROM 中 掉电后依然保存 DS18B20 的性能是新一代产品中最 好的 性能价格比也非常出色 DS1822 与 DS18B20 软件兼容 是 DS1 8B20 的简化版本 省略了存储用户定义报警温度 分辨率参数的 EEPRO M 精度降低为 2 C 适用于对性能要求不高 成本控制严格的应用 是经济型产品 继 一线总线 的早期产品后 DS1820 开辟了温度传 感器技术的新概念 DS18B20 和 DS1822 使电压 特性及封装有更多的选 择 让我们可以构建适合自己的经济的测温系统 DS18B20 的内部结构 DS18B20 内部结构主要由四部分组成 64 位光刻 ROM 温度传感器 非挥发的温度报警触发器 TH 和 TL 配置寄存器 DS18B20 的管脚排列 如下 DQ 为数字信号输入 输出端 GND 为电源地 VDD 为外接供电电源输 入端 在寄生电源接线方式时接地 光刻 ROM 中的 64 位序列号是出厂前被光刻好的 它可以看作是该 D S18B20 的地址序列码 64 位光刻 ROM 的排列是 开始 8 位 28H 是产 品类型标号 接着的 48 位是该 DS18B20 自身的序列号 最后 8 位是前 面 56 位的循环冗余校验码 CRC X8 X5 X4 1 光刻 ROM 的作用是使 每一个 DS18B20 都各不相同 这样就可以实现一根总线上挂接多个 DS1 8B20 的目的 DS18B20 中的温度传感器可完成对温度的测量 以 12 位转化为例 用 16 位符号扩展的二进制补码读数形式提供 以 0 0625 LSB 形式表 达 其中 S 为符号位 这是 12 位转化后得到的 12 位数据 存储在 18B20 的两个 8 比特的 R AM 中 二进制中的前面 5 位是符号位 如果测得的温度大于 0 这 5 位 为 0 只要将测到的数值乘于 0 0625 即可得到实际温度 如果温度小于 0 这 5 位为 1 测到的数值需要取反加 1 再乘于 0 0625 即可得到实际 温度 例如 125 的数字输出为 07D0H 25 0625 的数字输出为 0191H 25 0625 的数字输出为 FF6FH 55 的数字输出为 FC90H DS18B20 温度传感器的存储器 DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个 非易失性的可电擦除的 E2RAM 后者存放高温度和低温度触发器 TH TL 和结构寄存器 暂存存储器包含了 8 个连续字节 前两个字节是测得的温度信息 第一个字节的内容是温度的低八位 第二个字节是温度的高八位 第三 个和第四个字节是 TH TL 的易失性拷贝 第五个字节是结构寄存器的 易失性拷贝 这三个字节的内容在每一次上电复位时被刷新 第六 七 八个字节用于内部计算 第九个字节是冗余检验字节 该字节各位的意义如下 TM R1 R0 1 1 1 1 1 低五位一直都是 1 TM 是测试模式位 用于设置 DS18B20 在工作模式 还是在测试模式 在 DS18B20 出厂时该位被设置为 0 用户不要去改动 R1 和 R0 用来设置分辨率 如下表所示 DS18B20 出厂时被设置为 12 位 分辨率设置表 R1 R0 分辨 温度最大转 率 换时间 0 0 9 位 93 75ms 0 1 10位 187 5ms 1 0 11位 375ms 1 1 12位 750ms 根据 DS18B20 的通讯协议 主机控制 DS18B20 完成温度转换必须经 过三个步骤 每一次读写之前都要对 DS18B20 进行复位 复位成功后发 送一条 ROM 指令 最后发送 RAM 指令 这样才能对 DS18B20 进行预定的 操作 复位要求主 CPU 将数据线下拉 500 微秒 然后释放 DS18B20 收 到信号后等待 16 60 微秒左右 后发出 60 240 微秒的存在低脉冲 主 CPU 收到此信号表示复位成功 DS1820 使用中注意事项 DS1820 虽然具有测温系统简单 测温精度高 连接方便 占用口线 少等优点 但在实际应用中也应注意以下几方面的问题 1 较小的硬件开销需要相对复杂的软件进行补偿 由于 DS1820 与 微处理器间采用串行数据传送 因此 在对 DS1820 进行读写编程时 必须严格的保证读写时序 否则将无法读取测温结果 在使用 PL M C 等高级语言进行系统程序设计时 对 DS1820 操作部分最好采用汇编语 言实现 2 在 DS1820 的有关资料中均未提及单总线上所挂 DS1820 数量问 题 容易使人误认为可以挂任意多个 DS1820 在实际应用中并非如此 当单总线上所挂 DS1820 超过 8 个时 就需要解决微处理器的总线驱动 问题 这一点在进行多点测温系统设计时要加以注意 3 连接 DS1820 的总线电缆是有长度限制的 试验中 当采用普通 信号电缆传输长度超过 50m 时 读取的测温数据将发生错误 当将总线 电缆改为双绞线带屏蔽电缆时 正常通讯距离可达 150m 当采用每米绞 合次数更多的双绞线带屏蔽电缆时 正常通讯距离进一步加长 这种情 况主要是由总线分布电容使信号波形产生畸变造成的 因此 在用 DS1 820 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问 题 4 在 DS1820 测温程序设计中 向 DS1820 发出温度转换命令后 程序总要等待 DS1820 的返回信号 一旦某个 DS1820 接触不好或断线 当程序读该 DS1820 时 将没有返回信号 程序进入死循环 这一点在 进行 DS1820 硬件连接和软件设计时也要给予一定的重视 测温电缆线建议采用屏蔽4芯双绞线 其中一对线接地线与信号线 另一组接 VCC 和地线 屏蔽层在源端单点接地 本站实验板实验程序 本站实验板实验程序 这是关于 DS18B20 的读写程序 数据脚 P2 2 晶振 12MHZ 温度传感器18B20汇编程序 采用器件默认的12位转化 最大转化时间 750 微秒 可以将检测到的温度直接显示到 AT89C51 开发实验板的两个数码管上 显示温度 00 到 99 度 很准确哦 无需校正 ORG 0000H 单片机内存分配申明 TEMPER L EQU 29H 用于保存读出温度的低 8 位 TEMPER H EQU 28H 用于保存读出温度的高 8 位 FLAG1 EQU 38H 是否检测到 DS18B20 标志位 a bit equ 20h 数码管个位数存放内存位置 b bit equ 21h 数码管十位数存放内存位置 MAIN LCALL GET TEMPER 调用读温度子程序 进行温度显示 这里我们考虑用网站提供的两位数码管来显示温度 显示范围 00 到 99 度 显示精度为 1 度 因为12位转化时每一位的精度为0 0625度 我们不要求显示小数所以 可以抛弃 29H 的低 4 位 将 28H 中的低 4 位移入 29H 中的高 4 位 这样获得一个新字节 这个字 节就是实际测量获得的温度 MOV A 29H MOV C 40H 将 28H 中的最低位移入 C RRC A MOV C 41H RRC A MOV C 42H RRC A MOV C 43H RRC A MOV 29H A LCALL DISPLAY 调用数码管显示子程序 CPL P1 0 AJMP MAIN 这是 DS18B20 复位初始化子程序 INIT 1820 SETB P3 5 NOP CLR P3 5 主机发出延时 537 微秒的复位低脉冲 MOV R1 3 TSR1 MOV R0 107 DJNZ R0 DJNZ R1 TSR1 SETB P3 5 然后拉高数据线 NOP NOP NOP MOV R0 25H TSR2 JNB P3 5 TSR3 等待 DS18B20 回应 DJNZ R0 TSR2 LJMP TSR4 延时 TSR3 SETB FLAG1 置标志位 表示 DS1820 存在 CLR P1 7 检查到 DS18B20 就点亮 P1 7LED LJMP TSR5 TSR4 CLR FLAG1 清标志位 表示 DS1820 不存在 CLR P1 1 点亮 P1 1 脚 LED 表示温度传感器通信失败 LJMP TSR7 TSR5 MOV R0 117 TSR6 DJNZ R0 TSR6 时序要求延时一段时间 TSR7 SETB P3 5 RET 读出转换后的温度值 GET TEMPER SETB P3 5 LCALL INIT 1820 先复位 DS18B20 JB FLAG1 TSS2 CLR P1 2 RET 判断 DS1820 是否存在 若 DS18B20 不存在则返回 TSS2 CLR P1 3 DS18B20 已经被检测到 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOV A 44H 发出温度转换命令 LCALL WRITE 1820 这里通过调用显示子程序实现延时一段时间 等待 AD 转换结束 12 位 的话 750 微秒 LCALL DISPLAY LCALL INIT 1820 准备读温度前先复位 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOV A 0BEH 发出读温度命令 LCALL WRITE 1820 LCALL READ 18200 将读出的温度数据保存到 35H 36H CLR P1 4 RET 写 DS18B20 的子程序 有具体的时序要求 WRITE 1820 MOV R2 8 一共 8 位数据 CLR C WR1 CLR P3 5 MOV R3 6 DJNZ R3 RRC A MOV P3 5 C MOV R3 23 DJNZ R3 SETB P3 5 NOP DJNZ R2 WR1 SETB P3 5 RET 读 DS18B20 的程序 从 DS18B20 中读出两个字节的温度数据 READ 18200 MOV R4 2 将温度高位和低位从 DS18B20 中读出 MOV R1 29H 低位存入 29H TEMPER L 高位存入 28H TEMPER H RE00 MOV R2 8 数据一共有 8 位 RE01 CLR C SETB P3 5 NOP NOP CLR P3 5 NOP NOP NOP SETB P3 5 MOV R3 9 RE10 DJNZ R3 RE10 MOV C P3 5 MOV R3 23 RE20 DJNZ R3 RE20 RRC A DJNZ R2 RE01 MOV R1 A DEC R1 DJNZ R4 RE00 RET 显示子程序 display mov a 29H 将 29H 中的十六进制数转换成 10 进制 mov b 10 10 进制 10 10 进制 div ab mov b bit a 十位在 a mov a bit b 个位在 b mov dptr numtab 指定查表启始地址 mov r0 4 dpl1 mov r1 250 显示 1000 次 dplop mov a a bit 取个位数 MOVC A A DPTR 查个位数的 7 段代码 mov p0 a 送出个位的 7 段代码 clr p2 0 开个位显示 acall d1ms 显示 1ms setb p2 0 mov a b bit 取十位数 MOVC A A DPTR 查十位数的 7 段代码 mov p0 a 送出十位的 7 段代码 clr p2 1 开十位显示 acall d1ms 显示 1ms setb p2 1 djnz r1 dplop 100 次没完循环 djnz r0 dpl1 4 个 100 次没完循环 ret 1MS 延时 按 12MHZ 算 D1MS MOV R7 80 DJNZ R7 RET 实验板上的 7 段数码管 0 9 数字的共阴显示代码 numtab DB 0F3H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H end 以下是第二种采集和处理程序供参考以下是第二种采集和处理程序供参考 温度传感器18B20汇编程序 采用器件默认的12位转化 最大转化时间 750 微秒 将温度数据通过串口发送出去 波特率 2400 本程序专为 AT89C51 实验开发板编写 适合 12 晶振 本程序经过验证 可以显示温度 和两位整数温度和两位小数温度数 据 DOT EQU 30H ZHENGSHU EQU 31H FLAG1 EQU 38H 是否检测到 DS18B20 的标志位 定义温度数据 DIS 1 EQU 32H 符号 DIS 2 EQU 33H 十位 DIS 3 EQU 34H 个位 DIS 4 EQU 35H 小数点后第一位 DIS 5 EQU 36H 小数点后第二位 WDDATA BIT P2 2 定义 DS18B20 的数据脚为 P2 2 端口 ORG 0000H 以下为主程序进行 CPU 中断方式设置 CLR EA 关闭总中断 MOV SCON 50H 设置成串口 1 方式 MOV TMOD 20H 波特率发生器 T1 工作在模式 2 上 MOV TH1 0F3H 预置初值 按照波特率 2400BPS 预置初值 MOV TL1 0F3H 预置初值 按照波特率 2400BPS 预置初值 SETB TR1 启动定时器 T1 以上完成串口 2400 通讯初始化设置 主程序 MAIN LCALL INIT 1820 调用复位 DS18B20 子程序 MAIN1 LCALL GET TEMPER 调用读温度子程序 LCALL FORMULA 通过公式计算 小数点后显示两位 LCALL BCD LCALL DISPLAY 调用串口显示子程序 LCALL DELAY500 延时 0 5 秒 LCALL DELAY500 延时 0 5 秒 LCALL DELAY500 延时 0 5 秒 AJMP MAIN1 DS18B20 复位初始化程序 INIT 1820 SETB WDDATA NOP CLR WDDATA 主机发出延时 540 微秒的复位低脉冲 MOV R0 36 LCALL DELAY SETB WDDATA 然后拉高数据线 NOP NOP MOV R0 36 TSR2 JNB WDDATA TSR3 等待 DS18B20 回应 DJNZ R0 TSR2 LJMP TSR4 延时 TSR3 SETB FLAG1 置标志位 表示 DS1820 存在 LJMP TSR5 TSR4 CLR FLAG1 清标志位 表示 DS1820 不存在 LJMP TSR7 TSR5 MOV R0 06BH TSR6 DJNZ R0 TSR6 复位成功 时序要求延时一段时间 TSR7 SETB WDDATA RET 读出转换后的温度值 GET TEMPER SETB WDDATA 定时入口 LCALL INIT 1820 先复位 DS18B20 JB FLAG1 TSS2 RET 判断 DS1820 是否存在 若 DS18B20 不存在则返回 TSS2 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOV A 44H 发出温度转换命令 LCALL WRITE 1820 MOV R0 50 等待 AD 转换结束 12 位的话 750 微秒 LCALL DELAY LCALL INIT 1820 准备读温度前先复位 MOV A 0CCH 跳过 ROM 匹配 LCALL WRITE 1820 MOV A 0BEH 发出读温度命令 LCALL WRITE 1820 LCALL READ 18200 将读出的九个字节数据保存到 60H 68H RET 写 DS18B20 的子程序 有具体的时序要求 WRITE 1820 MOV R2 8 一共 8 位数据 CLR C WR1 CLR WDDATA MOV R3 6 DJNZ R3 RRC A MOV WDDATA C MOV R3 24 DJNZ R3 SETB WDDATA NOP DJNZ R2 WR1 SETB WDDATA RET 读 DS18B20 的程序 从 DS18B20 中读出九个字节的数据 READ 18200 MOV R4 9 MOV R1 60H 存入 60H 开始的九个单元 RE00 MOV R2 8 RE01 CLR C SETB WDDATA NOP NOP CLR WDDATA NOP NOP NOP SETB WDDATA MOV R3 09 RE10 DJNZ R3 RE10 MOV C WDDATA MOV R3 23 RE20 DJNZ R3 RE20 RRC A DJNZ R2 RE01 MOV R1 A INC R1 DJNZ R4 RE00 RET 温度计算子程序 FORMULA 按公式 T 实际 T 整数 0 25 M 每度 M 剩余 M 每度 计算出实际温度 整数部分和小数部分分别存于 ZHENGSHU 单元和 DOT 单元 将 61H 中的低 4 位移入 60H 中的高 4 位 得到温度的整数部分 并存 于 ZHENGSHU 单元 MOV 29H 61H MOV A 60H MOV C 48H RRC A MOV C 49H RRC A MOV C 4AH RRC A MOV C 4BH RRC A MOV ZHENGSHU A M 每度 M 剩余 M 每度 小数值存于 A 中 MOV A 67h SUBB A 66h MOV B 64H MUL AB MOV R4 B MOV R5 A MOV R7 67H LCALL DIV457 MOV A R3 再减去 0 25 实际应用中减去 25 SUBB A 19H MOV DOT A 小数部分存于 DOT 中 MOV A ZHENGSHU SUBB A 00H 整数部分减去来自小数部分的借位 MOV ZHENGSHU A MOV C 4BH JNC ZHENG 是否为负数 CPL A INC A MOV DIS 1 2DH 零度以下时 第一位显示 号 MOV ZHENGSHU A ZHENG MOV DIS 1 2BH 零度以上时 第一位显示 号 RET 双字节除以单字节子程序 DIV457 CLR C MOV A R4 SUBB A R7 JC DV50 SETB OV 商溢出 RET DV50 MOV R6 8 求平均值 R4R5 R7 R3 DV51 MOV A R5 RLC A MOV R5 A MOV A R4 RLC A MOV R4 A MOV F0 C CLR C SUBB A R7 ANL C F0 JC DV52 MOV R4 A DV52 CPL C MOV A R3 RLC A MOV R3 A DJNZ R6 DV51 MOV A R4 四舍五入 ADD A R4 JC DV53 SUBB A R7 JC DV54 DV53 INC R3 DV54 CLR OV RET 转换成非压缩的 BCD 码 BCD MOV A ZHENGSHU MOV B 0AH DIV AB ORL A 00110000B 转换成 ASCII 码 MOV DIS 2 A MOV DIS 3 B MOV A DIS 3 ORL A 00110
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年人护理知识培训材料课件
- 健身房专业策划
- 全国一等奖高中语文统编版必修上册《拿来主义》 公开课课件
- 实数的混合运算(60题)-2024北师大版八年级数学上册(含答案)
- 热点作家:乔叶(原卷版)-2026年中考语文复习之现代文阅读热点作家作品
- 数轴上的动点问题-2025-2026学年人教版七年级数学上册
- 题型18 实验题之探究成分类-2023年中考化学二轮复习题型专练
- 外研版八年级英语上册第一学期期中学情评估卷(含答案)
- 生物与环境-2025年高考生物专项复习解析版
- 老年人健康知识培训内容课件
- 肾损伤诊疗与护理常规
- 车棚建设与光伏发电项目合作协议
- 消防维保质量管理及保证措施
- 2025年上海市(秋季)高考语文真题详解
- 转岗安全培训课件
- 品牌沙龙活动策划方案
- 传统文化公司管理制度
- 安徽芜湖鸠兹水务有限公司人员招聘笔试真题2024
- 科技论文写作 第2版 课件 第1-5章 科技论文写作概述-英文科技论文的写作
- 2025年农业经济管理基础知识试卷及答案
- 2025年教师参加初中英语新教材培训心得体会
评论
0/150
提交评论