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

📄 5.c

📁 刚学时编的小程序
💻 C
字号:
#include <AT89X51.H>

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x40,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};
unsigned char dispcun[10][8];

unsigned char dispbitcnt;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt;
unsigned int key;
unsigned char cun=0,b,a;

delay(int t)
{
	int i,j;
	for(i=0;i<t;i++)
		for(j=0;j<100;j++);
}

char scan_key()
{
	char i,j,find;
	int ini,inj;
	char in;
	find=0;
	for(i=0;i<4;i++)
	{
		P0=dispbitcode[i]  ;
		delay(30);
		in=P0;
		in=in>>4;
		in=in|0xf0;
		for(j=0;j<4;j++)
			if(dispbitcode[j]==in)
			{
				find=1;
				inj=j,ini=i;
			}
	}
	if(find==0)  return 0;
    key=ini*4+inj;
	return find;
}

void main()
{
	char m,n;
	for(m=0;m<10;m++)
	{
		for(n=0;n<8;n++)
		{	
			if(n==2|n==5)	dispcun[m][n]=16;
			else dispcun[m][n]=1;
		}
	}
	TMOD=0x02;
	TH0=0x06;
	TL0=0x06;
	TR0=1;
	ET0=1;
	EA=1;
	P3_7=0;
	P2=dispbitcode[dispbitcnt]	  ;
	while(1)
	{
		if(scan_key()==1&key==12)
		{	
			tiaoshi();
		}
		if(scan_key()==1&key==13)	
		{
			cunshi();
		} 
		if(a==1)
		{
			for(m=0;m<=9;m++)
			{
				for(n=7;n>2;n--)
				{
					if(n==5) continue ;
					if(dispcun[m][n]!=dispbuf[n])  break;
				}
				if(n==2) dadian();
			}
		}
	}
}

get_key()
{
	while(1)	if(scan_key()!=0)  break;
}

fan_key()
{
	while(1)	if(scan_key()==0)  break;	
}

void t0(void) interrupt 1 using 0
{
	mstcnt++;
	if(mstcnt==8)
	{
		mstcnt=0;
		if(cun==0)
		{
		/*	if(i!=0&i==dispbitcnt)
			{
				a++;
				if(a=100)
				{
					a=0;f=~f;
				}
				if(f==0) P1=dispcode[16];
				else P1=dispcode[dispbuf[dispbitcnt]]	;
			
			}
			else          
		*/
			P1=dispcode[dispbuf[dispbitcnt]]	;
		}
		else
		{
			 P1=dispcode[dispcun[b][dispbitcnt]]  ;
		}
		P2=dispbitcode[dispbitcnt]	  ;	
		dispbitcnt++;
		if(dispbitcnt==8)
		{
			dispbitcnt=0;
		}
	}
	tcnt++;
	if(tcnt==3700)
	{	
		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[3]=minite%10;
		dispbuf[4]=minite/10;
		dispbuf[6]=hour%10;
		dispbuf[7]=hour/10;
	}
}	

tiaoshi()
{
	char i;
	P3_0=0;
	fan_key();
	for(i=7;i>=0;i--)
	{	
		switch(i)
		{
			case 7:	get_key();	if(key>2)	{key=2;}  	hour=key*10; break;
			case 6:	get_key();	if(key>9)	{key=9;}	hour=hour+key;
								if(hour>24)	{hour=23;} 	break;
			case 4:	get_key();	if(key>5)	{key=5;}	minite=key*10; break;
			case 3:	get_key();	if(key>9)	{key=9;}	minite=minite+key; break;
			case 1:	get_key();	if(key>5)	{key=5;}	second=key*10; break;
			case 0:	get_key();	if(key>9)	{key=9;}	second=second+key; break;
		}
		fan_key();
	}
	P3_0=1;
}

cunshi()
{
	char i;
	P3_1=0;
	fan_key()	;
	cun=1;
	a=1;
	for(b=0;b<10;b++)
	{
		for(i=7;i>=0;i--)
		{
			switch(i)
			{
				case 7:	get_key();	if(key==15)		{fan_key(); goto loop;}
									else /*if(key>2){key=2;}  */	dispcun[b][i]=key; break;
				case 6:	get_key();/*	if(key>3&dispcun[b][i+1]>1) dispcun[b][i]=3;// break;
							 		else if(key>9&dispcun[b][i+1]<2) dispcun[b][i]=9;//	break;
									else  */ dispcun[b][i]=key; break;
				case 4:	get_key();	/*if(key>5){key=5;}	*/dispcun[b][i]=key; break;
				case 3:	get_key();	/*if(key>9){key=9;}	*/dispcun[b][i]=key; break;
				case 1: if(b==9) dispcun[b][i]=1;
						else dispcun[b][i]=0; break;
				case 0: if(b==9) dispcun[b][i]=0;
						else dispcun[b][i]=b+1; break;
			}
			fan_key();
		}
		loop:  1;
	}
	b=9 ;
	while(1)
		if(scan_key()==1&key==14) 
		{
			cun=0; 	P3_1=1;break;
		}
}

dadian()
{
	  P3_7=1;
	  P3_6=0;
	  delay(8000);
	  P3_7=0;
	  P3_6=1;
}

⌨️ 快捷键说明

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