DS18B20是数字温度计,应该和单片机关系不大,上拉电阻是要加的,可能主要原因在于两个DS18B20的区别,是不是有一个坏掉了,另外可以量一下两个供电有没有差别?
加上拉的温度里还有电阻的散热,但做的时候一般还是要加上拉。
用实际的温度计测下当时温度 在对比就知道哪个准了呗 找基准源不就行了 上啦要加吧 每个18B20也不一样的 正常吧
再好好看看吧,可能你的tem传过来已经错了,我是分开读的。
unsigned
char
a=0;
unsigned
char
b=0;
unsigned
int
t=0;
Init_DS18B20();
WriteOneChar(0xCC);
//
跳过读序号列号的操作
WriteOneChar(0x44);
//
启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);
//跳过读序号列号的操作
WriteOneChar(0xBE);
//读取温度寄存器等(共可读9个寄存器)
前两个就是温度
a=ReadOneChar();
//读取温度值低位
b=ReadOneChar();
//读取温度值高位
t=b*0x100+a;