请你帮个忙,可以把基于DS18B20温度测量系统设计与实现的程序和电路发给我吗?非常感谢你啦

2024-12-24 17:00:23
推荐回答(1个)
回答1:

  这是我曾经做的一个电子时钟上显示温度的程序中DS18B20部分的程序,仅供参考。我的电路非常简单。1820就三个脚,两个电源脚,中间那个脚接单片机的17脚。
  Init_DS18B20(void)//初始化
  {
  unsigned char x=0;
  DQ = 1;
  Tdelay(8);
  DQ = 0;
  Tdelay(80);
  DQ = 1;
  Tdelay(14);
  Tdelay(20);
  }
  //读一个字节
  ReadOneChar(void)
  {
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
  DQ = 0;
  dat>>=1;
  DQ = 1;
  if(DQ)
  dat|=0x80;
  Tdelay(4);
  }
  return(dat);
  }

  //写一个字节
  WriteOneChar(unsigned char dat)
  {
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
  DQ = 0;
  DQ = dat&0x01;
  Tdelay(5);
  DQ = 1;
  dat>>=1;
  }
  }

  //读取温度
  ReadTemperature(void)
  {
  unsigned char a=0;
  unsigned char b=0;
  unsigned int t=0;
  float tt=0;
  Init_DS18B20();
  WriteOneChar(0xCC);
  WriteOneChar(0x44);
  Init_DS18B20();
  WriteOneChar(0xCC);
  WriteOneChar(0xBE);
  a=ReadOneChar();
  b=ReadOneChar();
  t=b;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  t= tt*10+0.5;
  return(t);
  }