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

📄 bisai.c

📁 比赛计分器 有比赛定时显示
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,temp1,temp2,temp3,shi,ge,shi1,ge1,shi2,ge2;
uchar zhu,ke,rd,zhu1,ke1,zhu2,ke2,zhu3,ke3;
uchar bb=0;
uchar flag=0;
uchar xdata *PP;
uchar xdata *DD;
uchar xdata *PP1;
uchar xdata *DD1;
  sbit  key1=P1^0;
  sbit  key2=P1^1;
  sbit  key3=P1^2;
  sbit  key4=P1^3;
  sbit  key5=P1^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x00,0X40};
void display(uchar shi,uchar ge,uchar shi1,uchar ge1,uchar shi2,uchar ge2) ;
void delay(uint z);
void init();

void delay(uint z)			  //延时子程序
{
	uint x,y;
	for(x=z;x>0;x--)
	for(y=110;y>0;y--);
}

void 	display(uchar shi,uchar ge,uchar shi1,uchar ge1,uchar shi2,uchar ge2)			 //时钟显示子程序
{		PP=0XC800;
        DD=0XC000;

     	shi=temp1/10;
	    ge=temp1%10;
		*DD=table[10];	
	    *PP=0xfe;
		*DD=table[ge];
		delay(1);
		*DD=table[10];	
	    *PP=0xfD;
		*DD=table[shi];
		delay(1);

		shi1=temp2/10;
	    ge1=temp2%10;
		*DD=table[10];	
	    *PP=0xfb;
		*DD=table[ge1]|0x80;
		delay(1);
		*DD=table[10];
	    *PP=0xf7;
		*DD=table[shi1];
		 delay(1);
      

		shi2=temp3/10;
		ge2=temp3%10;
		*DD=table[10];	
	    *PP=0xef;
		*DD=table[ge2]|0x80;
		delay(1);
		*DD=table[10];			
	    *PP=0xdf;
		*DD=table[shi2];
		delay(1);
			 
}

void display1(uchar ke,uchar zhu,uchar rd)			//比分显示子程序
{	    PP1=0XD800;
        DD1=0XD000;

	    ke3=ke/100;
		ke2=ke%100/10;
	    ke1=ke%10;	
		*DD1=table[10];	
	    *PP1=0xfe;
		*DD1=table[ke1];
		delay(1);
		*DD1=table[10];	
	    *PP1=0xfD;
		*DD1=table[ke2];
		delay(1);
		*DD1=table[10];	
	    *PP1=0xfb;
		*DD1=table[ke3];
		delay(1);

		*DD1=table[10];	
	    *PP1=0xf7;
		*DD1=table[11];
		delay(1);

		zhu3=zhu/100;
		zhu2=zhu%100/10;
		zhu1=zhu%10;
		*DD1=table[10];	
	    *PP1=0xef;
		*DD1=table[zhu1];
		delay(1);
		*DD1=table[10];	
	    *PP1=0xdf;
		*DD1=table[zhu2];
		delay(1);
		*DD1=table[10];	
	    *PP1=0xbf;
		*DD1=table[zhu3];
		delay(1);

		*DD1=table[10];	
	    *PP1=0x7f;
		*DD1=table[rd]|0x80;
		delay(1);
				
}

void init()							 //初始化子程序
{	
    TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	EA=1;
	EX0=1;
	IT0=1;
	ET0=1;
	TR0=0;	
}

void timer0() interrupt 1					//定时器T0
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	aa++;
	  if(flag)	
	 {
			 if(aa==20)
			  {
				aa=0;
				temp1--;	
			  }
			  if(temp2!=0&&temp1==0)
			  {
				temp1=59;
				temp2--;			
			  }
			  if(temp3!=0&&temp2==0)
			  {
				temp2=59;
				temp3--;		
			  }
			  if(temp3==0)
			  {
				temp3=0;		
			  }
			  if(temp2==0&&temp1==0&&temp3==0)
			  {  
			       TR0=0;    
	          }
	 }
		
}

void key() interrupt 0							  //中断扫描键值
{               if(key4==0)
				{	delay(5);
					if(key4==0)
					{
						flag=~flag;
						TR0=flag;
					}
					while(!key4);
					delay(5);
					while(!key4);
				}
					
               delay(5);
			   if(key3==0)
				{
					delay(5);
					if(key3==0)
					{
						bb++;
						if(bb==7)
							bb=1;
					}
					while(!key3);
					delay(5);
					while(!key3);
				}
                
			if(key1==0)
        {           delay(5);
					if(key1==0&&bb==1)
		         {	
			        {
					temp1++;
					if(temp1==60)
					temp1=0;
			        }
					while(!key1)
					delay(5);
					while(!key1);
		         }
					if(key1==0&&bb==2)
		        {
			       {
					temp2++;
					if(temp2==60)
					temp2=0;
			       }
					while(!key1)
					delay(5);
					while(!key1);
		         }

					if(key1==0&&bb==3)
				 {
				 	{
					temp3++;
					if(temp3==24)
					temp3=0;
					}
					while(!key1)
					delay(5);
					while(!key1);
				 }
				 if(key1==0&&bb==4)
				 {
				 	{
					ke++;
					if(ke==150)
					ke=0;
					}
					while(!key1)
					delay(5);
					while(!key1);
				 }
				 if(key1==0&&bb==5)
				 {
				 	{
					zhu++;
					if(zhu==150)
					zhu=0;
					}
					while(!key1)
					delay(5);
					while(!key1);
				 }
				 if(key1==0&&bb==6)
				 {
				 	{
					rd++;
					if(rd==5)
					rd=0;
					}
					while(!key1)
					delay(5);
					while(!key1);
				 }
         }


			 if(key2==0)
		{
				delay(5);					
					if(key2==0&&bb==1)
				{
					{
					if(temp1==0)
					temp1=60;
					temp1--;
					}
					while(!key2)
					delay(5);
					while(!key2);
				}
					if(key2==0&&bb==2)
				{
					{
					if(temp2==0)
					temp2=60;
					temp2--;
					}
					while(!key2)
					delay(5);
					while(!key2);
				}
				
					if(key2==0&&bb==3)
				{
					{
					if(temp3==0)
					temp3=24;
					temp3--;
					}
					while(!key2)
					delay(5);
					while(!key2);
				}
				if(key2==0&&bb==4)
				{
					{
					if(ke==0)
					ke=150;
					ke--;
					}
					while(!key2)
					delay(5);
					while(!key2);
				}
				if(key2==0&&bb==5)
				{
					{
					if(zhu==0)
					zhu=150;
					zhu--;
					}
					while(!key2)
					delay(5);
					while(!key2);
				}

		}     
}

void main()
{	
	init();
	while(1)
	{
	display(shi,ge,shi1,ge1,shi2,ge2);
	delay(1);
	display1(ke,zhu,rd);
	}
}
														   

⌨️ 快捷键说明

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