单片机通过一根线来读DS18B20温度传感器采集的温度,DS18B20输出的脉冲时序是怎样的?

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:11:32
单片机读的时候DS18B20要输出9个字节的数据,那单片机怎样正确的接收并存储这9个字节的数据(不丢包或接收不错位)?

由于18b20是单总线结构 所以 时序一定要正确,也就是中间哪怕只差了几个us都可能出错误!

所以仔细看看说明书 ,读或写的时候 分别要多长时间,计算你系统IO输出输入读取的时间,要对应上

如果中间出现长时间延时(比如等待温度转换等等),此时一定要再次执行复位操作,以便时序达到统一

总体执行步骤是:复位→匹配ROM→温度转换→延时→复位→匹配ID→读取温度

如果线上只有一个传感器的话,可以发送忽略匹配ID命令。

我这里有现成的程序,PIC单片机C语言控制的 6条总线,每条线上挂载40以内 的程序,如果需要可供你参考

uchar ReadByte (void) //读取单字节
{
uchar i,u=0;
for(i=0;i<8;i++)
{
dq = 0;
u >>= 1;
dq = 1;
if(dq==1)
u |= 0x80;
TempDelay (4);
_nop_();
}
return(u);
}

想下载DS18B20温度传感器资料,可以到慧净论坛上找找,可能有你需要的东西