ds18b20与dht11代码设计
-
Ds18b20代码设计
图1.2 DS18B20的初始时序
初始化时序:1-wire总线需获取存在脉冲来检测是否存在DS18B20,还要通过这个脉冲过程通知DS18B20准备好,单片机将要对它进行操作。脉冲检测过程中,首先单片机拉低引脚,持续480us到960us,然后单片机释放总线,DS18B20等待15us到60us后,会主动拉低引脚60us到240us,然后DS18B20会主动释放总线,这样IO口会被上拉电阻自动拉高,即初始化成功。
unsigned char init_ds18b20()
{
unsigned char flag;
_DINT(); //禁止总中断,防止干扰总线
DQ=0;//单片机将DQ拉低
_delay_cycles(600); //产生500us复位脉冲
DQ=1; //拉高总线
_delay_cycles(60);//延时60us等待从机响应
if(DQ) 读取存在脉冲
flag=1;
else
flag=0;
_EINT();//使能总中断
return flag; //如果flag=0则初始化成功 flag=1则初始化失败
}