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

📄 时钟.c

📁 51单片机下
💻 C
字号:
#include <AT89X51.h>

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 
                               0x66,0x6d,0x7d,0x07, 
                               0x7f,0x6f,0x77,0x7c, 
                               0x39,0x5e,0x79,0x71,0x00}; 
                               
unsigned char dispbitcode[]={0x7e,0x7d,0x7b,0x77,0x6f,0x4f};
                              
unsigned char dispbuf[6]={0,0,0,3,1,2}; 
unsigned char dispbitcnt; 
unsigned char second; 
unsigned char minite=30; 
unsigned char hour=21; 
unsigned char mstcnt; 
unsigned char i,j; 
unsigned int tcnt; 

void main(void) 
{ 
  TMOD=0x02; 
  TH0=0x06; 
  TL0=0x06; 
  TR0=1; 
  ET0=1; 
  EA=1; 

  while(1) 
  { 
      if(P1_0==0) 
	{ 
	  for(i=5;i>0;i--) 
	  	for(j=248;j>0;j--); 
	  if(P1_0==0) 
	    { 
	      second++; 
	      if(second==60) 
	        { 
	          second=0; 
	        } 
	      dispbuf[0]=second%10; 
	      dispbuf[1]=second/10; 
	      
	      while(P1_0==0)
	      	; 
	    } 
	} 

      if(P1_1==0) 
        { 
          for(i=5;i>0;i--) 
          	for(j=248;j>0;j--); 
          	
          if(P1_1==0) 
            { 
              minite++; 
              if(minite==60) 
                { 
                  minite=0; 
                } 
              dispbuf[2]=minite%10; 
              dispbuf[3]=minite/10; 
              
              while(P1_1==0)
              	; 
            } 
        } 

      if(P1_2==0) 
        { 
          for(i=5;i>0;i--) 
          	for(j=248;j>0;j--); 
          if(P1_2==0) 
            { 
              hour++; 
              if(hour==24) 
                { 
                  hour=0; 
                } 
              dispbuf[6]=hour%10; 
              dispbuf[7]=hour/10; 
              
              while(P1_2==0)
              	; 
            } 
        } 
    } 
} 

void t0(void) interrupt 1 using 0 
{ 
  mstcnt++; 
  if(mstcnt==6) 
    { 
      mstcnt=0; 
      P0=dispcode[dispbuf[dispbitcnt]]; 
      P2=dispbitcode[dispbitcnt]; 
#if 0
      if(tcnt<2000)
      	P2_6=1;
      else
      	P2_6=0;
#else
      P2_6=1;
#endif
      dispbitcnt++; 
      if(dispbitcnt==6) 
        { 
          dispbitcnt=0; 
        } 
    } 
  tcnt++; 

  if(tcnt==4000) 
    { 
      tcnt=0; 
      second++; 
      if(second==60) 
        { 
          second=0; 
          minite++; 
          if(minite==60) 
            { 
              minite=0; 
              hour++; 

              if(hour==24) 
                { 
                  hour=0; 
                } 
            } 
        } 
      dispbuf[0]=second%10; 
      dispbuf[1]=second/10; 
      dispbuf[2]=minite%10; 
      dispbuf[3]=minite/10; 
      dispbuf[4]=hour%10; 
      dispbuf[5]=hour/10; 
    } 
} 

⌨️ 快捷键说明

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