DS18B20是由DALLAS半导体公司推出的一种“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、使用电压宽、与微处理器接口简单的数字化温度传感器。一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新概念,测量温度范围为-55~+125度,精度为0.5度。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。它能直接独处被测温度,并且可以根据实际要求通过简单的编程实现912位的数字值读数方式。它工作在33.5V的电压范围,采用多种封装形式,从而使得系统 设计灵活,方便,设定分辨率及用户设定的报警温度存储在EEPROM中,掉电后依然保存。

DS18B20管脚排列:

  1. GND为电源地;
  2. DQ为数字信号输入/输出端;
  3. VDD为外接供电电源输入端(在寄生电源接线方式时接地)

    内部结构:
    主要4部分组成:64位ROM,温度传感器、温度报警触发器TH和TL、配置寄存器。

    其中ROM中的64位序列号是出厂前固化好的,可以看作是DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排列是:前8位是产品家族码,接着48位是DS18B20的序列号,最后8位是前面56位的循环冗余校验码CRC(X8+X5+X4+1)。ROM作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20。

    温度和数据对应关系
    DS18B20中的温度传感器完成对温度的测量,用16位的二进制表示,其中S为符号位。

    例如:
    07D0h 0000 0111 1101 0000对(取26到20)7dh = 125,表示+125度
    0191h 0000 0001 1001 0001 对(取26到20)19h = 25,小数部分0001即2^-4
    假如温度为负则将16进制数取反加1再转换 例如:FF5Eh 1111 1111 0101 1110 取反加1 0000 0000 1010 0010 (取26到20)0ah = 10, 小数部分0010为0.125,表示-10.125度

    DS18B20 MEMORY MAP

    高速暂存存储器由9字节组成,当收到温度转换命令后,经转换所得的温度值存放在第0和第1个字节。第二个字节为高温阈值;第三个字节为低温阈值;第4字节为配置;第5~7字节保留;第8字节为CRC校验值。

ROM 功能命令
Read Rom[33h] 读取DS18B20中ROM的内容
该命令允许总线主机读取DS18B20的8位c产品家族码,唯一的48位序列号和8位CRC。 只有在总线上有一个DS18B20时才能使用此命令。 如果总线上存在多个从机,当所有从机同时尝试往主机发送时,将发生数据冲突时(会产生线与结果)。

Match Rom[55h] ROM匹配
匹配ROM命令后跟64位ROM地址,允许总线主机在多点总线上寻址特定的DS18B20。 只有与64位ROM地址完全匹配的DS18B20才响应总线主机的命令。 所有与64位ROM序列不匹配的从器件将等待复位脉冲。 此命令可用于总线上的单个或多个从机。

Skip Rom[CCh] 跳过ROM
该命令允许总线主机可以不提供64位ROM序列也能访问存储器,从而可以节省单个总线系统中的时间。如果总线上存在多个从机并且主机在发出Skip ROM命令之后发出读命令,则当多个从机同时发送时,总线上将发生数据冲突(会产生线与结果)。

Search Rom[F0h] 搜索ROM
当系统刚启动时,总线上的主机可能不知道单总线上的从机数量和它们的64位ROM序列号。搜寻ROM命令使总线主机识别总线上所有从机的64位ROM序列号。

Alarm Search[ECh] 警报搜索
该命令的流程图与Search ROM命令相同,但是,只有在最后一次温度测量中遇到报警条件时,DS18B20才会响应这个命令。

存储功能命令
Write Scratchpad[4Eh] 写暂存器
发出数据向内部RAM的第2,3,4字节写,内容是上限温度数据命令、下限温度数据命令。

Read Scratchpad [BEh] 读暂存器
读内部RMA中的9字节的内容

Copy Scratchpad [48h] 复制暂存器
将RAM中的第2,3,4字节的内容复制到EEPROM中

Convert T [44h] 温度转换
启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节RAM中

Recall E2 [B8h] 重调EEPROM
EEPROM中的内容恢复到RAM中的第2,3,4字节

Read Power Supply [B4h] 读供电方式
读DS18B20的供电模式,寄生供电时DS12B20发送“0”,外接电源供电时DS12B20发送“1”

DS18B20的工作时序
所有的单总线器件都要求采用严格的信号时序:以保证数据的完整性。DS18B20共有6中信号类型:复位脉冲、应答脉冲、写0、写1、读0、读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。

1)复位脉冲和应答脉冲
主机首先发出一个480us~960us的低电平脉冲,然后释放总线变为高电平,并在随后的480us时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960us的低电平出现,如果有,在总线转为高电平后等待15-60us后将总线电平拉低60us~240us做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。

//复位DS18B20
void DS18B20_Rst(void)
{                 DS18B20_IO_OUT(); //SET PG11 OUTPUTDS18B20_DQ_OUT=0; //À­µÍDQdelay_us(750);    //À­µÍ750usDS18B20_DQ_OUT=1; //DQ=1 delay_us(15);     //15US
}//等待DS18B20的回应
//返回1:未检测到DS18B20
//返回0:存在
u8 DS18B20_Check(void)
{   u8 retry=0;DS18B20_IO_IN();//SET PG11 INPUT  while (DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};  if(retry>=200)return 1;else retry=0;while (!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return 1;     return 0;
}

2)写时序
写时序包含了两种写时序:写0时序和写1时序。所有写时序至少需要60us,且每个写时序之间至少需要1us的恢复时间。
主机产生0时序:DQ line 拉低,延时60us,然后释放总线为高电平,延时2us。
主机长生1时序:DQ line 拉低,延时2us,然后释放总线为高电平,延时60us
做为从机的DS18B20则在检测到总线被拉底后等待15us然后从15us到60us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。

//写入1个字节
//data为要写入的字节
void DS18B20_Write_Byte(u8 data)     {             u8 j;u8 temp;DS18B20_IO_OUT();for (j=1;j<=8;j++) {temp=data&0x01;data=data>>1;if (temp) {DS18B20_DQ_OUT=0;// Write 1delay_us(2);                            DS18B20_DQ_OUT=1;delay_us(60);             }else {DS18B20_DQ_OUT=0;// Write 0delay_us(60);             DS18B20_DQ_OUT=1;delay_us(2);                          }}
}

3)读时序
单总线期间仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
对于读数据时序也分为读0时序和读1时序。所有读时序至少需要60us才能完成,且2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。书记在读时序期间必须释放总线,并且在时序起使后的15us之内采样总线数据。典型的读时序过程为:主机输出低电平延时 2us,然后主机转入输入模式延时 12us,然后读取单总线当前的电平,然后延时 50us。

//从DS18B20读取一个位
//返回值:1或0
u8 DS18B20_Read_Bit(void)     // read one bit
{u8 data;DS18B20_IO_OUT();DS18B20_DQ_OUT=0; delay_us(2);DS18B20_DQ_OUT=1; DS18B20_IO_IN();delay_us(12);if(DS18B20_DQ_IN)data=1;else data=0;  delay_us(50);           return data;
}//DS18B20 Read One Byte
//返回值:读取到的数据
u8 DS18B20_Read_Byte(void)
{        u8 i,j,data;data=0;for (i=1;i<=8;i++) {j=DS18B20_Read_Bit();data=(j<<7)|(data>>1);}          return data;
}

DS18B20的典型温度读取过程:
复位 → 发 SKIP ROM 命令(0XCC)→ 发开始转换命令(0X44) → 延时 → 复位 → 发送 SKIP ROM 命令(0XCC) → 发读存储器命令(0XBE)→ 连续读出两个字节数据(即温度) → 结束。

温度传感器DS18B20应用相关推荐

  1. 【蓝桥杯单片机11】单总线温度传感器DS18B20的基本操作

    [蓝桥杯单片机11]单总线温度传感器DS18B20的基本操作 广东职业技术学院 欧浩源 单总线数字温度传感器DS18B20几乎成了各类单片机甚至ARM实验板的标配模块来,在蓝桥杯的往届省赛和国赛中,这 ...

  2. 51单片机温度传感器DS18B20

    51单片机温度传感器DS18B20 实现功能 插上DS18B20温度传感器,数码管显示检测的温度值 单片机型号:STC89C52 DS18B20介绍 1.DS18B20简介 DS18B20 是由 DA ...

  3. 温度传感器DS18B20介绍

    [转载]温度传感器DS18B20 原地址: http://c.biancheng.net/cpp/html/1958.html DS18B20 是美信公司的一款温度传感器,单片机可以通过 1-Wire ...

  4. 51单片机15单片机 温度传感器DS18B20

    目录 1 温度传感器DS18B20的工作原理 2 一线通信接口的使用(单总线) 2.1 单总线系统 2.2 执行序列 2.3 单总线信号 3 DS18B20寄存器的配置 4 根据传感器使用说明书时序图 ...

  5. 树莓派+温度传感器DS18B20

    作者:陈拓chentuo@ms.xab.ac.cn 2018.05.28/2018.06.01 0.  概述 用树莓派读取DS18B20温度,上传到物联网平台. 1.  准备 1.1 硬件 我用树莓派 ...

  6. 蓝桥杯各模块使用总结 时钟DS1302 ,ADC DAC PCF8591 ,温度传感器DS18B20 存储AT24C02

    2021/4/14 周三 下午 距蓝桥杯仅四天 为复习各模块的使用,防止在比赛时脑子抽住 首先是资源数据包里的底层代码驱动 驱动代码说明 1-本文件夹中提供的驱动代码供参赛选手完成程序设计参考之用. ...

  7. pythonds18b20_树莓派 Zero W+温度传感器DS18B20

    树莓派 Zero W+温度传感器DS18B20 作者:陈拓chentuo@ms.xab.ac.cn 2018.05.28/2018.06.01 0.  概述 用树莓派 Zero W读取DS18B20温 ...

  8. 详解温度传感器DS18B20编程与使用

    DS18B20是由DALLAS半导体公司推出的一种的"一线总线"接口的温度传感器, 与传统的热敏电阻等测温元件相比,它是一种新型的体积小.适用电压宽.与微处理器接口简单的数字化温度 ...

  9. arduino水温度传感器数字显示_温度传感器DS18B20

    DS18B20 单线数字温度传感器,即"一线器件",其具有独特的优点: ( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通 ...

  10. 温度传感器DS18B20的使用

    (1)DS18B20原理: a.测温范围-55℃-+125℃,在-10-+85℃时精度为±0.5℃. b.可编程的分辨率为9-12位,对应的可分辨温度分别为0.5℃.0.25℃.0.125℃和0.06 ...

最新文章

  1. 【工具类】时间相关的方法
  2. 数据中心柴油发电机组功率有哪几种?
  3. [scala-spark]6. 继承与特质trait
  4. 记一次vue+vuex+vue-router+axios+elementUI开发(二)
  5. Spring--IoC(1)
  6. std::make_any
  7. C语言之字符串探究(十):递归逆置字符串
  8. 云计算年度技术盛典,腾讯Techo Park开发者大会将在京召开
  9. Navicat的使用,连表查询,python代码操作sql语句
  10. 体检套餐管理系统的综合版
  11. VS C++调用外部exe
  12. linux sz命令详解,Linux中rz命令和sz命令使用详解大全
  13. java生成背景透明的png图片_关于Java生成背景透明的png图片
  14. windows强制删除文件或者程序
  15. Linux 查看与修改mtu值
  16. 验证sqlserver 2000 sp4补丁是否安装成功(安装补丁后可以远程访问)
  17. 信用社pb通用记账_2018年农村信用社高频考点:会计账户
  18. android 菜单一行两列,Android RadioGroup 横向显示(两行两列)
  19. BI神器Power Query(8)-- PQ从文本文件导入数据(2/2)
  20. Git 命令之Git clean

热门文章

  1. JavaScript——this关键字
  2. 【脱单秘籍,单身狗必看】如何变得会与异性聊天?
  3. C# Excel导入导出
  4. Newsfan FTP1软件保留区文件列表
  5. python写词法分析器_如何用python写一个简单的词法分析器
  6. 抛物线求积公式求积分算法matlab,基于Matlab的数值积分公式问题.doc
  7. c语言中aver是什么意思_什么是C语言函数
  8. 《剑指offer》第二章——关于面试官王海波的思考
  9. MySQL中EXISTS的用法
  10. 北大和人大两年整理出来的书单(经济&管理&商业)