欢迎光临
我们一直在努力

江协51单片机学习日志(13DS18B20温度)

一、学习内容:

1.DS18B20温度传感器介绍

模拟温度传感器:复杂,需要AD转换,模拟—>数字,再系数配比

数字模拟传感器:内部集成了模拟温度传感器,只需温度转换再从RAM读取出来

可寄生供电:可以只用两根线(数据线和GND)

———————————————————————————————————————————

2.单总线介绍

———————————————————————————————————————————

3.单总线时序结构

发送一位:

拉低总线不宜过长,否则被判断为初始化

接收一位:

主机拉低就代表开始,从机立刻开始发0/1,两者几乎同时开始。

因为从机一定会保持15us的信号,后面随时会释放,所以主机一定要在15us内释放总线(让从机能够拉动杆子),并读取从机信号(在末尾时),才能保证不会错过从机信号

———————————————————————————————————————————

4.DS18B20操作流程+数据帧

ROM操作:进大门

功能操作:操作暂存器

温度变换:初始化—发送一个字节(跳过大门)—发送一个字节(温度变换操作)

温度读取:初始化—发送一个字节(跳过大门)—发送一个字节(读操作)–接收一个字节(LSB)—接收一个字节(MSB)

———————————————————————————————————————————

5.温度存储格式

———————————————————————————————————————————

6.第一个实验思路

• 先实现单总线的五个时序结构

初始化OneWire_Init函数

发送一位OneWire_SendBit函数 + 接收一位OneWire_ReceiveBit函数

发送一个字节OneWire_SendByte函数 + 接收一个字节OneWire_ReceiveByte函数

• 再用单总线模块编写DS18B20的数据帧

温度变换DS18B20_ConvertT函数(利用上面OneWire的函数)

温度读取DS18B20_ReadT函数(利用上面OneWire的函数)

• 最后在主函数中调用DS18B20模块

———————————————————————————————————————————

二、实操注意点

1.单总线发送/接收一个字节,低位在前

2.初始化最后为什么加500us延时 等待15~60us后,存在的 从机 会拉低总线60~240us以响应主机,所以直接在70us后读取,肯定就是在从机响应的阶段了。要是这里给的时间太短,从机还没响应太长,就已经释放掉总线,所以再延时500us

3.把 本有小数 的Temp塞进 int 类型,最低位为1,约等于LSB整体向左挪了4位,所以要%16.0赋给T,使其再向右移4位

4.测温范围有限

5.有带有小数的数字怎么在LCD1602上显示

先显示整数部分+把小数取出换成整数再类型转换

———————————————————————————————————————————

三、代码展示

13-1 DS18B20温度读取

——————————————————-这是分界线——————————————————————

13-2 DS18B20温度报警器

———————————————————————————————————————————

第二个实验的OneWire和DS18B20跟第一个实验一样,Delay,LCD1602,AT24C02,I2C,Key(12定时器扫描按键),Timer0函数之前日志里有

2026.9.30完课

2026.10.8整理完毕

赞(0)
未经允许不得转载:171主机测评 » 江协51单片机学习日志(13DS18B20温度)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址