DS18B20学习&代码编写
DS18B20内部结构简介
一、硬件图示
二、内部结构
1.64位(激)光刻只读存储器 64位ROM
作用:使每一个DS18B20都各不相同,可以实现一根总线挂接多个DS18B20的目的
- 8位CRC(28H):产品类型编号
- 48位序列号:该DS18B20的自身序列号
- 8位系列码:前面56位的循环冗余校验码
2.暂存器SCRATCHPAD(上电状态POWER-UP STATE)
Byte 0:温度数据低字节
Byte 1:温度数据高字节
Byte 2:设置最高温度
Byte 3:设置最低温度
Byte 4:配置寄存器(CONFIGURATION REGISTER)
RESOLUTION(BITS)精度
MAX CONVERSION TIME最大转换时间
如图·:温度传感器地精度为用户可编程地9,10,11或12位,分别以0.5℃,0.25℃。0.125℃或0.0625℃表示,在上电状态下默认的精度为12位。
注意:存储在DS18B20的两个8位的RAM中
1. 高字节的前五位是符号位,如果测得的温度大于0,这5位位为‘0’,即为正温度,只要将测得的数值乘以0.0625(默认状态下)即可得到实际温度;如果温度小于0,这5位位‘1’,测得的数值需要取反加1再乘以0.0625即可得到实际温度。
2. bit0~3:表示温度小数部分
3. bit4~10:表示小数整数部分
三、DS18B20工作协议过程
DS18B20大致工作流程:
1.初始化
手册原版(English):
汉化版:
存在脉冲检测原理 1-wire总线开始需要检测该总线是否存在DS18B20这个器件。如果这条总线上存在DS18B20,总线会根据时序要求返回一个低电平脉冲,如果不存在,就不会返回脉冲,即总线保持高电平,一般称之为检测存在脉冲。另外,获取存在脉冲是不仅检测是否存在,而且通过这个脉冲过程通知DS18B20准备好,单片机要对它进行操作。
存在脉冲检测步骤:
- 数据线拉到低电平“0”;
- 延时480μs~960μs,一般500μs左右即可;
- 数据线拉到高电平;
- 延时等待15μs~60μs。如果初始化成功则在15到60μs时间内产生一个由DS18B20所返回的低电平“0”,根据该状态可以来确定它的存在,但是应注意不能无限进行等待,否则会出现程序死循环。
- 检测到低电平后做延时,其延时时间从发出的高电平算起(以第三步时间算起)最少480μs。
2.ROM操作指令
由于1-wire总线可以挂多个器件,所以我们需要通过ROM指令来区分不同器件。
常见ROM指令表:
3.DS18B20的位读写时序
①.DS18B20位写入时序
手册原版:
汉化版:
步骤:
②.DS18B20位读入时序
手册原版:
汉化版:
步骤:
四、DS18B20基本代码操作
1.DS18B20主程序
//DS18B20
/*********实验要求:*********************************************