您当前的位置:五五电子网电子知识单片机-工控设备51单片机存储器功能的数字温度计-DS1624技术应用与原理分析 正文
存储器功能的数字温度计-DS1624技术应用与原理分析

存储器功能的数字温度计-DS1624技术应用与原理分析

点击数:7888 次   录入时间:03-04 11:36:41   整理:http://www.55dianzi.com   51单片机
    }
    else
      {
        i_stop();
        delay();
        return(0);
      }
}
bit read_temperature_T(unsigned char *p)
{
  i_start();
  if(i_send(0x90))
    {
      if(i_send(0xaa))
        {
          i_start();
          if(i_send(0x91))
            {
              *(p+1)=i_receive();
              i_ack();
              *p=i_receive();
              i_stop();
              delay();
              return(1);
            }
            else
              {
                i_stop();
                delay();
                return(0);
              }
        }
        else
          {
            i_stop();
            delay();
            return(0);
          }
    }
    else
      {
        i_stop();
        delay();
        return(0);
      }
}
void main(void)
{
  P1=0xff;
  timecount=0;
  displaycount=0; 
  TMOD=0x21;
  TH1=0x06;
  TL1=0x06;
  TR1=1;
  ET1=1;
  ET0=1;
  EA=1;
  if(start_temperature_T())                    //向DS1624发送启动A/D温度转换命令,成功则启动T0定时1s。
    {
      secondflag=0;
      secondcount=0;
      TH0=55536/256;
      TL0=55536%6;
      TR0=1;     
    }
  while(1)
    {
      if(secondflag==1)
        {
          secondflag=0;
          TR0=0;
          if(read_temperature_T(temperdata))      //T0定时1s时间到,读取DS1624的温度值
            {
              for(x=0;x<8;x++)
                {
                  displaybuffer[x]=16;
                }
              x=2;
              result=temperdata[1];                     //将读取的温度值进行数据处理,并送到显示缓冲区
              while(result/10)
                {
                  displaybuffer[x]=result;
                  result=result/10;
                  x++;
                }
              displaybuffer[x]=result;
              result=temperdata[0];
              result=result>>3;
              displaybuffer[0]=(dotcode[result]);
              displaybuffer[1]=(dotcode[result])/10;             
              if(start_temperature_T())      //温度值数据处理完毕,重新启动DS1624开始温度转换
                {
                  secondflag=0;
                  secondcount=0;
                  TH0=55536/256;
                  TL0=55536%6;
                  TR0=1;                       
                }
            }
        }
    }
}
void t0(void) interrupt 1 using 0                       //T0用于定时1s时间到
{
  secondcount++;
  if(secondcount==100)
    {
      secondcount=0;
      secondflag=1;
    }
  TH0=55536/256;
  TL0=55536%6;
}
void t1(void) interrupt 3 using 0                       //T1定时1ms用数码管的动态刷新

上一页  [1] [2] [3] [4]  下一页


本文关键字:技术  存储器  数字温度计  51单片机单片机-工控设备 - 51单片机