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

📄 数字时钟.c

📁 基于c51的数码管数字钟源程序 简单实用
💻 C
字号:
#include <reg52.h>


unsigned char code ledp[4]={0xf1,0xf2,0xf4,0xf8};//{0x1f,0x2f,0x4f,0x8f};//
unsigned char code ledp1[10]={0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
unsigned char code ledp2[10]={0x80,0xf2,0x48,0x60,0x32,0x24,0x04,0xf0,0x00,0x20};
unsigned int A[6]={0,1,2,0,0,0};
unsigned int B1[6]={9,5,9,5,3,2};
unsigned int cc,cmd=2;
bit cond=0,m=0,soundcmd=0;
sbit sound=P2^0;
sbit K2=P3^2;
sbit P10=P1^0;
sbit K3=P3^3;
sbit K4=P3^4;
sbit K5=P3^5;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;

void Add(unsigned int i);


void main(void)
{
	unsigned int n;
	RCAP2H=0xF7;
	RCAP2L=0x00;
	TR2=1;
	ET2=1;
	EA=1;
	sound=1;
//	K0=0;
//	K1=1;
//	K2=1;
	while(1)
	{
		
		
		
		if(!K2)
		{
			for(n=0;n<1000;n++);
			while(!K2);
			cond=~cond;				
			for(n=0;n<1000;n++);
		}
		if(!K5)
		{
			for(n=0;n<1000;n++);
			while(!K5);
			soundcmd=~soundcmd;
			for(n=0;n<1000;n++);

		}		
		if(cond==1)
		{
			if(!K3)
			{
				for(n=0;n<1000;n++);
				while(!K3);
				if(cmd==2)
					cmd=4;
				else
					cmd=2;				
				for(n=0;n<1000;n++);
			
			}
			if(!K4)
			{
				for(n=0;n<10000;n++);
				while(!K4);
				Add(cmd);
				for(n=0;n<10000;n++);
			}

		} 

	}
}

timer2()interrupt 5
{
	static unsigned int t;
	TF2=0;
	t++;
	
	if(cc==0){P14=1;P15=0;P16=0;P17=0;}
	if(cc==2){P14=0;P15=1;P16=0;P17=0;}
	if(cc==2){P14=0;P15=0;P16=1;P17=0;}
	if(cc==3){P14=0;P15=0;P16=0;P17=1;}	
//		P14=1;P15=1;P16=1;P17=1;
	
	cc++;
	cc%=4;
	if( cond ==1)
	{
		cc%=2;
		if( cmd==4)
			cc+=2;
	}
	if( cc==2)
	{
		if( m==0)
			P0=ledp1[A[cc+2]];
		else 
	 		P0=ledp2[A[cc+2]];
	}	
	else
	   	P0=ledp1[A[cc+2]];
	P1=ledp[cc];
	if( t%200==0&&cond==0)
	{
		m=~m;
	}
	if( t==400)
	{
		sound=1;
		t=0;
		if( cond == 0)
		{
			Add(0);
		}				
	}
}
void Add(unsigned int i)
{
	if(i>5)
		return;
	if( cond==0&&i==4&&!soundcmd	)
		sound=0;
	A[i]++;
	if(i==4)
	{
		if(A[i]>9)
		{
			A[i]=0;
			Add(i+1);
			return;
		}
		if(A[5]>1&&A[i]>B1[i])
		{	A[i]=0;
			Add(i+1);
			return;
		} 
	}
	else if(A[i]>B1[i])
	{
		A[i]=0;
		Add(i+1);
			
	} 
	
	
}

⌨️ 快捷键说明

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