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

📄 电子时钟.c

📁 这是一个电子时钟程序,里面有显示时间子程序,还有调整,键盘等子程序!
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar code TAB[]={0x77,0x42,0x3b,0x6b,0x4e,0x6d,0x7d,0x47,0x7f,0x6f}; //字码表
sbit com1= P1^7;  //数码管公共端1
sbit com2= P1^6;  //数码管公共端2 
uchar DATA=0xef;//键值,一开始就显示秒
uchar tim=0;//中断次数计数器
uchar t=2;
uchar time[3];//时,分,秒缓冲区
/***************键盘扫描程序**************/
void key(void)
  { P2=0Xff;
     if((P2&&0xff)!=0xff)   //有键按下
	     {uchar i;
		    for(i=0;i<255;i++){;;} //延时
			if((P2&&0xff)!=0xff)
              DATA=P2;
			}
	  }
/*************查表程序**************/
uchar ctab(uchar c)
  {return TAB[c];}

/**************显示程序*************/
void dis(uchar i)
  { uint j;
    uint a;
	a=(time[i]);
	P0=~ctab(a/10); //查表,送显 十位 
	   com1=1;
       com2=0;
      for(j=0;j<250;j++){;;}
       P0=~ctab(a%10);//查表,送显 个位
       com1=0;
       com2=1;
   }
/****************键值处理***************/
void pros(void)
  { switch(DATA)
      {case 0xfe://键1
	         t=0;break;            
        case 0xfb://键2
		      t=1;break;
	     case 0xef://键3
		       t=2;;break;
		  case 0xbf://键4
		        ;break;
		   case 0xfd://键5
		        /* {if((DATA!=0xfe)&&(DATA!=0xfb)&&(DATA!=0xef))
				    {  key();
					   dis(t);
					if(DATA==0xfd){if(DATA!=0xfd)
					                {if(t!=2){t++;}
					                 t=0;}
									 key();
									  dis(t);
									  }
                     if(DATA==0xbf){if(DATA!=0xbf)
					               {(time[t])++;}
								     key();
								      dis(t);
									  }
                     if(DATA==0x7f){if(DATA!=0x7f)
					               {(time[t])++;}
                                     key();
									dis(t);
									} 
                        }
				 } */
   				 break;
            case 0xf7://键6
			      ;break;
		     case 0xdf://键7
			       ;break;
			  case 0x7f://键8
			        ;break;
		default:break;
	  }
 }

/****************中断***************/
void timer() interrupt 1 using 1  //50ms来一次中断
{TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
   tim++;
     if(tim==20)
	    {tim=0;
		 (time[2])++;
		 if((time[2])==60)
		    {(time[2])=0;
			 (time[1])++;
             if((time[1])==60)
		        {(time[1])=0;
			     (time[0])++;
                 if((time[0])==24)
		            {(time[2])=0;
			      }
              }
          }
      }
  }
 
/*****************主程序****************/ 
void main()
 { P1=0x00;
   TMOD=0x01;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   EA=1;
   ET0=1;
   TR0=1;
   while(1)
      {key();
       pros();
	   dis(t);
		}
	}

⌨️ 快捷键说明

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