在一条数据线上挂接了两个18b20 首先编写函数分别读出了两个18b20的ROM,然后两个 18b20都挂到一条数据线上 实现两个结点读取温度 现在无法实现
读取温度函数:
unsigned char rom[][8]={{0xc5,0x2a,0xa8,0x02,0x00,0x00,0xd5,0xff}, {0xb3,0x9a,0xa8,0x02,0x00,0x00,0xb0,0xff} };
void get_tem()
{ unsigned char tem1,tem2,i,j;
for(j=0;j<2;j++) //仅以2路为例,改循环次数即可扩充到8路或更多, { reset_18b20(); //调用复位函数 write_b (0x55); //发送ROM匹配命令 for(i=0;i<8;i++) { write_b(rom[j][i]); //发送64位序列号 }
write_b(0x44);//温度转换
delay_ms(1000);
reset_18b20();//调用复位函数
write_b (0x55); //发送ROM匹配命令 for(i=0;i<8;i++) { write_b(rom[j][i]); //发送64位序列号 }
write_b(0xBE);
tem1=read_b();
tem2=read_b();
}
}
这个函数读出的tem1和tem2 均为oxff 有时还产生错误数值。
希望得到指点···[EM07] |