⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds18b20.c

📁 主要是对DS18B20进行初始化的设计
💻 C
字号:
/************DS18B20初始化******/
 uchar Ds18b20_Init(void)//存在返0.否则返1
 {  uchar temp=1;
    uchar outtime=ReDetectTime;//超时时间
    while(outtime--&& temp)
    {
      IoOut_DQ();
      Delay_us(2);//(250)1514us时间可以减小吗
      ReleaseDQ();
      Delay_us(2);
      PullDownDQ();
      Delay_us(600);//514us(480-960)
      ReleaseDQ();
      Delay_us(70);//73us(>60)
      IoIn_DQ();
      temp=ReadDQ();
      Delay_us(500);//us
    }
    return temp;
 }
/*************写bit2DS18B20***********/
void Ds18b20_WriteBit(uchar  bitdata)
{ ioout_dq();
  if(bitdata)
  {
    PullDownDQ();
    Delay_us(2);//2us(>1us)
    ReleaseDQ();//(上述1-15)
    Delay_us(85);//86us(45-x,总时间>60)
  }else
  {
    PullDownDQ();
    Delay_us(2);//86us(60-120)
  }
  ReleaseDQ();
  Delay_us(2);//2us(>1us)
}
/***********写Byte Ds18b20*********/
void Ds18b20_WriteByte(uchar  chrdata)
{
  uchar ii;
  for(ii=0;ii<8;ii++)
  {
    Ds18b20_WriteBit(chardata &Ox01);
    chadata>>=1;
  }
}
/***********写Ds18b20*********/
void Ds18b20_Write(uchar *p_readdata,uchar butes)
{
  while(bytes--)
  {
    Ds18b20_WriteByte(*p_readdata);
    p_readdata++;
  }
}
/**********读bit from Ds18b20*********/
uchar Ds18b20_ReadBit(void)
{
  uchar bitdata;
  IoOut_DQ();
  PullDownDQ();
  Delay_us(2);//2us(>1us)
  ReleaseDQ();
  Delay_us(8);//8us(<15us)
  IoIn_DQ();
  bitdata=ReadDQ();
  Delay_us(85);//85us(上述总时间要>60us)
  return bitdata;
}
/**********读 Byte Ds18b20 *********/
uchar Ds18b20_ReadByte(void)
{
  uchar ii,chardata;
  for(ii=0;ii<8;ii++)
  {
    chardata>>=1;
    if(Ds18b20_ReadByte())chardata|=Ox80;
  }
  return chardata;
}

/**********读 Ds18b20 ROM**********/
bit Ds18b20_ReadRom(uchar *P_readdata)//成功返回0,失败返回1
{
  uchar ii=8;
  if(Ds18b20_Init()) return 1;
  Ds18b20_WriteByte(ReadRom);
  while(ii--)
  {
    *P_readdata=Ds18b20_ReadByte();
    p_readdata++;
  }
  return 0;
}
/**********读 Ds18b20 EE**********/
uchar Di18b20_ReadEE(uchar *P_readdata)//成功返回0,失败返回1
{
  uchar ii=9;
  if(Ds18b20_Init())return 1;
  Delay_us(1);
  Ds18b20_WriteByte(SkipRom);
  Delay_us(1);
  Ds18b20_WriteByte(ReadScr);
  Delay_us(1);
  while(i--)
  {
    *p_readdata=Di18b20_ReadByte();
    p_readdata++;
  }
  return 0;
}












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -