这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 18B20 读不出温度,???

共3条 1/1 1 跳转至

18B20 读不出温度,???

助工
2012-02-17 16:20:25     打赏



请大家帮忙看看,那块有问题!!??

void rest_18b20()

 DQ=1;
 delay1(1);
 DQ=0;
 delay1(60);
 DQ=1;
 delay1(4);
// DQ=1;
 delay1(6);
 if(DQ==0)
// P1=0x00;
delay1(10);
 else
// P1=0XFF;
 delay1(10);
// DQ=1;
 
 }

void wrte18b20_0()
{
 DQ=1; 
 delay1(1);
 DQ=0;
 delay1(5); 
}

void wrte18b20_1()
{
 DQ=1; 
 delay1(1);
 DQ=0;
 delay1(3);
 DQ=1;
 delay1(4); 
}

void write_18b20(unchar com)
{
 unchar i;
 for(i=8;i>0;i--)
 {
  if(com&0x01)
  wrte18b20_1();
  else
  wrte18b20_0();
  com=com>>1;
  } 
}

unchar read_18b20()
{
 unchar x, date=0;
 for(x=0;x<8;x++)
 {
  DQ=0;
  date>>=1;
  //DQ=1;
  
      
  DQ=1;
  if(DQ)
  date|=0x80;
  else
  date|=0x00;
  delay1(5);
  } 
 return date;
 }

void init_18b20()
{
// unchar
 rest_18b20();
 write_18b20(0xcc);
 write_18b20(0x44);
 delay(500);
 rest_18b20();
 write_18b20(0xcc);
 write_18b20(0xbe);
 delay(200);
 tempL=read_18b20();
 tempH=read_18b20();
 
  tempH=(tempH<<4)|(tempL>>4);
  tempL=tempL&0x0f;
  if(tempH&0x80)
  {
  tempH=~tempH;
  tempL=~tempL+0x01;
  flag=1;
 }
  else
  flag=0;
 
  //htd();
  gaowei=tempH/100+0x30;
  diwei=tempH%100/10+0x30;
  xswei=tempH%10+0x30;
}




关键词: 18B20     不出     温度     18b20     delay1    

助工
2012-02-20 12:33:49     打赏
2楼
延时是对的,我找去问题了!

4楼说对了!

可是看时序写1和写0应该分开写的啊!

难道不管哪个时序图,总是先写0,再写1吗?


助工
2012-02-25 22:00:45     打赏
3楼

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
站长统计
×

有奖问卷
英飞凌400V CoolSiC™重新定义高性能电源设计的功率密度和效率,含有奖小问卷,限前200名工程师!