【【51单片机的DS18B20温度传感器】】

学习温度传感器,探索单片机的奥秘

DS18B20是一种常见的数字温度传感器
测温范围-55度 ~125度
通信接口 1-wire
其他特征 可形成总线结构 内置温度报警功能 可寄生供电
【【51单片机的DS18B20温度传感器】】_第1张图片
【【51单片机的DS18B20温度传感器】】_第2张图片
其中的64位bit ROM 作为器件地址,用于总线通信的寻址

SCRATCHPAD暂存器 用于总线的数据交互

EEPROM 用于保存温度触发阈值和配置参数
【【51单片机的DS18B20温度传感器】】_第3张图片

有一种总线

单总线的介绍

1-wire BUS 是由达拉斯公司开发的一种通用数据总线
一根通信线:DQ
异步,半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时供电加通信只需要DQ和GND两根线
说实话单总线用的很少
全看我们大传感器DS18B20带动单总线的整个使用率

单总线的电路规范

DQ也需要设置成开漏输出模式
还需要添加一个上拉电阻 阻值一般为4.7k欧姆
若此总线的从机采用寄生电容,则主机还应配备一个强上拉输出电阻

1初始化

主机将总线拉低至少480us,然后释放总线,等待15-60us后,存在的从机会拉低总线60-240us以响应主机,之后从机将释放总线

2发送一位:

主机将总线拉低60-120us, 然后释放总线 表示发送0 ;
主机将总线拉低1-15us,然后释放总线 表示发送1
从机在总线拉低30us(典型值) 读取电平, 整个时间片应大于60us

连续两次发射时间必须大于1us

3.接收一位

主机将总线拉低1~15us,然后是释放总线,并在拉低后15us以内读取总线电平(尽量贴近15us的末尾) 读取为低电平则为接收0
读取为高电平则为接收1 整个时间片应大于60us
怎么个接收法用白话文的意思来说是这样的,就是我拉低15us 如果松手后发现重新回弹上拉到1 说明从机本来想给我们发送1 但是要是我们并没有得到有效的回弹说明一直是0

看似发送和接受是差不多极易混淆 但是我们只需要知道 ,我们进行初始化之后总是处于控制主机的状态 我们必须先发送,发送指令这个动作包含了 让从机发主机接受 还有主机发送从机接受这两种命令

这三种基础结构讲述完成了

DS18B20 的基本操作流程

初始化 : 从机复位,主机判断从机是否响应
ROM操作 : ROM指令+本指令需要的读写操作
功能操作 : 功能指令+本指令需要的读写操作

本次想要实现的功能有
温度变换 : 初始化->跳过ROM->开始温度变换

温度读取: 初始化->跳过ROM->读暂存器-> 连续的读操作

温度存储格式会带小数部分
正数和负数的表示也不一样需要注意
因为存进去的二进制是补码的形式

你可能感兴趣的:(51单片机学习,51单片机,嵌入式硬件,单片机)