若采用多点测温,单片机如何识别ds18b20?
发布网友
发布时间:2022-08-01 17:38
我来回答
共2个回答
热心网友
时间:2024-05-18 01:58
首先要得到挂在同一总线的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上有,不过建议还是直接事先测好序列号然后存入程序来识别比较简单。
热心网友
时间:2024-05-18 01:59
利用DS18B20里面得ID号去识别,这个难度很大,当年我也是花了很长时间才搞懂,:)也就是一根单总线,挂很多DS18B20的情况。