ds18b20初始化函数怎么写

2024-12-28 12:05:51
推荐回答(3个)
回答1:

void reset_18b20(void) /*DS18B20时序太难懂,参考了不少网上的东西,勉强弄出来了*/
{ uchar reset=1;

while(reset)
{ DQ=1;
_nop_();
DQ=0; // RESET 拉低ds18b20单总线
delay_500us(); // 拉低500us
DQ=1; // 释放总线,等待DS18B20的存在脉冲
delay_45us(); // 等待45us
delay_45us(); //等待45us
if(DQ==0) reset=0; //复位成功
delay_430us(); //452us
DQ=1;
}
}
复位就是初始化,这个是个写好的程序,重要的延时必须精确到us,跟着时序走就不会错了。

回答2:

void reset_18b20(void) /*DS18B20时序太难懂,参考了不少网上的东西,勉强弄出来了*/
{ uchar reset=1;

while(reset)
{ DQ=1;
_nop_();
DQ=0; // RESET 拉低ds18b20单总线
delay_500us(); // 拉低500us
DQ=1; // 释放总线,等待DS18B20的存在脉冲
delay_45us(); // 等待45us
delay_45us(); //等待45us
if(DQ==0) reset=0; //复位成功
delay_430us(); //452us
DQ=1;
}
}

回答3:

用c语言,对DS18B20进行初始化、读出温度数据、用十进制显示,这方面的例子,网上就太多了。

楼主随便使用一个,基本就能成功。