DS18B20 - 温湿度监测模块

芯片介绍

基础介绍\引脚介绍

DS18B20是单总线协议的典型代表,同时也是单总线协议最广泛的应用场景,是常用的数字温度传感器,其输出的是数字信号。具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合。

DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20 的内部存储器资源。 18B20 共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线 系列编码(DS18B20 的编码是 19H),后面 48 位是芯片唯一的序列号,最后 8 位是以上 56 的位的 CRC 码 (冗余校验)。数据在出产时设置不由用户更改。
DS18B20 共 64 位 ROM。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为 8 位:

  • 第 1、 2 个字节是温度转换后的数据值信息,

  • 第 3、 4 个字节是用户 EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。

  • 第 5 个字节则是用户第 3 个 EEPROM的镜像。

  • 第 6、 7、 8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也 是内部温度转换、计算的暂存单元。

  • 第 9 个字节为前 8 个字节的 CRC 码。

RAM内容如下图,最常用为前两个字节数据,其余数据由于操作方式没有直接在控制端操控方便,一般很少使用。

EEPROM 非易失性记忆体,用于 存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20 共 3 位 EEPROM,并在 RAM 都存在镜像,以方便用户操作。

其引脚图如下:

DS18B20仅有三根引脚,其中一根接电源,一根接地,即其仅使用一根引脚用于数据命令等的传输,由于没有时钟线,其为异步传输,对传输时序要求极高。

DQ:DS18B20传输线,采用单总线,详见协议使用笔记单总线章节

操作控制流程

每次通信必须经过如下步骤,且对时序有较高要求,延时部分需使用滴答定时器等进行精准延时。

1.复位:单片机拉低DQ线至少480us,DS18B20接收到信号后会在15 - 60us内发送存在脉冲。

2.存在脉冲:复位信号结束后,应将DQ线拉高以接收存在脉冲,该脉冲为一个60 - 240us的低电平

3.发送ROM指令:共有五条指令可供发送,每条指令为8位数据,每个周期仅可发送一条。五条指令如下:

  • 读ROM数据:33H
  • 指定匹配芯片:55H
  • 跳跃ROMCCH
  • 芯片搜索:F0H
  • 报警芯片搜索:ECH

若不需要对ROM进行操作,则可使用跳跃ROM指令跳过该阶段。

4.发送存储器操作指令:共有六条指令可供发送,每条指令为8位数据,每个周期仅可发送一条。指令如下:

  • 写RAM数据:4EH
  • 读RAM数据:BEH
  • 温度转换:44H
  • 将RAM数据复制到EEPROM:48H
  • 将EEPROM警报值复制到RAM:B8H
  • 工作方式切换:B4H

5.执行或数据读写:在此将会进行数据的读写或指令执行,由以上命令确定。若执行转换指令,则需要等待500us左右的转换时间,若执行读写指令,则需要根据DS18B20时序要求进行读写。

时序介绍

复位应答时序

写时间隙时序

写时间隙由控制端将总线拉低15us左右,后在其低电平状态下进行控制,若要发送1则在拉低后将总线拉高15 - 45us

若要发送0则保持该低电平15 - 45us,尔后将总线重新拉高。

注意:单bit的发送时间应在60 - 120us内,否则将不能进行通信。

读时间隙时序

读时间隙需要先由控制端拉低总线1us左右,并释放总线,在释放后的15us中,从机接管总线并发送数据,此时高电平表示1,低电平表示0,每一个bit的读取都需要先由总线拉低总线1us

注意:字节的读写由低位开始,由高位结束。

读取数据

读取一次温度信息的步骤:

发送复位信号 --> 检测回应信号 --> 发送0xCC --> 发送0x44 --> 发送复位信号 --> 检测回应信号 --> 写0xCC --> 写0xBE --> 循环 8 次读取温度低字节 --> 循环 8 次读取温度高字节

其它操作与此类似,不做过多介绍。

代码示例

变量介绍

DS18B20_OUTPUT()     //设置为输出模式
DS18B20_DQ_OUT          //DQ线输出
DS18B20_INPUT()         //设置为输入模式
DS18B20_DQ_IN           //DQ线输入

读数据(从DS18B20读)

u8 DS18B20_Read_Byte(void)
{u8 i, rxData = 0;DS18B20_DQ_OUT = 1;         //DQ输出为高for(i=0; i<8; i++){DS18B20_OUTPUT();      //设置为输出模式DS18B20_DQ_OUT = 0;   //拉低总线(释放总线)delayUs(5);               //等待1us以上DS18B20_INPUT();       //切换为输入模式delayUs(10);if(DS18B20_DQ_IN) rxData |= 1<<i;   //此时总线电平已改变,判断电平delayUs(40);DS18B20_DQ_OUT = 1;     //接管总线,等待下一次释放delayUs(5);}return rxData;
}

写数据(从DS18B20写)

void DS18B20_Write_Byte(u8 txData)
{u8 i;DS18B20_OUTPUT();             //设置为输出模式for(i=0; i<8; i++){if(txData & 0x01)         //低位先发{DS18B20_DQ_OUT = 0;   //拉低总线delayUs(5);        DS18B20_DQ_OUT = 1;   //该位为高,拉高总线,延时delayUs(55);  }else {DS18B20_DQ_OUT = 0;  //拉低总线delayUs(5);delayUs(55);      //该位为低,保持总线低,延时DS18B20_DQ_OUT = 1;  //重新拉高,等待下一次}txData >>= 1;}
}

DS18B20使用说明相关推荐

  1. matlab ds18b20 单片机,基于51单片机ds18b20温度检测————设计报告.doc

    基于51单片机ds18b20温度检测----设计报告 课程名称: 微机原理课程设计 题 目: 温度检测课程设计 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为 ...

  2. STM32F103+DHT11模块+DS18B20模块 显示实时温湿度并高温高湿报警

    目录 前言 代码下载: 功能介绍: 接线 DS18B20 DHT11 效果图 普通环境 普通版main.c 升级版 哈热气 普通版 升级版 搓手捂热 核心代码 普通版main.c 升级版main.c ...

  3. DS18B20使用注意事项

    DS18B20使用注意事项 芯片STC15W404AS 最重要两点:一是精准延时,用内嵌汇编的方式保证:二是CRC校验 keil中内嵌汇编的方法: 直接嵌入汇编代码的方法: 1.在 C 文件中要嵌入汇 ...

  4. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...

    高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF 高性能计算平台ABAQUS 任务调度使用说明 作者:陈林 E-Mail:chenlin@ 日期:2017-1-10 ...

  5. linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...

    cmd replace 文件替换使用说明 帮助信息: 复制代码 代码如下: 替换文件. REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [ ...

  6. Simple Dynamic Strings(SDS)源码解析和使用说明二

    在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...

  7. Delphi开发的IOCP测试Demo以及使用说明。

    Delphi开发的IOCP,此为压力测试Demo和使用说明.

  8. oracle database link mysql_oracle database link使用说明

    oracle database link使用说明 作用: 将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象. 简易语法: CREATE [PUBLIC] ...

  9. 序列拼接工具Bowtie使用说明

    序列拼接工具Bowtie使用说明 2011-06-08 ~ ADMIN Bowtie是一个超级快速的,较为节省内存的短序列拼接至模板基因组的工具.它在拼接35碱基长度的序列时,可以达到每小时2.5亿次 ...

  10. benchmarksql测试mysql_数据库压力测试工具 -- BenchmarkSQL 使用说明

    关于数据库的压力测试,之前写过3篇Blog: 数据库基准测试(Database Benchmarking) 说明 数据库压力测试工具 -- Hammerdb 使用说明 数据库压力测试工具 -- Swi ...

最新文章

  1. 最小哈希 minhash
  2. Spring的控制反转以及依赖注入,控制反转使程序具有高拓展性。
  3. mysql视频教程siki_siki老师MySQL数据库从零到精通,资源教程下载
  4. CentOS 5.X用第三方源安装PHP MySQL Apache等
  5. 图片下载中文传输转义问题
  6. 嵌入式系统Linux内核开发学习指导框图
  7. 基于用户的协同过滤推荐算法研究
  8. 仿IBM首页焦点图,缩略图大图,带文字
  9. 数独基本规则_数独游戏规则?
  10. DNS劫持使用DNS加速有哪些作用
  11. 迪文屏DMT12800K070_A2WTC踩坑实录(一)
  12. 什么是GPU服务器?如何正确选择?
  13. zabbix4.4 使用自动发现监测web网站健康状态(通过mysql表获取web地址)
  14. linux下利用MP4v2封装H264 aac为mp4
  15. 2021汽车行业内容营销白皮书
  16. power automate desktop字符串处理
  17. C1认证快速复习重点个人总结(一、计算机通识【下】),部分内容同任务文档
  18. 手把手教你BCGControlBar MFC界面控件“起航”技巧(文章转载自:慧都控件网)
  19. 关于程序员网站,这七家超级实用!(来自36氪推荐)
  20. 互联网线下活动一周整理 11月23日—29日

热门文章

  1. 沉痛悼念游戏开发技术专家毛星云
  2. 图像特征提取之Haar特征
  3. docker安装教程
  4. js 设置 Cookie,cookie的作用域设置
  5. BB8球形机器人制作教程
  6. 西北大学计算机课表,西北大学课表
  7. 机房运维——技术文档
  8. 报表比对常用excel方法
  9. Unity 3D WebView 插件之基础介绍(一)
  10. C语言每个语句的最后必须有一个分号,C语言选择题附答案