DS18B20与单片机的通信比较特别,是单总线通信方式,可以这样理解,它实际上是串口通信,既然要通信,必须要有个协议吧,这个协议不是你定的,也不是我定的,而是研发的人去定的。单片机与18b20实际上就是要按照研发者的协议,一步一步写的,那个协议我就不细说了。这样吧,举个例子,
ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
DATA = 0; // 给脉冲信号
dat>>=1;
DATA = 1; // 给脉冲信号
if(DATA)
dat|=0x80;
delay(8);
}
return(dat);
}
这个是单片机读18b20的数据,上面dat是用来存数据的,至于为什么循环读值前右移一位,我就不细说了,自己琢磨琢磨。协议规定,读的时候,先拉低电平短时间内(dat右移的时间就够了,所以没写)再拉高,然后一位一位的读,主意是一位一位!其他我也没什么得说了,自己琢磨琢磨18b20的资料,你会懂的!