写时序图分析:
首先由控制器拉低总线15us,之后,如果要写入0,则继续拉低总线并为此45us.如果要写入1则释放总线由上拉电阻拉高总线,也为此45us。写时序相对比较简单,转换为代码如下:
void d***WriteByte(u8 dat)//写一个字节的数据,从低位开始
{
u8 i;
for(i = 0;i 《 8;i++)
{
d***DQStat(0); //控制器拉低总线
delay15us(); //维持15us
if(dat & 0x01) d***DQStat(1);
else d***DQStat(0);
dat 》》= 1;
delay45us();
d***DQStat(1); //45us后释放总线
}
}
DS18B20的三个时序图就分析完了,DS18B20只是单总线数据通信中的一个例子,大家了解了DS18B20时序图的分析,那么就可以试试分析DHT11的时序图完成其初始化函数,以及读数据函数。
写时序图分析:
首先由控制器拉低总线15us,之后,如果要写入0,则继续拉低总线并为此45us.如果要写入1则释放总线由上拉电阻拉高总线,也为此45us。写时序相对比较简单,转换为代码如下:
void d***WriteByte(u8 dat)//写一个字节的数据,从低位开始
{
u8 i;
for(i = 0;i 《 8;i++)
{
d***DQStat(0); //控制器拉低总线
delay15us(); //维持15us
if(dat & 0x01) d***DQStat(1);
else d***DQStat(0);
dat 》》= 1;
delay45us();
d***DQStat(1); //45us后释放总线
}
}
DS18B20的三个时序图就分析完了,DS18B20只是单总线数据通信中的一个例子,大家了解了DS18B20时序图的分析,那么就可以试试分析DHT11的时序图完成其初始化函数,以及读数据函数。
举报