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

📄 1.c

📁 这是我自己编写的一个键盘输入的闹钟定时程序
💻 C
字号:
#include <reg52.h>
sbit F1=P1^0;
sbit F2=P1^1;
sbit M1=P1^2;
sbit M2=P1^3;
sbit BEEP=P1^4;
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);
uchar num,temp;
uchar keyscan();
void display();

uchar m[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

int a=0,b=0,c=0,d=0;

void main()
{
	P1=0xf0;
 //  	P0=0xc0;
	TMOD = 0x01; //使用定时器 0 的 16 位工作模式
	TR0 = 0;
	ET0 = 1;
	EA = 1;
	while(1)
	{
		display();
		while(keyscan())
		{
			a=keyscan();
		}
		display();
		while(keyscan())
		{
			b=keyscan();
		}
		display();
		while(keyscan())
		{
			c=keyscan();
		}
		display();
		while(keyscan())
		{
			d=keyscan();
		}
		display();
/*		if(keyscan()==16)
			{
				break;
			}				   */
		while(keyscan()!=13);
		TR0=1;
		delay(400);
		display();
	}
}



void display()
{
	 while(!keyscan())
	 {
	 	if(a==10)
		{
			a=0;
		}
	 	if(b==10)
		{
			b=0;
		}
	 	if(c==10)
		{
			c=0;
		}
	 	if(d==10)
		{
			d=0;
		}
		 F1=0;
		 P0=m[a];
		 delay(5);
		 F1=1;
		 F2=0;
		 P0=m[b];
		 delay(5);
		 F2=1;
		 M1=0;
		 P0=m[c];
		 delay(5);
		 M1=1;
		 M2=0;
		 P0=m[d];
		 delay(5);
		 M2=1;
	 }
}




uchar keyscan()
{
	num=0;
	P2=0xef;
	temp=P2;
	temp=temp&0x0f;
	if(temp!=0x0f)
	{
		delay(5);
		temp=P2;
		temp=temp&0x0f;
		if(temp!=0x0f)
		{
			temp=P2;
			switch(temp)
			{
				case 0xee: num=1;break;
				case 0xed: num=2;break;
				case 0xeb: num=3;break;
				case 0xe7: num=4;break;

			}
		}
	}

	P2=0xdf;
	temp=P2;
	temp=temp&0x0f;
	if(temp!=0x0f)
	{
		delay(5);
		temp=P2;
		temp=temp&0x0f;
		if(temp!=0x0f)
		{
			temp=P2;
			switch(temp)
			{
				case 0xde: num=5;break;
				case 0xdd: num=6;break;
				case 0xdb: num=7;break;
				case 0xd7: num=8;break;

			}
		}
	}

	P2=0xbf;
	temp=P2;
	temp=temp&0x0f;
	if(temp!=0x0f)
	{
		delay(5);
		temp=P2;
		temp=temp&0x0f;
		if(temp!=0x0f)
		{
			temp=P2;
			switch(temp)
			{
				case 0xbe: num=9;break;
				case 0xbd: num=10;break;
				case 0xbb: num=11;break;
				case 0xb7: num=12;break;

			}
		}
	}


	P2=0x7f;
	temp=P2;
	temp=temp&0x0f;
	if(temp!=0x0f)
	{
		delay(5);
		temp=P2;
		temp=temp&0x0f;
		if(temp!=0x0f)
		{
			temp=P2;
			switch(temp)
			{
				case 0x7e: num=13;break;
				case 0x7d: num=14;break;
				case 0x7b: num=15;break;
				case 0x77: num=16;break;

			}
		}
	}
   return num;
 }

 void delay(uint z)
{
	uint x,y;
	for (x=z;x>0;x--)
		for(y=110;y>0;y--);
}


void x() interrupt	 1
{
	uint t;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	t++;
	if(t==20)
	{
		t=0;
		d--;
		if(d+1==0)
		{
			d=9;
			c--;
			if(c+1==0)
			{
				c=5;
				b--;
				if(b+1==0)
				{
					b=9;
					a--;
				}
			}
		}
	}
	if(a==0&&b==0&&c==0&&d==0)
	{
		BEEP=0;
		TR0=0;
	}
}

⌨️ 快捷键说明

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