目录
一 设计内容
- 利用OneWire与DS18B20通信,将DS18B20中的温度读出并显示在LCD1602上,设置温度报警界限,可通过按钮设置温度上,下限。
- 报警灯光设置:
- 温度在正常界限内LED绿灯亮;
- 超过温度下限时,黄灯亮;
- 超过温度上限时,红灯亮;
- 并在温度超过正常界限时,蜂鸣器发出报警声,蓝色LED闪烁。
- 按键设置:
- K1选择温度上限或下限;
- K2控制温度下限加减;
- K3控制温度上限加减;
二 芯片介绍
2.1 DS18B20芯片
2.2.1 DS18B20简介
- DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
- 测温范围:-55°C 到 +125°C
- 通信接口:1-Wire(单总线)
- 其它特征:可形成总线结构、内置温度报警功能、可寄生供电
引脚及应用电路:
引脚 |
功能 |
VDD |
电源(3.0V ~ 5.5V) |
GND |
电源地 |
DQ |
单总线接口 |
存储器结构 |
2.1.2单总线介绍及应用:
单总线简介:
- 单总线(1-Wire BUS)是由Dallas公司开发的一种通用数据总线
- 一根通信线:DQ
- 异步、半双工
- 单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线
单总线电路规范:
- 设备的DQ均要配置成开漏输出模式
- DQ添加一个上拉电阻,阻值一般为4.7KΩ左右
- 若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路
单总线时序结构:
- 初始化:主机将总线拉低至少480us,然后释放总线,等待15~60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线
sbit OneWire_DQ=P1^0;
unsigned char OneWire_Init(void)
{
unsigned char i;
unsigned char AckBit;
OneWire_DQ=1;
OneWire_DQ=0;
i = 247;while (--i); //Delay 500us
OneWire_DQ=1;
i = 32;while (--i); //Delay 70us
AckBit=OneWire_DQ;
i = 247;while (--i); //Delay 500us
return AckBit;
}
- 发送一位:主机将总线拉低60~120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us
sbit OneWire_DQ=P1^0;
void OneWire_SendBit(unsigned char Bit)
{
unsigned char i;
OneWire_DQ=0;