51单片机入门(4温度采集:DS18B20)

一、DS18B20

数字温度传感器,半双工, 异步, 串行

二、传感器参数

功能:温度采集

量程:-55℃ - 125℃

精度:±0.5℃

工作电压:3V - 5.5V

分辨率:12位 0.0625

分辨率:传感器对温度变化的敏感程度

9位 0.5℃

10位 0.25℃

11位 0.125℃

12位 0.0625℃(默认)

三、操作ROM 命令

  1. 读ROM (0x33)

  2. 搜索ROM (0xF0)

  3. 匹配ROM (0x55)

  4. 跳过ROM (0xCC)

  5. 报警搜索 (0xEC)

四、ds18b20 采集温度完整流程

  1. 复位 ds18b20_reset();

  2. 发送0xCC,跳过ROM write_ds18b20(0xCC);

  3. 发送0x44,开启温度转换 write_ds18b20(0x44);

  4. 延时1s

  5. 复位 ds18b20_reset();

  6. 发送0xCC,跳过ROM write_ds18b20(0xCC);

  7. 发送0xBE,读取温度 write_ds18b20(0xBE);

  8. 读取两个字节温度 read_ds18b20();

五、 ds18b20 时序

1、复位时序

(1)主机先将总线拉低至少480us,再释放总线,代表主机发送了一个复位脉冲

(2)主机如果在60-240us检测到总线出现低电平,代表ds18b20回复了一个存在脉冲

(3)ds18b20最终释放总线,总线为高电平

2、写时序

写0时序:

(1)主机将总线拉低大于60us

(2)ds18b20在60us内进行采样,如果采到低电平,代表主机发送了一个0

(3)主机释放总线,将引脚拉高

写1时序:

(1)主机将总线拉低大于1us

(2)主机释放总线,将引脚拉高

(3)ds18b20在45us内进行采样,如果采到高电平,代表主机发送了一个1

3、读时序

(1)主机将总线拉低大于1us,释放总线,引脚变为高电平

(2)主机再15us内进行采样

(3)若采到一个高电平,代表读到1,若采到低电平,代表读到0

(4)最终ds18b20释放总线

-----使用示例

相关推荐
我不是程序猿儿10 小时前
【嵌入式】面向 STM32 的 ADC 与 DMA 学习路线
linux·stm32·单片机·嵌入式硬件·学习
一支闲人10 小时前
研究STM32库函数 如何操作寄存器
stm32·单片机
rit843249911 小时前
基于STM32的触控USB鼠标设计
stm32·嵌入式硬件·计算机外设
天狼IoT11 小时前
STM32-keil+CubeMX快速开发:GPIO功能
stm32·单片机·嵌入式硬件
芯岭技术11 小时前
PY32C673单片机特性,应用场景介绍,最高主频可达 72 MHz
单片机·嵌入式硬件
ytttr87312 小时前
STM32 独立看门狗(IWDG)程序设计与实现
stm32·单片机·嵌入式硬件
木下~learning12 小时前
嵌入式Linux 小项目:RK3399 基于 MPlayer 实现视频播放器(从环境搭建到完整播放列表)
linux·运维·嵌入式硬件·音视频
学习噢学个屁12 小时前
基于51单片机心率仪—体温心率血氧蓝牙
c语言·单片机·嵌入式硬件·51单片机
济61712 小时前
FreeRTOS 通信任务设计(2)----UART+DMA 环形缓冲 + 空闲中断+ 流缓冲区--- 高效接收方案详解
stm32·单片机·嵌入式·freertos
QH1392923188012 小时前
是德科技KEYSIGHT N5183B 9 kHz~40 GHz微波模拟信号发生器
网络·数据库·科技·嵌入式硬件·集成测试