多个DS18B20并联,求指导!

2020-02-04 09:12发布

哪位大侠做过多个DS18B20并联?希望能给予指导,不会走太多弯路。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
51条回答
zhxzhx
2020-02-09 15:11
这是使用方法
没有的部分你自己过滤吧,
我这个程序是可以选择多个IO口的,SElect定义的,你不要理它,具体的DS18b20读写,你应该知道的
void scan1820(unsigned char select)
{bit rslt;
idata unsigned char i,cnt;
float idata ls;
unsigned int idata lsi;
cnt = 0;
LastDiscrepancy = 0;
LastDeviceFlag = FALSE;
rslt=OWSearch(select);
PTT=0;
while (rslt)
{
  cnt++;
  putbyte('0');
  putbyte('x');
  puthex(select);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[0]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[1]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[2]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[3]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[4]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[5]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[6]);
  putbyte(',');
  putbyte('0');
  putbyte('x');
  puthex(temp_buff[7]);
  putbyte(',');
  putbyte('/');
  putbyte('/');
  putbyte(' ');
  putbyte('=');
  putbyte(' ');
  DOG=~DOG;
  ls=0;
  if (temp_buff[0]==0x28)        //DS18B20
    {OWInit (select);
     OWWriteByte(0xcc,select);   //skip rom
     OWWriteByte(0x44,select);   //Temperature convert
     ls=gettemp(select);
     }
  if (temp_buff[0]==0xA6)       //DS2438
    {inid=0;
     OWInit (select);
     OWWriteByte(0xcc,select);   //skip rom
     OWWriteByte(0x4E,select);
     OWWriteByte(0x00,select);
     OWWriteByte(0x00,select);

     OWInit (select);
     OWWriteByte(0xcc,select);   //skip rom
     OWWriteByte(0x48,select);
     OWWriteByte(0x00,select);
     delay(250);
     OWInit (select);
     OWWriteByte(0xcc,select);   //skip rom
     OWWriteByte(0xB4,select);   //Temperature convert

     ls=getvol(select);
     }
  ls*=10;
  lsi=ls;
  putint(lsi);
  putbyte(' ');
  putbyte(':');
  putbyte(' ');
  putint(inid/256);
  putbyte(' ');
  putint(inid & 0xFF);
  putbyte(' ');
  putint(cnt);

  putbyte(0x0d);
  putbyte(0x0a);
  rslt = OWSearch(select);
}
PTT=1;
}

一周热门 更多>