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

📄 -

📁 51最小系统版实验程序
💻
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar led[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar a[4];
sbit sm1=P2^7;
sbit sm2=P2^6;
sbit sm3=P2^5;
sbit sm4=P2^4;
sbit beep=P2^0;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
uchar hour=0,minute=0,second=0;
uchar hour1=0,minute1=0,miao=0,jishi=0,biao=0,sec=0,stop=0;
uint temp,q,b,c,d;
uchar M,S_flag;
uchar k=0,s=0;

void delay(uint n)	   //延时0.2毫秒
{
 int x,y;
 for(x=0;x<n;x++)
 for(y=0;y<24;y++);
} 

void init()
{
 M=0;
 S_flag=0;
 TMOD=0x01;
 TH0=(65536-5000)/256;
 TL0=(65536-5000)%256;
 EA=1;
 ET0=1;
 TR0=1;
 beep=0;
}

void time0() interrupt 1
{  TH0=(65536-5000)/256;
 TL0=(65536-5000)%256;
  temp++;
  if(temp==200)
  {
   temp=0;
   second++;   
  }
  if(second==59)
  {
   second=0;
   if(minute<59)
     minute++;
	 else{ minute=0;
	       hour++;
		   hour%=24;}
	}
   
   if((minute1==minute)&&(second<10))   
  beep=!beep; 
  if(stop==1) beep=0;
  if(second>=10) beep=0;
  if(temp%20==0)
   S_flag=!S_flag;
  /* if(k==4) k=0;
   P0=a[k++];*/
   if(jishi==2)
   {	sm1=0;
	P0=led[q];
	delay(5);
	sm1=1;
	sm2=0;
	P0=led[b];
	delay(5);
	sm2=1;
	sm3=0;
	P0=led[c];
	delay(5);
	sm3=1;
	sm4=0;
	P0=led[d];
	delay(5);
	sm4=1;
	
   }
   else
  {if(jishi==1)
  {	biao++;
    if(biao>99)
	{biao=0;
	sec++;
	}
	if(sec>59) sec=0;
	q=sec/10;
	b=sec%10;
	c=biao/10;
	d=biao%10;
	sm1=0;
	P0=led[q];
	delay(5);
	sm1=1;
	sm2=0;
	P0=led[b];
	delay(5);
	sm2=1;
	sm3=0;
	P0=led[c];
	delay(5);
	sm3=1;
	sm4=0;
	P0=led[d];
	delay(5);
	sm4=1;
  }
  else{	biao=0;
     sec=0;

   if(s==4) s=0;
   if(miao==1)
   {
    sm3=1;  
    sm4=1;  
   	sm1=0;
	P0=a[4];
	 delay(10);
	sm1=1;	
	sm2=0;
	P0=a[5];
	delay(10);
	sm2=1;

   }
   else
   {if(s==0)
   { 	
	P0=a[0];
	sm1=0;
	delay(5);
	sm1=1;
   }
    if(s==1)
   {
   	sm2=0;
	P0=a[1];
	delay(5);
	sm2=1;
   }
    if(s==2)
   {
   	sm3=0;
	P0=a[2];
	delay(5);
	sm3=1;
   }
    if(s==3)
   {
   	sm4=0;
	P0=a[3];
	delay(5);
	sm4=1;
   }
   s++;}
  }
  }	}
 void display()
 { switch(M)
  {	case 0:
   { a[0]=led[hour/10];
     a[1]=led[hour%10];
	 a[2]=led[minute/10];
	 a[3]=led[minute%10];
	 a[4]=led[second/10];
	 a[5]=led[second%10];
   }break;
   	case 1:
   { if(S_flag==1)
     {a[0]=led[hour/10];
     a[1]=led[hour%10];}
	 else{a[0]=led[10];
	      a[1]=led[10];}
	 a[2]=led[minute/10];
	 a[3]=led[minute%10];
	 a[4]=led[second/10];
	 a[5]=led[second%10];
   }break;
   	case 2:
   { 
     a[0]=led[hour/10];
     a[1]=led[hour%10];	
	if(S_flag==1)
	 {a[2]=led[minute/10];
	 a[3]=led[minute%10];}
	  else{a[2]=led[10];
	      a[3]=led[10];}
	 a[4]=led[second/10];
	 a[5]=led[second%10];
   }break;
   case 3:
   { if(S_flag==1)
     {a[0]=led[hour1/10];
     a[1]=led[hour1%10];}
	 else{a[0]=led[10];
	      a[1]=led[10];}
	 a[2]=led[minute1/10];
	 a[3]=led[minute1%10];
	 a[4]=led[second/10];
	 a[5]=led[second%10];
   }break;
   	case 4:
   { 
     a[0]=led[hour1/10];
     a[1]=led[hour1%10];	
	if(S_flag==1)
	 {a[2]=led[minute1/10];
	 a[3]=led[minute1%10];}
	  else{a[2]=led[10];
	      a[3]=led[10];}
	 a[4]=led[second/10];
	 a[5]=led[second%10];
   }break;    
 }
}

void key_prc()
{if(key1==0)
 {delay(10);
  if(key1==0)
  {M++;
   if(M==5)
   M=0;}
   while(!key1);
   }
if(M==0&&key2==0)
{delay(10);
 if(key2==0)
 {miao++;
  if(miao==2)
  miao=0; }
  while(!key2);
}
if(M==0&&key3==0)
{delay(10);
 if(key3==0)
 {jishi++;
  if(jishi==3)
  jishi=0; }
  while(!key3);
}
if(M==0&&key4==0)
{delay(10);
 if(key4==0)
 {stop++;
  if(stop==2)
  stop=0; }
  while(!key4);
}
 if(M!=0)
 { switch(M)
   {case 1:
    {if(key3==0)
	  {delay(10);
	   if(key3==0)
	   {if(hour<23) hour++;
	   	else hour=0;
	   }
	   while(!key3);
	  }
	  if(key4==0)
	  {delay(10);
	   if(key4==0)
	   {if(hour>0) hour--;
	   	else hour=23;
	   }
	   while(!key4);
	  }
	}break;
	case 2:
    {if(key3==0)
	  {delay(10);
	   if(key3==0)
	   {if(minute<59) minute++;
	   	else minute=0;
	   }
	   while(!key3);
	  }
	  if(key4==0)
	  {delay(10);
	   if(key4==0)
	   {if(minute>0) minute--;
	   	else minute=59;
	   }
	   while(!key4);
	  }
	}break;

	case 3:
    {if(key3==0)
	  {delay(10);
	   if(key3==0)
	   {if(hour1<23) hour1++;
	   	else hour1=0;
	   }
	   while(!key3);
	  }
	  if(key4==0)
	  {delay(10);
	   if(key4==0)
	   {if(hour1>0) hour1--;
	   	else hour1=23;
	   }
	   while(!key4);
	  }
	}break;

		case 4:
    {if(key3==0)
	  {delay(10);
	   if(key3==0)
	   {if(minute1<59) minute1++;
	   	else minute1=0;
	   }
	   while(!key3);
	  }
	  if(key4==0)
	  {delay(10);
	   if(key4==0)
	   {if(minute1>0) minute1--;
	   	else minute1=59;
	   }
	   while(!key4);
	  }
	}break;
   }
 
 }

}

void main()
{ init();
while(1)
{key_prc();
display();
}

}

⌨️ 快捷键说明

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