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

📄 数码时钟显示.c

📁 用C语言编写的电子时钟程序
💻 C
字号:
//采用8位LED软件译码动态显示,P0为字段码,P2为位选码,数码管共阳;
//key0为位选键;key1为加“1键;key2为减“1”键。

#include "reg51.h"
#define char unsigned char 
char code 
dis_7[12]={0xc0,0xf9,0xa4,0xb0,	// 0, 1, 2, 3
				0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//4,5,6,7,8,9,"灭”和“-”
char code scan_con[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位的选择
char _data_dis[8]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};//显示缓冲区,时,分和秒初始为0,0x0b为“-”的编码
char data timedata[3]={0x00,0x00,0x00};
char data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^4;
sbit key1=P1^5;
sbit key2=P1^6;
//1ms延时
delay1ms(int t)
{ int i,j;
  for(i=0;i<t;i++)
    for(j=0;j<120;j++);
 }
void deep()  //当有效按键被按下时,蜂鸣器响;
{  int i;
   for(i=.0;i<10;i++)
   {P3_7=0;
   delay1ms(1);
   P3_7=1;
   }
}
 //按键处理
keycan()
 {  EA=0;
    if(key0==0)
	   { delay1ms(10);deep();
	     while(key0==0);
		  con++;TR0=0;ET0=0;
		  if(con>=3)
		    { con=0;TR0=1;ET0=1;}
		}
		 if(con!=0)
		   { if(key1==0)
		      { delay1ms(10);deep();
			     while(key1==0);
				 timedata[con]++;
				 if(con==2) con1=24;else con1=60;
				   if(timedata[con]>=con1)
				     { timedata[con]=0;}
			   }
		 }
		  if(con!=0)
		    { if(key2==0)
			    {delay1ms(10);deep();
				  while(key2==0);
				    timedata[con]--;
					if(con==2) con2=23;else con2=59;
					  if(timedata[con]<=0)
					    { timedata[con]=con2;}
						}
					   }
					    EA=1;
					 }
//数码管显示
 scan()
 { char k;
    _data_dis[0]=timedata[0]%10; _data_dis[1]=timedata[0]/10;
    _data_dis[3]=timedata[1]%10; _data_dis[4]=timedata[1]/10;
    _data_dis[6]=timedata[2]%10; _data_dis[7]=timedata[2]/10;
   for(k=0;k<8;k++)
    { P0=dis_7[ _data_dis[k]];P2=scan_con[k];delay1ms(1);P2=0xff;}

}
//主函数
main()
 { TH0=0x3c;TL0=0xb0;
   TMOD=0x01;ET0=1;TR0=1;EA=1;
    while(1)
	  { scan();
	   keycan();
	  }
}
//定时器/记数器T0中断服务
 void time_intt0(void)interrupt 1
 { ET0=0;TR0=0;TH0=0x3c;TL0=0xb0;TR0=1;
   ms50++;
   if(ms50==20)
   { ms50=0x00;timedata[0]++;
     if(timedata[0]==60)
	   { timedata[0]=0;timedata[1]++;
	     if(timedata[2]==24)
		   {timedata[2]=0;
		   }
	   }
	} ET0=1;
  }

⌨️ 快捷键说明

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