zoukankan      html  css  js  c++  java
  • 51单片机学习笔记(清翔版)(22)——数字温度传感器DS18B20

    IIC需要两条线,一条时钟线,一条数据线。

    DS18B20通信只需一条数据线,即单总线。

     

    如果一条总线挂了多个18B20,要访问指定的一个,我们就需要发送序列码,总线上的18B20收到序列码就会和自己的进行比较。

    可以不外接电源,直接从数据线获取电。

    其内部有一个AD转换器。

    寄生电源就是不需要外部电源,从数据线吸取能量,数据线为高电平,器件从数据线吸取能量给内部电容充电,当为低电平,内部电容给18B20供电。为了增强工作电流,在单总线上放一个强上拉,一般通过一个场效应管,直接拉到电源上,因为手册上说,在进行温度转换或进行高速暂存器内容写到EEPROM时,工作电流达1.5mA,数据总线供电方式无法达到这么大,所以需要强上拉。

    我们开发板采用的外部供电,只需要一个弱上拉。

    这单总线还可以接其他单总线器件。

    写0、1和复位是由主控制器发出,读0、1是由主控制器采样DS18B20发出的信号(也是主控制器发出的,它从DS18B20读),存在是由DS18B20发出。

    IIC是从数据最高位开始传输,单总线这个是从最低位开始传输

    温度是以两个字节储存的,一个低字节LSB,一个高字节MSB,默认上电是85℃。

    高字节的S位是符号位。因为温度有正负,当S=1,就是负,S=0,就是正。其它的用来表示温度值。

    TH用户字节1和TL用户字节2可用于做报警用。设置上限报警值和下限报警值。18B20转换来的温度如果高于TH或低于TL就会置位报警标志位,我们可以通过ROM命令在总线上搜索到哪一个DS18B20超过了温度设置,找出报警的芯片。

    配置寄存器是配置温度传感器工作在多少位精度模式下。通过设置R1R0来配置。上电默认是12位精度。bit7是测试位,为1工作在测试模式下,出厂为0,不用改动。

    byte5~7是保留位,上电默认值,没有用。最后一位是校验位,校验前面几位数据的,有兴趣可以看使用手册。

    其中byte2~4可以保存到EEPROM中,掉电不会丢失,这三个数据主要就是通过EEPROM中的值来确认的,器件每次上电,EEPROM中的值都会被拷贝到高速暂存器中。

    我们要配置DS18B20工作在多少位下时,可以通过DS18B20的一些指令往byte4写入数据,然后用功能指令把数据拷贝到EEPROM。如果不写到EEPROM,那么下次上电时,byte2~4数据就会丢失,会按照之前EEPROM值去执行。

    ROM一共5条,每条1个字节,通过写时序,把1个字节数据发给18B20。

    我们只挂接了一个DS18B20,所以就可以只用一条指令CCh。

    单点总线是指总线只挂接了一个DS18B20。

    多机通讯我们就需要用搜索ROM指令,搜索到编码储存起来,再发送匹配指令,再进行温度转换等

     


    开始编程

     

  • 相关阅读:
    Asp.net操作Excel----NPOI
    Python第一模块
    Sping笔记一览
    IO流技术一览
    事务技术一览
    日常问题记录
    分页与JDBC显示文档。
    分页技术与JDBC一览
    JDBC 技术开发
    MYSQL
  • 原文地址:https://www.cnblogs.com/IceHowe/p/10832434.html
Copyright © 2011-2022 走看看