电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

DS18B20的时序及代码解析

2022-05-10 14:01分类:传感器 阅读:

 

  DS18B20的关键作用是它的立即读数据的温度感应器。温度感应器的精密度为客户可编程控制器的9,10,11或12位,各自以0.5℃,0.25℃,0.125℃和0.0625℃增加量增长。在通电情况下默认设置 的精密度为12位(因此 最终获得的信息要乘于0.0625获得真实溫度)。DS18B20运行后维持功耗低等候情况;当须要实行温度检测(和AD转换)时,系统总线控制板务必传出[44h]指令。

  在哪以后,造成的溫度信息以2个字节数的方式被储存到快速暂存器的溫度数据寄存器中(因此 中后期读取数据时,务必持续载入2次数据信息),下边详细介绍时钟频率及对应编码(以12MHz的晶振电路为例子,手机充电线界定为DQ),在其中DS18B20的全部通讯全是以由校准单脉冲构成的复位编码序列逐渐的,并使用的是总线结构协议书。

  实际操作次序:复位——》写对应的控制代码(用写数据信息涵数进行)——》载入DS18B20所搜集到的数据信息(用读取数据涵数进行)———》把收集的数据信息转换成具体的溫度。

  状态图及编码剖析以下

  一、复位

  在复位编码序列期内,系统总线控制板降低系统总线并维持480us(改延迟能够在480~960us中间,但必须在480us之内释放出来系统总线)以传出一个校准脉

  冲,随后释放出来系统总线,进到接受情况(等候DS18B20回复)。系统总线释放出来后,总线结构由上拉电阻拉到上拉电阻。当DS18B20检测到I/O脚位上的上升沿后,等候15-60us,随后其以降低系统总线60-240us的形式传出存有单脉冲。到此,复位时钟频率结束。

  DS18B20的时序及代码解析

  复位编码,复位编码写到此,实际上大家便可以用数码显示管表明来检测复位是不是取得成功(即DS18B20有回复),数码显示管表明”0“,初始化失败,表明”1“,则重置取得成功。

  bit DS18B20_init()

  {

  bit ack = 1;

  DQ = 0; //服务器降低系统总线

  delay_us(32); //延迟495us

  DQ = 1; //释放出来系统总线,与此同时IO口造成的上升沿能被DS18B20所检验到

  delay_us(4); //延迟超过60us,保证下面DS18B20能传出60~240us的存有单脉冲回复

  ack = DQ; //在这里60~240us以内DQ被DS18B20所占有,若存有,则其会推送一个低电频数据信号,DQ被DS18B20降低,则ack为0,相反为1

  delay_us(15); //延迟达240us,让DS18B20释放出来系统总线

  DQ = 1;

  return(ack);

  }

  二、DS18B20的写时钟频率

  服务器在写时隙向DS18B20载入数据信息,在其中分成写”0”时隙,和写”1”时隙。系统总线服务器采用写“1”时空隙向DS18B20载入逻辑性1,应用写“0”时空隙向DS18B20载入逻辑性0.全部的写时隙务必有至少60us的延迟时间,邻近2个写时隙务必要有至少1us的修复時间。二种写时隙都根据服务器降低系统总线造成(见下面的图)为了更好地造成写1时隙。

  在降低系统总线后服务器需要在15μs内释放出来系统总线。在系统总线被释放出来后,因为上拉电阻将系统总线修复为上拉电阻。为了更好地造成写”0”时隙,在降低系统总线后服务器务必再次降低系统总线以达到时隙延迟时间的规定(最少60μs)。

  在服务器造成写时隙后,DS18B20会在之后的15~60us的一个时间范围内取样总线结构(DQ)。在取样的周期时间内,假如系统总线为上拉电阻,主机遇向DS18B20载入1;假如系统总线为低电频,主机遇向DS18B20载入0。

  总的来说,全部的写时隙务必最少有60us的延迟时间。邻近2个写时隙务必要有至少1us的修复時间。全部的写时隙(写0和写1)都由降低系统总线造成。

  DS18B20的时序及代码解析

  DS18B20的写时钟频率编码 :写字节数涵数、由底位至上位,向DS18B20载入一个字节的数据信息。无传参,形参byte是待载入的字节数数据信息,载入8次,挪动8次,确保每一位都传送至DQ。

  void DS18B20_write_byte(uchar byte)

  {

  uchar i;

  for(i=0 ; i《8 ; i )

  {

  DQ = 0; //拉低总线,产生写时隙

  _nop_();

  _nop_(); //大于1us的延时

  DQ = 1; //15us之内释放总线

  _nop_();

  _nop_(); //适当延时

  DQ = byte & 0x01; //将字节低位写入单总线

  delay_us(3); //在15~60us内等待DS18B20来采集信号

  DQ = 1; //释放总线

  byte 》》= 1; //每一次讲要载入的数据信息偏移至较低位,

  }

  }

  三、DS18B20的读时钟频率

  服务器进行读时钟频率时,DS18B20仅被用于传送数据给控制板。因而,系统总线控制板在传出读暂存器命令[0xBE]或读电源模式命令[0xB4]后务必马上逐渐读时钟频率,DS18B20能够给予要求信息内容。此外,系统总线控制板在传出推送温度换算命令[0x44] (或招回EEPROM命令[0xB8])以后读时钟频率,详细DS18B20 的集成ic指南上的作用命令。

  全部读时钟频率务必至少60us,包含2个读周期内最少1us的修复時间。当系统总线控制板把手机充电线从上拉电阻拉到低电频时,读时钟频率逐渐,手机充电线务必最少维持1us,随后系统总线被释放出来。DS18B20 根据拉升或降低系统总线上去传送”1”或”0”。当传送逻辑性”0”完毕后,系统总线将被释放出来,根据上拉电阻返回上升沿情况。从DS18B20輸出的数据信息在学时钟频率的降低沿产生后15us 内合理。因而,系统总线控制板在学时钟频率逐渐后务必暂停把I/O口推动为低电15us,以载入I/O口情况。

  DS18B20的时序及代码解析

  DS18B20的读时钟频率的编码 :读字节数涵数、由底位至上位,载入DS18B20所搜集到的数据信息。带传参,可融合之前的写时钟频率,对写、读取数据涵数开展检测(后边会提及检测全过程及实际效果)byte 是载入到的字节数数据信息。在其中,此涵数载入8次,挪动7次(具体挪动8次)。

  uchar DS18B20_read_write()

  {

  uchar i;

  uchar byte; //byte为要接受到的数据信息

  for(i=0 ; i《8 ; i )

  {

  DQ = 0; //产生读时序

  _nop_();

  _nop_(); //简单延时

  DQ = 1; //释放总线,有从机DS18B20占用

  byte 》》= 1; //先开展挪动

  if(DQ) //让DS18B20占有系统总线,传出收集到的数据信号

  byte |= 0x80; //若DQ=1,则让当今byte最大位为1,在下一次循环系统中挪动至次上位,最终做到从底位到上位接受的目地;若DQ=0,则可绕开此句子,立即在下一次循环系统对byte开展挪动补0。之上实际操作15us之内进行

  delay_us(3); //延迟60us

  DQ = 1; //释放出来系统总线

  _nop_();

  }

  }

上一篇:max6675温控器设计

下一篇:ds18b20测温程序,ds18b20温度测量c51单片机程序

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部