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

📄 数字时钟.c

📁 本系统采用51单片机
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit key2=P3^5;
sbit key3=P3^6;
sbit LED=P1^7;
uchar code display[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar code saomiao[4]={0xfe,0xfd,0xfb,0xf7};
uchar clock[4]={0x00,0x00,0x00,0x00};
uchar dingshi[4]={0x00,0x00,0x00,0x00};
uchar second1=0,minute1=0,a=0,b=0,flag=0;
delay1ms(uint t)
{
uchar i,j;
 for(i=0;i<t;i++)
    for(j=0;j<120;j++);
}
void timer0(void) interrupt 1 
{    
	 a=a+1;b=b+1;
     if(a==100)   
	 {	second1++;
        if(second1==60) 
		{  minute1++;
           if(minute1==60)   minute1=0;second1=0;
		}
	    a=0;
	 }
     clock[0]=second1%10; 
     clock[1]=second1/10;
     clock[2]=minute1%10;
     clock[3]=minute1/10;
	 
	 TH0=0XD8;
         TL0=0XF0;
         TF0=0;     
}   
                          
void timer1(void) interrupt 3
{	uchar paomiao[4]={0x00,0x00,0x00,0x00};uchar m,n,second2;
	while(key2==0);
    b=0;second2=0; 
    while(1)  
	{	for(m=0;m<=3;m++)
        {	P1=display[0];
            P3=saomiao[m];
  			if(m==2)   LED=1;  
	        delay1ms(1);
            P3=0xff;
		}  
		if(key3==0)   break;
	}
    while(key3==0);
	while(1)
	{   
    	if(b==100)
		{	second2++; 
			if(second2==60)  second2=0;
			b=0;
		}
    	paomiao[0]=b%10;
		paomiao[1]=b/10;
		paomiao[2]=second2%10;
		paomiao[3]=second2/10;
		for(n=0;n<=3;n++)
		{	P1=display[paomiao[n]];
  			P3=saomiao[n];
			if(n==2)   LED=1;
			delay1ms(1);
			P3=0xff;
		}
		if(key3==0) 
		{	while(key3==0);break;}
	}
	while(1)
	{	for(m=0;m<=3;m++)
   	   	{	P1=display[paomiao[m]];
  		 	P3=saomiao[m];
            if(m==2)   LED=1;
			delay1ms(1);
		  	P3=0xff;
	 	}
		if(key2==0)  break;
	}
	
    while(key2==0);
	while(1)
{	while(key2!=0) 
	{	P3=saomiao[3];
		P1=display[clock[3]];
		if(key3==0)
		minute1=(clock[3]+1)*10;
		while(key3==0);
        if(clock[3]==6)
  			clock[3]=0;
		P3=0xff;
	}
	while(key2==0);
	while(key2!=0)

	{	P3=saomiao[2];
		P1=display[clock[2]];
       	LED=1;
		if(key3==0)
			minute1++;
		while(key3==0);
		if(clock[2]==10)
  			clock[2]=0;	
	   		P3=0xff;
           
	}

        
	 	while(key2==0);
		while(key2!=0)
	  {	   P3=saomiao[1];
		   P1=display[clock[1]];
			LED=1;
		if(key3==0) 
			second1=(clock[1]+1)*10;
	    while(key3==0);
        if(clock[1]==6)
  			clock[1]=0;
			P3=0xff;
					   
			
			    
     }         	
		
		 while(key2==0);
		 while(key2!=0)
	 {	    P3=saomiao[0];
			P1=display[clock[0]];
			LED=1;
			if(key3==0) 
				second1++;
			while(key3==0);
			if(clock[0]==10)
  				clock[0]=0;
				P3=0xff;		
			
	}
	       
       if(key2==0)
		{	while(key2==0);break;}
 }      
 		while(key2==0);
	    while(key2!=0)
	 	{    P3=saomiao[3];
			 P1=display[dingshi[3]];
			 if(key3==0)
			    {dingshi[3]++;flag=1;}
			 while(key3==0);
			if(dingshi[3]==6)
				dingshi[3]=0;
				P3=0xff;
	    }     
		

     while(key2==0);
	 while(key2!=0)
	    {      
	 		 P3=saomiao[2];
		     P1=display[dingshi[2]];
             if(key3==0)
			  {  dingshi[2]++; flag=1;}
             while(key3==0);
			 if(dingshi[2]==10)
				dingshi[2]=0;
				P3=0xff;
		  }
      while(key2==0);
	  while(key2!=0)
	     {   P3=saomiao[1];
		     P1=display[dingshi[1]];
             if(key3==0)
			   { dingshi[1]++;flag=1;}
             while(key3==0);
			 if(dingshi[1]==6)
				dingshi[1]=0;
				P3=0xff;
		 }
       	while(key2==0);
	  	while(key2!=0)
	     {   P3=saomiao[0];
		     P1=display[dingshi[0]];
             if(key3==0)
			    {dingshi[0]++;flag=1;}
             while(key3==0);
			 if(dingshi[0]==10)
				dingshi[0]=0;
				P3=0xff;

         }
		  while(key2==0);
			TH1=0xff;
 			TL1=0xff;
   		    TF1=0;

			    
}             
                

                  
                                     		
void main()
{ 	uchar i,k;
 	TMOD=0x51;
 	TH0=0xD8;
 	TL0=0xF0;
 	TH1=0xff;
 	TL1=0xff;
 	EA=1;
 	ET0=1;
        ET1=1;
 	TR0=1;
        TR1=1;
	IP=0x02;

	while(1)
	{	for(i=0;i<=3;i++)
 		{ 	P1=display[clock[i]];
  			if(i==2)  {LED=1;}
  			P3=saomiao[i];delay1ms(1);P3=0xff;
 		}
	if(flag==1&&clock[0]==dingshi[0]&&clock[1]==dingshi[1]&&clock[2]==dingshi[2]&&clock[3]==dingshi[3])
	 while(1)
	  {for(k=0;k<=3;k++)
	 {P1=display[clock[k]];
	  if(k==2)  LED=!LED;
	  P3=saomiao[k];
	  delay1ms(100);
	  P3=0xff;}
	   if(key3==0)
	   {while(key3==0); flag=0; break;}
	 }   
		
  }
} 

⌨️ 快捷键说明

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