zoukankan      html  css  js  c++  java
  • 使用DS18B20设计温控系统

      datasheet真的是得看看啊,比如DS18B20,不然程序都不好写,美国DALLAS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需要一个IO口,无需任何外部原件,直接将温度转换为数字信号,以数字码方式串行输出,从而大大简化了传感器与微处理器的接口。

      DS18B20在寄生电源方式下可由数据线供电,在使用中不需要任何外围元件,全部传感原件及转换电路集成在形如一只三极管的集成电路上。

      目前常用的单片机与外设之间进行数据传输的串行总线主要有IIC,SPI和SCI总线,期中IIC总线以同步串行二线方式进行通信(一条时钟总线,一条数据总线),SPI总线则以同步串行三线方式进行通信(一条时钟总线,一条数据输入总线,一条数据输出总线),而SPI总线以异步串行方式进行通信(一条数据输入总线,一条数据输出总线)。而DS18B20不同,单总线适用于单主机系统,能够控制一个或者多个从机设备。

      DS18B20的工作原理是最重要的拉,它对时序有很严格的要求,要根据DS18B20的指令来写,如下面的ROM FUNCTIONS FLOW CHART

    INITIALIZATION        工作原理
    All transactions on the 1-Wire bus begin with an initialization sequence. The initialization sequence
    consists of a reset pulse transmitted by the bus master followed by presence pulse(s) transmitted by the
    slave(s).
    The presence pulse lets the bus master know that the DS18B20 is on the bus and is ready to operate. For
    more details, see the “1-Wire Signaling” section.

    一,Read ROM [33h]

    二,Match ROM [55h]

    三,Skip ROM [CCh]

    四,Search ROM [F0h]

    五,Alarm Search [ECh]

    而最重要的就是时序图了,

    一,初始化

    1,将数据线置高电平1

    2,延时(要求不高,尽可能短)

    3,数据线拉到低电平0

    4,延时750us,(该时间范围可在480~960us)

    5,数据线拉到高电平1

    6,延时等待。如果初始化成功则在15~60ms之间产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。但是应该注意不能无限延时,其延时的时间从发出高电平算起(第5步骤)最少要480us。

    二,DS18B20写数据

    1,数据总线先置低电平为0

    2,延时确定的时间为15us

    3,按从低位到高位的顺序发送数据(一次只能发送一位)

    4,延时时间为45us

    5,将数据线拉到高电平为1

    6,重复1~5的步骤

    7,最后将数据线拉高到1

    三,DS18B20读数据

    1,将数据总线拉高到1

    2,延时2us

    3,将数据总线拉低到0

    4,延时6us

    5,将数据总线拉高到1

    6,延时4us

    7,读数据线的状态得到一个状态位,并进行数据处理

    8,重复1~7,直到读取完最后一个字节。

      关于如何使用DS18B20简述概括一下,但是写程序还是得注意很多东西呀,,先这样啦。。。

  • 相关阅读:
    为什么大家都说 SELECT * 效率低?
    一个 Java 方法,最多能定义多少参数?
    牛逼哄哄的布隆过滤器,到底有什么用?
    10w+ Excel 数据导入,怎么优化?
    为什么 wait 方法要在 synchronized 中调用?
    使用Redis存储聊天数据的一种方案(使用lua解决原子性问题)
    Linux下安装redis
    Django Rest Framework组件:解析器JSONParser、FormParser、MultiPartParser、FileUploadParser
    API测试之Postman使用全指南(转载)
    Django Rest Framework组件:序列化与反序列化模块Serializer
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3330416.html
Copyright © 2011-2022 走看看