第四届蓝桥杯单片机类代码

//驱动自己加
 
#include<ad.h>
#define u8 unsigned char
#define u16 unsigned int
u8 yi,er,san,si,wu,liu,qi,ba;
u16 code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0X40,0xbf};
u16 shijian;
u8 dengliang,jidianqikai;
u16 chushuiliang;
void Delay1ms()  //@11.0592MHz
{
 unsigned char i, j;
 _nop_();
 _nop_();
 _nop_();
 i = 11;
 j = 190;
 do
 {
  while (--j);
 } while (--i);
}
void allinit()
{
  P2=0x80;
 P0=0xff;
 P2=0xa0;
 P0=0x00;
}
void display()
{
  P2=0xc0;
 P0=0x01;
 P2=0xff;
 P0=~duan[yi];
 Delay1ms() ;
 
 P2=0xc0;
 P0=0x02;
 P2=0xff;
 P0=~duan[er];
 Delay1ms() ;
 
 P2=0xc0;
 P0=0x04;
 P2=0xff;
 P0=~duan[san];
 Delay1ms() ;
 
 P2=0xc0;
 P0=0x08;
 P2=0xff;
 P0=~duan[si];
 Delay1ms() ;
 
 P2=0xc0;
 P0=0x10;
 P2=0xff;
 P0=~duan[wu];
 Delay1ms() ;
 
 if(jidianqikai==1)
 {
 P2=0xc0;
 P0=0x20;
 P2=0xff;
 P0=~duan[liu];
 Delay1ms() ;
 }
 else if(jidianqikai==0)
 {
 P2=0xc0;
 P0=0x20;
 P2=0xff;
 P0=~(duan[liu]|0x80);
 Delay1ms() ;
 }
 P2=0xc0;
 P0=0x40;
 P2=0xff;
 P0=~duan[qi];
 Delay1ms() ;
  
 
 P2=0xc0;
 P0=0x80;
 P2=0xff;
 P0=~duan[ba];
 Delay1ms() ;
 
 
}
void anjian()
{
  u8 dat=0;
 if(P30==0)
 {
   Delay1ms() ;
  if(P30==0)
  {
     dat=1;
   while(P30==0);
  }
 }
 
 if(P31==0)
 {
   Delay1ms() ;
  if(P31==0)
  {
     dat=2;
   while(P31==0);
  }
 }
 
 if(P32==0)
 {
   Delay1ms() ;
  if(P32==0)
  {
     dat=3;
   while(P32==0);
  }
 }
 
 if(P33==0)
 {
   Delay1ms() ;
  if(P33==0)
  {
     dat=4;
   while(P33==0);
  }
 }
 if(dat==1&&jidianqikai==0)
 {
    shijian=0;
  chushuiliang=0;
 }
 if(dat==1)
 { 
  
  TR0=1;
   jidianqikai=1;
 }
 
 if(dat==2)
 {
  
   jidianqikai=0;
 }
}
u8 re()
{
 u8 dat;
  IIC_Start();
 IIC_SendByte(0x90);
  IIC_WaitAck();
 IIC_SendByte(0x01);
  IIC_WaitAck();
 IIC_Stop();
   IIC_Start();
 IIC_SendByte(0x91);
  IIC_WaitAck();
dat=IIC_RecByte();
 IIC_WaitAck();
 IIC_Stop();
 return dat;
}
void guangmindianzu()
{
 u8 dat;
 dat=re();
 if(dat<64)
 {
   P2=0x80;
  P0=0x7f;
  P2=0x00;
 }
 else  if(dat>=64)
 {
   P2=0x80;
  P0=0xff;
  P2=0x00;
 }
  
  
}
void liushui()
{
  yi=16;
 er=18;
 san=5;
 si=0;
 wu=chushuiliang/100;
 liu=chushuiliang%100/10;
 qi=chushuiliang%10;
 ba=0;
 
}
void feiyong()
{
    yi=16;
 er=18;
 san=5;
 si=0;
 wu=5*chushuiliang/1000;
 liu=5*chushuiliang%1000/100;
 qi=5*chushuiliang%100/10;
 ba=5*chushuiliang%10;
}
void Timer0Init(void)  //[email protected]
{
 AUXR |= 0x80;  //?????1T??
 TMOD &= 0xF0;  //???????
 TL0 = 0xCD;  //??????
 TH0 = 0xD4;  //??????
 TF0 = 0;  //??TF0??
 TR0 = 0;
ET0=1;
EA=1;
 //???0????
}

void main()
{
 Timer0Init();
  allinit();
 while(1)
 {
  guangmindianzu();
   if(jidianqikai==1)
  {
    
    P2=0xa0;
   P0=0x10;
   P2=0x00;
   liushui();
  }
  else if(jidianqikai==0)
  {
   TR0=0;
    P2=0xa0;
   P0=0x00;
   P2=0x00;
   feiyong();
  }
  display();
  anjian();
 }
}
void ding0()interrupt 1
{
   TL0 = 0xCD;  //??????
 TH0 = 0xD4; 
 shijian++;
 if(shijian==1000)
 {
   shijian=0;
  chushuiliang+=1;
 }
 if(chushuiliang>999)
 {
   jidianqikai=0;
 }
}

猜你喜欢

转载自www.cnblogs.com/a1113775906/p/12121614.html