学习DS1820随记

来源:互联网 发布:oracle数据库授权 编辑:程序博客网 时间:2024/06/05 11:36

一.DS1820与单片机的接口只需要一根数据线即可。当然连线简单意味着软件处理上可能要麻烦一点。下面来看看它的优点:

全数字温度转换及输出

先进的单总线数据通信

最高12位分辨率,精度可达±0.5摄氏度

12位分辨率时最大工作周期为750ms

可选择寄生工作方式

检测温度范围为-55℃~+125℃

内置EEFROM,限温报警功能

64位 光刻ROM,内置产品序列号,便于多机挂接

多样风转形式,适应不同硬件系统

二.DS1820的图片

 ds1820的图片
注意:接线时正负极不要接反,否则会烧坏DS1820,接反的话DS1820会发热。

三.DS1820的精度

温DS1820的精度为用户可编程的 9,10,11,12位,分别以0.5℃,0.25℃,0.125℃,0.0625℃增量递增。上电状态下默认精度为12位。
温度寄存器格式:
温度寄存器格式

四.DS1820执行序列

通过单总线端口访问DS1820的协议如下:

步骤1:初始化

初始化一个由总线控制器发出的复位脉冲额其后又从机发出的存在脉冲。

步骤2:ROM操作指令

READ ROM[33h] (读取ROM指令)

只有存在一个DS1820的时候可以使用

MATCH ROM[55h] (匹配ROM指令)

存在多个DS1820时用来定位到具体一个上面

SKIP ROM[CCh] (忽略ROM指令)

允许 总线控制器不要提供 64位ROM编码就使用功能指令

步骤3:DS1820功能指令

CONVERT T[44h] (温度转换指令)

启动温度转换,产生的结果数据以2个字节的形式被存储到高速暂存器中,如果DS1820处在 转换中,将在总线上返回0,若温度转你换完成,则返回1。

READ SCRATCHPD[BEh] (读暂存器指令)

读取将从字节0开始,一直进行下去,直到第9字节读完,如果不读完,控制器可以在任何时间发出复位命令来终止读取。

WRITE SCRATCHPD[4Eh] (写暂存器指令)

向DS1820的暂存器写入数据,开始位置在TH寄存器 (暂存器的第 2个字节),接下来写入TL(暂存器的第3个字节),最后希尔配置寄存器(暂存器的第4个字节),数据以最低有效 位开始传送。
注意:
1.对于寄生电源模式下的DS1820,在温度转换 和拷贝数据到EEFROM期间,必须给单总线一个强上拉。总线上在这段时间内不能有其他活动。
2.总线控制器在任何时刻都可以 通过发出 复位信号 中止数据传输 。
3.TH,TL和配置寄存器这3个字节的写入必须在复位电路信号发起之前。

五.DS1820的时序

复位序列:复位和存在脉冲

一个复位脉冲跟着一个存在脉冲表明DS1820已经准备好发送2和接收数据。

DS18B20的初始化

  (1) 先将数据线置高电平“1”。
  (2) 延时(该时间要求的不是很严格,但是尽可能的短一点)
  (3) 数据线拉到低电平“0”。
  (4) 延时750微秒(该时间的时间范围可以从480到960微秒)。
  (5) 数据线拉到高电平“1”。
  (6) 延时等待(如果初始化成功则在15到60微妙时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
  (7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
  (8) 将数据线再次拉高到高电平“1”后结束。

DS18B20的写操作

  (1) 数据线先置低电平“0”。
  (2) 延时确定的时间为15微秒。
  (3) 按从低位到高位的顺序发送字节(一次只发送一位)。
  (4) 延时时间为45微秒。
  (5) 将数据线拉到高电平。
  (6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。
  (7) 最后将数据线拉高。
  DS18B20的写操作时序图。

DS18B20的读操作

  (1)将数据线拉高“1”。
  (2)延时2微秒。
  (3)将数据线拉低“0”。
  (4)延时3微秒。
  (5)将数据线拉高“1”。
  (6)延时5微秒。
  (7)读数据线的状态得到1个状态位,并进行数据处理。
  (8)延时60微秒。DS18B20的读操作时序图。

0 0
原创粉丝点击