当前位置: 首页 > news >正文

嵌入式学习的第四十三天-ds18b20 数字温度传感器

一、ds18b20工作流程

复位 -> 跳过ROM(CCH) -> 启动温度转换(44H) -> 延时等待 -> 复位 -> 跳过ROM(CCH) ->读取温度(BEH) -> 接收温度数据 

延时等待的目的:温度转换需要一定的时间 

复位的目的:每次与ds18b20进行通信时,都需要复位(告诉ds18b20要与其进行通信) 

读取到的温度数据:前两个字节是温度值 

二、ds18b20通信时序

1. 初始化时序 (复位)

(1)主机将总线拉低480us - 960us, 发送一个低电平脉冲(复位) 

(2)释放总线,变为高电平(由于有上拉电阻,不占用总线时总线为高电平) 

(3)释放总线后在延时15-60us后的60-240us时间内检测总线是否为低电平(ds18b20将总线拉低)

2.  写时序(写0时序和写1时序) 写时序周期60us - 120us 

  (1) 主机先把总线拉低大于1us,表示写周期开始 

(2) 若主机想写'0', 则无须释放总线, 继续拉低电平至少60us直至写周期结束,释放总线为高电平

(3)若主机想写'1', 在拉低总线1us后, 释放总线为高电平,一直到写周期结束 

(4)从机DS18B20检测到总线被拉低后,等待15us后,从15us - 45us对总线采样(典型时间15us)

(5)  在采样时间内,若检测到总线为高电平则认为主机发送了'1',若检测到总线为低电平则主机发了'0'

3. 读时序 (读0时序和读1时序)   读时序周期60us - 120us

(1)主机先把总线拉低大于1us,然后释放总线,表示读周期开始 

(2)若DS18B20发送'0', 则把总线拉低并保持至少从读周期开始的15us,然后释放总线为高电平

(3)若DS18B20发送'1', 则在主机释放总线后不拉低总线(为高电平) 

(4)主机必须在读周期开始的15us内检测总线电平的高低,若检测到总线为低电平,则ds18b20发送了'0',为高电平,则ds18b20发送了'1'

http://www.dtcms.com/a/315677.html

相关文章:

  • 如何在nuxtjs项目中使用vuex?
  • duxapp中主题系统是如何实现动态切换的
  • Redis 基础(一)
  • 数字图像处理(冈萨雷斯)第三版:第四章——频率域滤波(学前了解知识)——主要内容和重点
  • 【运维基础】Linux 系统启动原理
  • 增量:增量处理
  • 游戏行业DDoS攻防实战指南
  • ApplicationContext的实现类有哪些?
  • 「PromptPilot 大模型智能提示词平台」—— PromptPilot × 豆包大模型 1.6:客户投诉邮件高效回复智能提示词解决方案
  • 芯祥科技:工业/车规级BMS芯片厂商 规格选型对比
  • Python import 详解
  • linux_https,udp,tcp协议(更新中)
  • C++ ---》string类的模拟实现
  • CRT调试堆检测:从原理到实战的资源泄漏排查指南
  • HBM Basic(VCU128)
  • nflsoi 7.29 题解
  • Python-深度学习--2信息熵,条件熵(ID3决策树),KL散度
  • 飞算JavaAI—AI编程助手 | 引领开发新时代,智能化编程的完美助手
  • python学智能算法(三十三)|SVM-构建软边界拉格朗日方程
  • 分布式微服务--Nacos持久化
  • Modstart 请求出现 Access to XMLHttpRequest at ‘xx‘
  • 用 Python 构建高质量的中文 Wikipedia 语料库:从原始 XML 到干净段落
  • rabbitMq内容整理
  • PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt
  • 云计算一阶段Ⅱ——11. Linux 防火墙管理
  • LeetCood算法题~水果成篮
  • [element-plus] ClickOutside点击其他地方
  • 【IDEA】IntelliJ IDEA 中文官方文档全面介绍与总结
  • Docker 部署工程基本命令记录
  • uniapp renderjs 逻辑层,视图层互相传递数据封装