好文档 - 专业文书写作范文服务资料分享网站

DS18B20介绍、流程图和程序源代码 

天下 分享 时间: 加入收藏 我要投稿 点赞

DS18B20单线数字温度传感器

DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器,体积更小、适用电压更宽、更经济。一线总线独特而且经济的特点,使用户可轻松地组建温度传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器同DS1820一样,支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C,而DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C,分辨率设定,以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 1、 DS18B20性能特点

DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。 2、 DS18B20内部结构

DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图1所示。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号,不同的器件地址序列号不同。

图1 DS18B20引脚分布图

8位产品系列号 48位产品序号 8位CRC编码 DS18B20高速暂存器共9个存储单元,如表所示: 序号 0 1 2 3 寄存器名称 温度低字节 温度高字节 TH/用户字节1 HL/用户字节2 作 用 以16位补码形式存放 存放温度上限 存放温度下限 序号 4、5 6 7 8 寄存器名称 保留字节1、2 计数器余值 计数器/℃ CRC 作 用 CRC校验 以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要

将测到的数值乘于0.0625即可得到实际温度(等价说明:高8位字节的低3位和低8位字节的高4位组成温度整数值的二进制数;或者说:12位测量时,所测数值乘以0.0625(=1/16),即右移4位后去掉了二进制数的小数部分);如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度(等价说明:当温度小于0时,整数部分就是各位取反,小数部分则是各位取反后加1)。 高8位 低8位 S 23 S 22 S 21 S 20 S 2-1 26 2-2 25 2-3 24 2-4 说明:温度测量分辨率有四种,即

9位测量分辨率0.5℃; 10位测量分辨率0.25℃; 11位测量分辨率0.125℃; 12位测量分辨率0.0625℃;

9~12位的测量,无论采用哪种分辨率,温度整数的有效位均是表中26~20; 以12位为例: 温度值 +125℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -125℃ 二进制数 十六进制数 0000 0111 1101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 07D0H 0191H 00A2H 0008H 0000H FFF8H FF5EH FF6FH FC90H 1、DS18B20控制方法

在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5kΩ左右的上拉电阻。DS18B20有六条控制命令,如下表所示:

指 令 温度转换 读暂存器 写暂存器 复制暂存器 重新调E2RAM 读电源供电方式 约定代码 44H BEH 4EH 48H B8H B4H 操 作 说 明 启动DS18B20进行温度转换 读暂存器9个字节内容 将数据写入暂存器的TH、TL字节 把暂存器的TH、TL字节写到E2RAM中 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 启动DS18B20发送电源供电方式的信号给主CPU CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

(读DS18B20测量温度子程序) 开始 DS18B20复位 发出搜索ROM命令 GET-TEMPATURE开始 数据端置位 复位DS18B20 读在线DS18B20序号 (调用RESETDS18B20) Y存在一个DS18B20? DS18B20是否存在? NN初始化DS18B20 启动在线DS18B20温度AD转换 发跳过ROM命令、发转换命令 延时1s 初始化DS18B20 执行期间匹配命令 发一个DS18B20序列号 Y写跳过ROM匹配命令0CCH (调用WRITE18B20) 写温度转换命令44H (调用WRITE18B20) N延时750μs? Y(读温度前)复位DS18B20 (调用RESETDS18B20) 写跳过POM匹配命令0CCH 发读暂存RAM指令 读匹配的DS18B20温度 (调用WRITE18B20) 写读温度字节命令0BEH Y所有在线DS18B20访问完? 多点温度检测软件流程图

N(调用WRITE18B20) 读温度 (调用READ18B20) 读温度值返回 读DS18B20温度的流程图

Initialization procedure “reset and presence pulses”

(DS18B20复位子程序) RESETDS18B20开始 数据端(先置位后)清零 延时(480μs , 960μs) 数据端置位(拉高数据线) 数据端为低电平? NOP CLR P2.2 MOV R1,#3

TSR1:MOV R0,#107

DJNZ R0,$ DJNZ R1,TSR1

SETB P2.2;然后拉高数据线 NOP NOP NOP

MOV R0,#25H

TSR2: JNBP2.2,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 LJMP TSR7

TSR5: MOV R0,#117

TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间

RET

DS18B20复位流程图 RESETDS18B20: SETB P2.2

;主机发出延时537微秒的复位低脉冲

Y设置标志位表示存在 延时(180μs) NN延时300μs? Y清除标志位表示不存在 数据端置位(拉高数据线) DS18B20复位结束 确保DS18B20在输出低电平表示存在时数据线不被拉高 TSR7: SETB P2.2

写DS18B20(子程序)开始 进位标志位清零 数据端清零 延时(15μs) 循环右移一次 进位标志位值送数据端 延时30μs 数据端置位(拉高数据线) N指令字节写完? YDS18B20写返回 写DS18B20指令字节的流程图

DS18B20介绍、流程图和程序源代码 

DS18B20单线数字温度传感器DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,体积更小、适用电压更宽、更经济。一线总线独特而且经济的特点,使用户可轻松地组建温度传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS1820一样,支持“一线总线”接口,测量温度范围为-5
推荐度:
点击下载文档文档为doc格式
32lrd4vz1y0n19a8hrgx9da6a52gje00h43
领取福利

微信扫码领取福利

微信扫码分享