clock.c

来自「基于51的数字时钟程序,能够显示小时,分钟.可以进行时时修改」· C语言 代码 · 共 125 行

C
125
字号
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code dispcode[]={0x3f,0x06,0x5b,0x4f, 
                       0x66,0x6d,0x7d,0x07, 
                       0x7f,0x6f,0x77,0x7c, 
                       0x39,0x5e,0x79,0x71,0x00}; 
uchar dispbitcode[]={0x01,0x02,0x04,0x08,0x10,0x20}; 
uchar dispbuf[]={1,2,0,0,0,0}; 
uchar dispbitcnt,second,minute,hour,mstcnt; 
uint tcnt; 
sbit K1=P3^2; 
sbit K2=P3^3;
sbit K3=P3^4;
uchar i,j;
void delay (uint );
void main(void) 
{ 
	TMOD=0x02; 
	TH0=0x06; 
	TL0=0x06; 
	TR0=1; 
	ET0=1; 
	EA=1; 
	hour=12;
  while(1) 
    {
			if(K1==0)
				{
					delay(1);
				
					if(K1==0)
						{
							
							second++;
							if(second==60)
									second=0;
							dispbuf[5]=second%10;
							dispbuf[4]=second/10;
							while(K1==0);
						}
				}
			
			if(K2==0)
				{
					delay(1);
				
					if(K2==0)
						{
							
							minute++;
							if(minute==60)
									minute=0;
							dispbuf[3]=minute%10; 
      					dispbuf[2]=minute/10;
							while(K2==0);
						}

				}

			if(K3==0)
				{
				delay(1);
			
					if(K3==0)
						{
							
							hour++;
							if(hour==24)
									hour=0;
						 dispbuf[1]=hour%10; 
     					 dispbuf[0]=hour/10;
							while(K3==0);
						}

				}
	 }
} 
void t0(void) interrupt 1  
{ 
  mstcnt++; 
  if(mstcnt==8) 
    { 
      mstcnt=0; 
      P0=dispcode[dispbuf[dispbitcnt]]; 
      P2=dispbitcode[dispbitcnt]; 
      dispbitcnt++; 
      if(dispbitcnt==6) 
        { 
          dispbitcnt=0; 
        } 
    } 
  tcnt++; 
  if(tcnt==4000) 
    { 
      tcnt=0; 
      second++; 
      if(second==60) 
        { 
          second=0; 
          minute++; 
          if(minute==60) 
            { 
              minute=0; 
              hour++; 
              if(hour==24) 
                { 
                  hour=0; 
                } 
            } 
        } 
      dispbuf[5]=second%10; 
      dispbuf[4]=second/10; 
      dispbuf[3]=minute%10; 
      dispbuf[2]=minute/10; 
      dispbuf[1]=hour%10; 
      dispbuf[0]=hour/10; 
    } 
}void delay (uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

⌨️ 快捷键说明

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