zhouxy0901 发表于 2013-5-7 11:38:13

18b20多点测温的实现

   改程序的主要目的是实现18b20的多点测温,由于手中只有一个,就修改了一个通过检测ROM,匹配ROM的方法实现温度的测量。在程序中需要测出每个18B20的rom,然后匹配,就能实现多点测温。
   
    先读出每个DS18B20的64位ROM码,然后写到程序中进行匹配
    方法:
   在硬件系统搭建完成时在总线上每次挂接一个DS18B20,对该DS18B20发送读取ROM序列号命令(0x33),这样DS18B20就按照从高位到低位的顺序发送8字节地址到总线上,单片机依次读取、保存即可得到一个DS18B20的序列号。然后在总线上单独挂接另一个DS18B20芯片得到该芯片的序列号。有了这些序列号后,将这些序列号固化在程序中(如数组、查表),当单片机向总线发送匹配ROM命令之后紧跟发送一个序列号,这样接下去的读取温度操作将只有ROM序列号匹配的那个DS18B20做出相应的操作。

adongliu 发表于 2013-5-7 11:58:56

我都是先将每个DS18B20的温度报警上下限寄存器内写入自定义地址,使用这个自定义地址来识别,这样子更换探头时,只需要写自定义地址到探头,不用改序列号,做一次器件搜索就好。

zhouxy0901 发表于 2013-5-7 20:09:08

adongliu 发表于 2013-5-7 11:58 static/image/common/back.gif
我都是先将每个DS18B20的温度报警上下限寄存器内写入自定义地址,使用这个自定义地址来识别,这样子更换探 ...

我试下!

xiefy21 发表于 2013-8-15 20:29:07

mark…
顶一个…

大米饭 发表于 2013-8-16 08:43:35

adongliu 发表于 2013-5-7 11:58 static/image/common/back.gif
我都是先将每个DS18B20的温度报警上下限寄存器内写入自定义地址,使用这个自定义地址来识别,这样子更换探 ...

这个注意不错,之前也有做过多点测温的,但是没有想过把地址写在温度报警上下限寄存器里,你这个自定义地址是怎么定义的啊?

qq511153186 发表于 2013-8-16 15:31:17

以前想做个多点测温的,水平有限一直没成功,make

hck2llj 发表于 2014-4-29 11:59:34

谢谢分享,我去试试看

RGB电子 发表于 2014-5-1 09:09:00

学习下,

magsino 发表于 2014-5-1 13:40:31

有用。留名。感谢楼主分享

tlsmf 发表于 2014-5-6 14:59:57

mark            

hljmlb20060607 发表于 2014-8-17 14:25:47

好东西,正好需要,顶一个

zjsdlt2013 发表于 2014-8-18 20:20:51

谢谢分享,学习学习。

只为那梦的轮回 发表于 2014-11-18 13:02:20

谢谢分享。

9547818 发表于 2014-11-29 20:11:13

好,长知识了。确实不错。

dongwang_fl 发表于 2014-11-29 20:32:27

这个很不错的说
页: [1]
查看完整版本: 18b20多点测温的实现