RTDS18B20和DHT11这2个温度传感器都是用的单总线和MCU通信,需要发送读写命令时为什么不能直接写命令比如0xCC,而是要自己写一个发送函数,DS18B20是60us+2us来判断高低电平:
void DS18B20_Write_Byte(u8 dat)
{
u8 j;
u8 testb;
DS18B20_IO_OUT();//SET PG11 OUTPUT;
for (j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if (testb)
{
DS18B20_DQ_OUT=0;// Write 1
delay_us(2);
DS18B20_DQ_OUT=1;
delay_us(60);
}
else
{
DS18B20_DQ_OUT=0;// Write 0
delay_us(60);
DS18B20_DQ_OUT=1;
delay_us(2);
}
}
}
是不是单总线wire都是要自己写这个函数的,还是因为没用复用功能,没办法直接让MCU自己发0XCC这种指令,所以需要自己写的?
还有TTL电平的高低判断是怎么样的(是几us高+几us低算1,几us高+几us低算0)?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
喔我有点懂了,有i2c功能所以模拟时序是单片机自己有的,我们只需要关心发什么数据就好。而wire就不行。
一周热门 更多>