一、DS18B20
DS18B20是常见的数字温度传感器,控制命令和数据都是以数字信号方式输入输出。可测-55℃—125℃的温度,通讯接口类型为1-Wire。
二、原理图
DS18B20只有一根数据线用来双向传输数据,那么一根数据线怎么进行双向通信?
引脚 | 功能 |
VCC | 电源正极(3.0V ~ 5.5V) |
GND | 电源接地 |
I/O | 单总线接口 |
三、内部结构
64位ROM存放DS18B20器件地址,暂存器用于与总线数据交互,E2PROM存储温度触发阈值和配置参数。
四、单总线(1-Wire Bus)
1.单总线结构
1-Wire总线结构,只需一根通信线来进行双向传输数据,是异步半双工。数据线要配置成开漏输出模式,并且加上拉电阻。
2.单总线时序
初始化:主机将总线拉低480us,然后释放总线(开始),经过15-60us(间隔),从机将总线拉低60-240us,然后释放总线(应答)。
发送一位:主机拉低总线60-120us,然后释放总线,表示发送0;主机拉低总线1-15us,然后释放总线,表示发送1。从机在总线拉低30us后读取电平,整个时间片应大于60us。
接收一位:主机将总线拉低1-15us,然后释放总线,在拉低15us内(最好在15us末尾)读取总线电平,读取低电平为0,读取高电平为1。整个时间片应大于60us。
发送一个字节:发送一位循环8次,低位在前高位在后。
接收一个字节:接收一位循环8次,低位在前高位在后。
五、DS18B20操作流程
1.操作流程
初始化、ROM指令、功能指令。
2.DS18B20数据帧
3.温度存储格式
六、实验
1.DS18B20温度读取
实验现象:LCD1602第一行显示“Temperature:”,第二行显示温度(保留4位小数)。
LCD1602.c
LCD1602.h
OneWire.c
OneWire.h
DS18B20.c
DS18B20.h
Delay.c
Delay.h
main.c
2.DS18B20温度报警器
实验现象:LCD1602第一行显示温度,第二行显示报警温度下限和上限值(保留两位小数)。按键1按下温度上限值加一,按键2按下温度上限值减一,按键3按下温度下限值加一,按键4按下温度下限值减一(AT24C02记忆功能)。温度高于上限值,LCD1602第一行显示OV:H,温度低于上限值,LCD1602第一行显示OV:L(+125℃~-55℃)。
LCD1602.c
LCD1602.h
OneWire.c
OneWire.h
DS18B20.c
OneWire.h
Delay.c
Delay.h
Timer0.c
Timer0.h
Key.c
Key.h
I2C.c
I2C.h
AT24C02.c
AT24C02.h
main.c