转载:DS18B20多点测温网络的三种方法

2020-01-21 21:36发布

原文:多个DS18B20 ROM自动搜索 展示

多点测温网络的三种方法:
先读出每个DS18B20的64位ROM码,然后写到程序中进行匹配

方法:
   在硬件系统搭建完成时在总线上每次挂接一个DS18B20,对该DS18B20发送读取ROM序列号命令(0x33),这样DS18B20就按照从高位到低位的顺序发送8字节地址到总线上,单片机依次读取、保存即可得到一个DS18B20的序列号。然后在总线上单独挂接另一个DS18B20芯片得到该芯片的序列号。有了这些序列号后,将这些序列号固化在程序中(如数组、查表),当单片机向总线发送匹配ROM命令之后紧跟发送一个序列号,这样接下去的读取温度操作将只有ROM序列号匹配的那个DS18B20做出相应的操作。

每一个I/O口可挂一个DS18B20,如一种快速查询多点DS18B20温度的方法

利用SEARCH ROM 指令 动态搜索64位ROM码(二叉树遍历)

SEARCH ROM指令:发出search rom 指令后,ds18b20将所有的第一位0,0,0放到总线上,单片机读到的是相与的结果为0.接着ds18b20将所有器件的第一位的补码1,1,1放到总线上,单片机读到的数据是相与的结果为1.等待主机响应之后,继续将下一位及其反码,发送到总线上。
每次读ds18b20发出的两位会得到00,01,10,11的结果其含义如下:
   00:挂在总线上的ds18b20在这一位上有冲突, 即有的在这一位上为0, 有的在 这一位上为1。
   01:所有DS18B20此位数据均为0
   10:所有DS18B20此位数据均为1
   11:没有DS18B20
ROM 搜索过程是简单三步过程的重复:
      (1)读一位(2)读核位的补码
      (3)写所需的那一位的值:
       发0, 则选中这一位为0的ds18b20, 在此后的过程中, 仅这一位为0的ds18b20参与向总线收发数据。如发1, 则选中这一位为1的ds18b20, 在此后的过程中, 仅这一位为1的ds18b20参与向总线收发数据。
       总线主机在ROM 的每一位上完成这简单的三步过程。在全部过程完成之后总线主机便知道一个器件中ROM 的内容。

……

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。