编辑: 黎文定 | 2019-09-01 |
09 -
13 作者简介 :闫胜利(1964 ,3 - ) ,男(汉) ,内蒙古 ,工程师 主要研究自动化及计算机硬件 ,(0431)
5686353 闫胜利 ,王朝瑞 (11 长春工程学院 信息工程系 ,长春
130021 ;
21 长春第二热电有限责任公司 ,长春 130031) 摘要以一个实际的温度控制系统的设计为例 , 详细地介绍了 DS18B20 的硬件设计方法和软件设计 方法 ,给出了完整的硬件电路及汇编程序.
关键词 单总线 ;
温度 ;
程序 中图分类号 :TP36811 文献标识码 :A 文章编号:100928984(2002)
0420055204 1 DS18B20 简介 DS18B20 是美国 DALLAS 公司生产的单线数字 温度传感器芯片 ,具有结构简单、 体积小、 功耗小、 抗 干扰能力强、 使用简单等优点.它的 ROM 中存有其 芯片的唯一标识码 ,即任意两个 DS18B20 的标识码 是不同的 ,特别适合与微处理芯片构成多点温度测 控系统.DS18B20 是DS1820 的改进型(DS1820 已停 产) ,分辨率为 9~12 位可编程控制 ,由其寄存器 R
0、 R1 两位的状态决定 ,如表 1. 表1分辨率设置 R1 R0 分辨率 最大转换时间
0 0
9 位93. 75ms
0 1
10 位187. 5ms
1 0
11 位375ms
1 1
12 位750ms 从图
1 中看出 ,DS18B20 主要由内部寄生电源、
64 位激光 ROM 和单线接口、 高速 RAM、 温度上下限 存储器、 CRC 循环冗余校验码发生器、 温度传感器以 及配置存储器等几部分组成.DS18B20 片内有一个
64 位激光 ROM ,存储 CRC 校验码、
48 位标识码 (序 列号) 和型号代码 ,DS18B20 的型号代码为 28H ,结 构如下 :
8 位CRC 检验码
48 位序列号
8 位产品型号 (28H) DS18B20 被测温度值以 单总线 的数字方式传 输.其内部采用在板温度测量专利技术 ,测量范围 为-55 ℃ ~ +
125 ℃,精度为 ± 0.
5 ℃.用户可设定 非易失性温度报警上下限值 TH 和TL(非易失) . DS18B20 在完成温度变换后 ,所测温度值将自动与 贮存在 TH 和TL内的触发值相比较 ,如果测温结果 高于 TH 或低于 T L ,DS18B20 内部的告警标志就会 被置位 ,表示温值超出了测量范围 ,同时还有报警搜 索命令识别出温度超限的 DS18B20. 图1DS18B20 的内部结构框图 表2ROM 操作指令 指令说明读ROM(33H) 读序列号 匹配 ROM (55H) 跟随在读序列号后的命令 ,用于 对多个 DS18B20 的定位 跳过 ROM (CCH) 执行命令后 ,存储器操作将针对 在线的全部 DS18B20 搜索 ROM (F0H) 识别总线上的 DS18B20 的编码 报警搜索 (ECH) 超出设定上下限时对该命令作 出响应 DS18B20 的内部存储器包括一个暂存 RAM 和 一个非易失性电可擦除 ( EE) RAM.( EE) RAM 存放 ISSN
100928984 CN 2221323/ N 长春工程学院学报 (自然科学版)
2002 年第3卷第4期J.Changchun Inst. Tech. (Nat. Sci. Edi. ) ,2002 ,Vol.
3 ,No.
4 20/
25 55259 ? 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. 高温度和低温度触发器 TH、 T L 和结构寄存器 ,表2是对 ROM 的操作命令 ;
暂存能够保证在单线通信时 数据的完整性 ,包括
8 个字节 ,数据格式如下 : 前两个字节是测得的温度值 ,第1个字节的内 容是温度的低
8 位 ,第
2 个字节是温度的高
8 位. 第3个和第
4 个字节是 TH、 T L 的易失性拷贝 ,第5个字节是结构寄存器的易失性拷贝 ,这3个字节的 内容在每一次上电复位时被刷新.第
6、
7、
8 个字节 用于内部计算.第9个字节是冗余检验字节.S =
1 时表示温度为负 ,S =
0 时表示温度为正 ,其余低位 以二 进制补码形式表示,最低位为1时表示0.
0625 ℃.温度/ 数字对应关系如表
3 所示. 表3温度/ 数字对应关系表 温度( ℃ ) 输出的二进制码 对应的十六进制码 +
125 0000
0111 1101
0000 07D0H +
85 0000
0101 0101
0000 0550H + 25.
0625 0000
0001 1001
0001 0191H 10.
125 0000
0000 1010
0010 00A2H 0.
5 0000
0000 0000
1000 0008H
0 0000
0000 0000
0000 0000H - 0.
5 1111
1111 1111
1000 FFF8H - 10.
125 1111
1111 0101
1110 FF5EH - 25.
0625 1111
1110 0110
1111 FF6FH -
55 1111
1100 1001
0000 FC90H
2 基于 DS18B20 的单片机控制测温系 统硬件设计 图2为锅炉温度及给水系统控制电原理图.系 统主要由微控制芯片 AT89C51 和DS18B20 构成 ,可 以监控锅炉的温度和水位 ,具有
4 位温度显示和报 警输出 ,执行控制码由 P
0、 P2 口输出(执行电路限于 篇幅未画出) ,具有自动上水、 自动点火、 自动控制供 水温度的控制功能 ;
系统具有掉电保护功能 ,用户可 自行设置温度范围.图中 DS18B20 使用三线接法 (如果使用 DS18B20 的寄生电源接法则在 P2.
0 与电 源间接一场效应管 ,用P2.
1 控制 ,将DS18B20 的其 余两个管脚接地即可) ,是考虑温度测控点距离较 远 ,力求作到准确无误.图中 K
1、 K
2、 K
3、 K4 分别为 报警温度设定、 增加、 减少、 确定键 ;
X25045 是把看 门狗定时器、 电压监控和 EEPROM 组合在单个封装 之内的集成电路 ,看门狗定时器对微控制器提供了 独立的保护系统 ,当系统故障时 ,在选定的超时时间 之后 ,X25045 的看门狗将以 RESET 信号作出响应. 利用 X25045 低VCC 检测电路 ,可以保护系统使之 免受低电压的影响.当VCC 降到最小 VCC 转换点 以下时 ,系统复位.复位一直到 VCC 返回规定值且 稳定为止. 同时 X25045 能够保护现场数据 ,使系统 复位后能够与复位前连续运行.本系统设计时考虑 温度精度不需要太高 ,所以用 ± 0.
5 ℃ 的精度 ,显示 用4位.显示方式为典型的串行显示方式 ,由串行 口TXD、 RXD、 74LS164 和8段数码管组成 ;
U
3、 U4 两 只发光二极管的作用是在显示时间时作时分分隔点 : 用 ,同时每秒闪亮一次作秒指示.(如果需要更 高的精度显示 ,只须增加 74LS164 和8段数码管即 可) . T LC549 是以
8 位开关电容逐次逼近 A/ D 转换 器为基础而构造的 CMOS A/ D 转换器.能通过
3 态 数据输出与微处理器或外围设备串行通讯.系统用 T LC549 检测锅炉水位 ,完成自动加水功能.
3 软件设计 DS18B20 以单总线协议工作 ,AT89C51 首先发 送复位脉冲 ,使信号线上所有的 DS18B20 芯片都被 复位 ,接着发送 ROM 操作命令 ,使序列号编码匹配 的DS18B20 被激活进入接收内存访问命令状态.内 存访问命令完成温度转换、 读取等工作 (单总线在 ROM命令发送之前存储命令和控制命令不起作 用) .工作流程图见图 3. 系统 以ROM 命令和存储器命令的形式对DS18B20 操作.ROM 操作命令均为
8 位 ,命令代码 分别为 :读ROM(33H) 、 匹配 ROM(55H) 、 跳过 ROM (CCH) 、 搜索 ROM ( F0H) 和告警搜索 ( ECH) 命令. 存储器操作命令为 :写暂存存储器 (4EH) 、 读暂存存 储器 (BEH) 、 复制暂存存储 器(48H) 、 温度变换(44H) 、 重新调出 EERAM (B8H) 和读电源供电方式 (B4H) 命令. DS18B20 对时序及电特性参数要求较高 ,必须 严格按照 DS18B20 的时序要求去操作.DS18B20 数 据的读写由主机读写时间来完成的 ,包括初始化、 读 数据和写数据. 主机控制 DS18B20 完成任何操作之前必须先初 始化 ,即主机发一复位脉冲 (最短为
480 μs 的低电 平) ,接着主机释放总线进入接收状态 ,DS18B20 在 检测到 P0.
0 引脚上的上升沿之后 ,等待 15~60 μs , 然后发出存在脉冲(60~240 μs 的低电平) .
6 5 长春工程学院学报(自然科学版)
2002 ,3(4) ? 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. 图2锅炉温度及给水控制系统电原理图 写数据 :将数据线从高电平拉至低电平 ,产生写 起始信号.在15 μs 之内将所需写的位送到数据线 上 ,在
15 μs 到60 μs 之间对数据线进行采样 ,如果采 样为高电平 ,就写
1 ,如果为低电平写 0.在开始另 一个写周期前必须有
1 μs 以上的高电平恢复期. 读数据 : 主机将数据线从高电平拉至低电平
1 μs 以上 ,再使数据线升为高电平 ,从而产生读起始 信号.主机在读时间片下降沿之后
15 μs 内完成读 位.每个读周期最短的持续期为
60 μs ,各个读周期 之间也必须有
1 μs 以上的高电平恢复期. 以下为两点测温部分子程序 : ;
开始温度检测 LCALL RESET;
对DS18B20 发复位命令. MOV A , # 0CCH;
发跳过 DS18B20 命令机 器代码. LCALL WRBYTE MOV A , # 44H;
对DS18B20 发温度转换 命令. LCALL WRBYTE LCALL DELAY;
DS18B20 温度转换所需延
7 5 闫胜利 ,等 :基于 DS18B20 的温度控制系统设计 ? 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. 图3DS18B20 工作流程 时1S. MOV R1 , # 30H MOV 30H , # 28H;
将所读的 DS18B20 序列 号存于内部 RAM 中 ,地址单元为 :30H - 3FH. MOV 31H , # 9BH;
注意如果对于
6 个以上 的话 ,一般把他们的序列号存于外部 RAM 中. MOV 32H , # 0BBH MOV 33H , # 22H MOV 34H , # 0H MOV 35H , # 0H MOV 36H , # 0H MOV 37H , # 1FH MOV 38H , # 28H MOV 39H , # 3AH MOV 3AH , # 0F0H MOV 3BH , # 22H MOV 3CH , # 0H MOV 3DH , # 0H MOV 3EH , # 0H MOV 3FH , # 0EDH MOV R4 , # 2H;
总线上 DS18B20 的数目. CYCLE: LCALL RESET;
对DS18B20 发复位命令. MOV A , # 55H;
总线发匹配命令. LCALL WRBYTE MOV R6 , # 8H;
DS18B2 的序列号占
8 个 字节. CY1 : MOV A , @R1 ;
总线发一个 DS18B20 的序 列号. LCALL WRBYTE INC R1 DJNZ R6 ,CY1 MOV A , # 0BEH;
发读取温度的命令的机 器代码. LCALL WRBYTE LCALL READ ;
读温度值 ,低字节送 50H. MOV 50H ,ACC;
高字节送 51H. LCALL READ MOV 51H ,ACC LCALL RESET;
发复位命令. LCALL DISP ;
调用显示程序. DJNZ R4 ,CYCLE;
判断 DS18B20 有无都显 示完毕. LJMP START RESET:PUSH B ;
对DS18B20 的复位子程序. PUSH ACC BACK: MOV A , #
200 ;
使总线低电平保持 600us. L1 : CLR P0.
0 DJNZ ACC ,L1 SETB P0.
0 ;
释放总线. MOV B , #
30 DJNZ B ,S | CLR C ORL C ,P0.
0 JC BACK MOV B , #
80 L2 : ORL C ,P0.
0 JC L3 ;
复位成功 ,跳转. DJNZ B , L2 SJMP BACK;
复位失败重来. L3 : MOV B , #
240 DJNZ B ,S | POP ACC POP B RET
8 5 长春工程学院学报(自然科学版)
2002 ,3(4) ? 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. WRBYTE: PUSH PSW;
往DS18B20 写一个字节子 程序. SETB PSW.
3 CLR PSW.
4 MOV R6 , #
8 WRBIT: SETB P0.
0 MOV R7 , #
7 RRC A CLR P0.
0 NOP NOP DJNZ R7 ,S | MOV P0.
0 ,C MOV R7 , #
20 DJNZ R7 ,S | DJNZ R6 ,WRBIT SETB P0.
0 ;
总线在空闲状态时 ,应为高 电平. POP PSW RET DISP : PUSH PSW SETB PSW.
4 CLR PSW.
3 MOV A ,51H ;
将温度高字节数据拿出来 分析 , RLC A CLR C MOV R6 , #
4 ;
对温度值进行处理右移
4 位. DISPP : MOV A ,51H RRC A MOV 51H ,A MOV A ,50H RRC A MOV 50H ,A DJNZ R6 ,DISPP MOV 10H ,C;
将判断有无 0.
5 送位地址 10H. MOV R0 ,50H;
将温度值的整数部分送 R0. LCALL CHULI;
将二进制的数转换成BCD 码. CHULI: PUSH PSW;
将二进制数转换成 BCD 码 程序. SETB PSW.
4 CLR PSW.
3 MOV A ,R0 MOV B , # 64H DIV AB MOV R3 ,A MOV A , # 0AH XCH A ,B DIV AB MOV R4 ,A MOV A ,B MOV R5 ,A POP PSW RET READ : PUSH B ;
从DS18B20 里读取数据的子 程序. PUSH PSW SETB PSW.
3 CLR PSW.
4 MOV B , #
8 END
4 结语DS18B20 三线制应用时 ,应将 VDD、 DQ、 G ND 三 线焊接牢固 ;
两线应用时 ,应将其的 VDD 与GND 接 在一起 ,焊接牢固.若VDD 脱开未接 ,传感器会只 送+85.
0 ℃ 的温度值. 测温电缆线建议采用屏蔽
4 芯双绞线 ,其中一对线接地线与信号线 ,另一组接 VCC 和地线 ,屏蔽层在源端单点接........