您当前的位置:五五电子网电子知识单片机-工控设备51单片机数字温度计程序 正文
数字温度计程序

数字温度计程序

点击数:7633 次   录入时间:03-04 11:42:55   整理:http://www.55dianzi.com   51单片机
     if(minset>60)
       minset=0;
     min=minset;
     }
     break;
   case 5:
   case 6:
   case 7:
     if(stop)
     {     
      minset-=step[key-5];
     if(minset>60)
       minset=0;
     min=minset;
     }
     break;
   case 9:
   case 10:
   case 11:
      posset+=step[key-9];
     break;
   case 13:
   case 14:
   case 15:
      posset-=step[key-13];
     break;
   default:
     break;
  }
  TR0=!stop;
  KeyboardDelay();
  P1=0xF0;
  EA=1;
}

Timer0_process() interrupt 1 using 0
{
  EA=0;
  TR0=0;
  TL0=0x00;
  TH0=0x4C;
  count++;
  if(count==20)                        //如果到累计定时到达1s
  {
   if(sec==0)                            //定时处理
   {
     if(min==0)                        //总定时到,则置结束标志
       timeover=1;
     else
     {
      min--;
      sec=59;
     }  
   }
   else
     sec--;
   count=0;
  }  
  TR0=1;
  EA=1;
}
/*--------------------------------------LCD驱动子程序--------------------------------------------------*/
void DelayL()                              
{unsigned char i,j;
 i=0xF0;
 j=0xFF;
 while(i--)
  while(j--);
}

void DelayS()                             
{
 unsigned char i;
 i=0x1F;
 while(i--);
}

void WriteCommand(unsigned char c)       
{
 DelayS();
 EN=0;
 RS=0;
 RW=0;
 _nop_();
 EN=1; 
 P0=c;
 EN=0;
}

void WriteData(unsigned char c)          
{
 DelayS();
 EN=0;
 RS=1;
 RW=0;
 _nop_();
 EN=1; 
 P0=c;
 EN=0;
 RS=0;
}

void ShowChar(unsigned char pos,unsigned char c) 
{
 unsigned char p;
 if(pos>=0x10)
    p=pos+0xB0;
 else
    p=pos+0x80;
 WriteCommand(p);
 WriteData(c);
}

void ShowString(unsigned char line,char *ptr)    
{
 unsigned char l,i;
 l=line<<4;
 for(i=0;i<16;i++)
   ShowChar(l++,*(ptr+i));
}     

void InitLcd()
{
 DelayL();
 WriteCommand(0x38);
 WriteCommand(0x38);
 WriteCommand(0x06);
 WriteCommand(0x0C);
 WriteCommand(0x01);
 WriteCommand(0x80);
}     
/*---------------------------------------------键盘子程序-------------------------------------------------*/
unsigned char GetKey()
{
  unsigned k,t,i,j;
  k=P1;
  k=k&0xF0;
  i=0;
  while((k&0x10)&&i<4)
  {
    i++;
    k=k>>1;
  }   
  k=0x01;
  j=0;
  while(j<4)           
  {
    P1=0xFF^k;
    _nop_();
    t=P1;
    t=t^0xFF;
    t=t&0xF0;
    if(t)
      break;
    j++;
    k=k<<1;
  }
  k=j*4+i;
  return k;
}
/*-----------------------------------------数字温度计驱动子程序--------------------------------------*/
void  ChangePos(bit sel,unsigned char pos1,unsigned char pos2)
{  unsigned char i;
     RST=0;
     DQ=0;
     CLK=0;
     RST=1;
     DQ=sel;
     _nop_();
     CLK=1;
     _nop_();
     CLK=0;
     for(i=0;i<8;i++)
     {
     if(pos1&0x80)
       DQ=1;
     else
       DQ=0;
     _nop_();
     CLK=1;
     _nop_();
     CLK=0;
     pos1=pos1<<1;
    }
    for(i=0;i<8;i++)
    {
     if(pos2&0x80)
       DQ=1;
     else
       DQ=0;
     _nop_();
     CLK=1;
     _nop_();
     CLK=0;
     pos2=pos2<<1;
    }
    RST=0;
}

/*------------------------------------------温度传感器子程序-------------------------------------------*/
void Delay100ms()                       //延时100ms

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


本文关键字:程序  数字温度计  51单片机单片机-工控设备 - 51单片机