您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>传感器>

初始化时序步骤 - DS18B20的调试总结和程序

2018年01月05日 08:57 网络整理 作者: 用户评论(0

初始化时序步骤:

1. 主机将端口设为输出,先发送一个高电平,然后再拉低,维持480-960US;(推荐500-600US)

2. 主机将端口设为输入,上拉电阻此时将电平拉高,主机等待60US-200US;(推荐100-150US)

3. 主机读取端口数据,低电平则初始化成功;高电平表示初始化失败;

4.读取数据完毕后,主机等待至少400US; (推荐450-500US)

注:

l 第四步很重要,读取初始化状态后,仍然延时400US才可以初始化完毕,否则传感器不能正常使用;

l 在这里注意端口需要不停地改变方向;在主机发送时,设为输出,主机接收时,设为输出;

/*****************18B20的初始化程序***************************/

byte INIT_18B20() {

byte DQ_RETURN=2;

DQ_OUT=1; //引脚设置为输出

DQ=1;

DELAY1(); //稍微延时,即可

DQ=0; //将电平拉低至少480uS,最大为960US

DELAY9(70);

DQ_OUT=0;

//设置为输入,设为输入15到60US

DELAY9(6); //等待18B20响应,如果为低电平表示初始化成功,维持60到240 //微秒

DQ_RETURN=DQ;

DELAY9(70); //读完数据后,仍然延时,至少480US

return(DQ_RETURN); //返回值为1,表示失败,返回值为0表示成功

}

端口写数据时序

DS18B20的调试总结和程序

1. 主机将电平拉高,稍微延时(推荐值:2US),然后拉低电平,产生一个下降沿,表示写数据开始;低电平维持至少1US;(此时推荐2US)

2. 此时,将要写的1或0放在数据线上;(从写数据第一步开始到现在,整个过程在15US之内完成;

3. 然后主机延时等待至少50US;(推荐60US)

4. 主机最后将电平拉高;

5. 每写两位数据之间的间隔要大于1US;

注:

l 在写步骤中,整个过程端口方向均为输出;

这里对时序要求高,最好用示波器调整出精确的时序;

/*****************向18B20写数据********************************/

void WRITE_18B20(unsigned char ch){

byte i;

for(i=0;i《8;i++) {

DQ_OUT=1; //端口设为输出,并给个拉低电平的下降沿

DQ=1;

DELAY1();

DQ=0; //拉低电平,并维持一微秒以上,表示要发送数据

DELAY1();

DELAY1();

//在15US内将要写的电平写在线上

if((ch&0x01)==1) //将数据按位取出,从LSB到MSB依次送出

DQ=1;

else

DQ=0;

ch=ch》》1;

DELAY9(8); //电平维持40US以上,18B20将在此时将数取出

DQ=1;

}

DQ=1; //最后将电平重新拉高

}

非常好我支持^.^

(87) 93.5%

不好我反对

(6) 6.5%

( 发表人:李倩 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!