单片机/MCU论坛
直播中

吴湛

9年用户 833经验值
擅长:417804
私信 关注
[问答]

请问ds18b20多点测温如何获取序列号?

网上找的几个驱动程序都没法获取序列号 请问程序应该怎么写?  

回帖(1)

顾天天

2023-11-8 10:53:01

  • 首先要得到挂在同一总线的ds18b20的ROM序列号
    读取序列号命令是0x33
    在初始化18b20后向18b20写0x33(在测序列号的时候总线上只能挂一只18B20)
    然后18b20会返回64个比特的序列号;
    每一个18b20的序列号不一样;
    得到所有的18B20的序列号后将这些序列号事先存入程序;
    之后要识别的话向总线写ROM匹配命令即0x55
    然后向总线写你要找的18B20序列号;
    之后就只有这个18B20会响应单片机的指令;
    另外:在启动温度转换的时候先向18B20写0xcc(跳过ROM匹配)这样所有在总线上的18B20都收的到命令
    然后写启动温度转换命令0X44;
    事实上18B20启动温度转换命令或者读取温度数据命令之前必须要有0xcc(跳过ROM匹配)或是0x55(ROM匹配);这其实就是在发送命令前先指定接收者,可以是全部的18B20或者是其中一个。
    至于18B20序列号自动检测。。。相当难搞。。检测命令以及检测方法在DATASHEET上有,不过建议还是直接事先测好序列号然后存入程序来识别比较简单。               
举报

更多回帖

发帖
×
20
完善资料,
赚取积分