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

📄 clock.c

📁 单片机时钟程序,可分别设置小时分钟秒 没有断电自动重装功能
💻 C
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
  
uchar code xuanduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int num50ms,seconds,minutes,hours,secondsge,secondsshi,minutesge,minutesshi,hoursge,hoursshi;
 sbit key1=P3^3;   /* 暂停或中断计时*/
 sbit key2=P3^2;   /*小时设置*/
 sbit key3=P3^5;   /*分钟设置*/
 sbit key4=P3^4;   /*秒设置*/
void display1(int);
void display2(int);
void display3(int);
void key1set();
void key2set();
void key3set();
void key4set();
void delay(int)	;
void main()
{     
     TMOD=0x01;
     TL0=(65536-50000)%256;
     TH0=(65536-50000)/256;
     EA=1;
     ET0=1;
     TR0=1;
		seconds=55;	 
		minutes=58;	 /*时间初始设置*/
		hours=19 ;
	 while(1)
	 {	
	 	P0=0x40;
	    P2=0xfb;
	     delay(5);
	    P0=0x40;
	    P2=0xdf;
	      delay(5);
		key1set();
		key2set();
		key3set();
		key4set();
	    display1( seconds) ;
	    display2( minutes) ;
		display3( hours ) ;  
	 }
	 
}
  void T0_time() interrupt 1
  {	TL0=(65536-50000)%256;
    TH0=(65536-50000)/256;
	num50ms++;
	if(num50ms==20)
	{  num50ms=0;
	   seconds++;
	   if(seconds==60)
	   {  seconds=0;
	      minutes++;
		  if(minutes==60)
		  {  minutes=0;
		     hours++;
		   }
		}
	}
    
	
  }
  void key1set()
  {  if(key1==0)
	 {   delay(10);
	     if(key1==0)
		 { while(!key1);
		   TR0=~TR0;
		 }
	  }
  }
   	  
  void key2set()	  
  {	  if(key2==0)
	  {	 delay(10);
	     if(key2==0)
		 {  hours++;
		    if(hours==24)
			  { hours=0;
			    display3(hours);
				}
			while(!key2); 
		  }
	   }
   }
   void key3set()
   {   if(key3==0)
	   {   delay(10);
	       if(key3==0)
		   {  minutes++;
		      if(minutes==60)
			  {	 hours++;
			     minutes=0;
				 display2(minutes);
			   }
			  while(!key3);
		    }
	    }
	}
   void key4set()
   {   if(key4==0)
		{  	delay(10);
		    if(key4==0)
			{  seconds++;
			   if(seconds==60)
			   {  seconds=0;
			      minutes++;
				  display1(seconds);
			    }
				while(!key4);
			}
		 }
    }
  void display1(int seconds)
  {	 secondsshi=seconds/10;
	 secondsge =seconds%10;
     P0=xuanduan[secondsge];
     P2=0xfe;
	 delay(5);
	 P0=0xf7;
	 P0=xuanduan[secondsshi];
	 P2=0xfd;
	 delay(5);
  }
  void display2(int minutes)
  {	 minutesshi=minutes/10;
 	 minutesge =minutes%10;
     P0=xuanduan[minutesge];
     P2=0xf7;
	 delay(5);
	 P0=xuanduan[minutesshi];
	 P2=0xef;
	 delay(5);
  }
  void display3(int hours)
  {	 hoursshi=hours/10;
	 hoursge=hours%10;
     P0=xuanduan[hoursge];
	 P2=0xbf;
	 delay(5);
     P0=xuanduan[hoursshi];
	 P2=0x7f;
	 delay(5);
  }
  void delay(int x)
  {	uint i,j;
    for(i=x;i>0;i--)
	   for(j=120;j>0;j--);
  }

⌨️ 快捷键说明

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