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

📄 keyscan.c

📁 单片机键盘扫描的一种程序实现方法。比起组行扫描逐列置零节省很多的空间。
💻 C
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar keynum;
uchar b,a;
uint k;
uchar num;
uint keyscan();
void delay_ms(uint );
void main()
{
	P0=0xff;	
	while(1)
	{
		keynum=keyscan();
		P0=~keynum;
	}	
}

uint keyscan() 
{
	P1=0x0f;
	b=P1;
	b&=0x0f;
	if(b!=0x0f)
	{
		delay_ms(75);
		b=P1;
		b&=0x0f;
		if(b!=0x0f)
		{
			 
			P1=0xf0;
			a=P1;
			a&=0xf0;
			a|=b;	
			switch(a)
			{
				case(0xee):	k=1;break;
				case(0xed): k=2;break;
				case(0xeb):	k=3;break;
				case(0xe7):	k=4;break;
				case(0xde):	k=5;break;
				case(0xdd):	k=6;break;
				case(0xdb):	k=7;break;
				case(0xd7):	k=8;break;
				case(0xbe):	k=9;break;
				case(0xbd): k=10;break;
				case(0xbb):	k=11;break;
				case(0xb7):	k=12;break;
				case(0x7e):	k=13;break;
				case(0x7d):	k=14;break;
				case(0x7b):	k=15;break;
				case(0x77):	k=16;break;
			}
//		  P1=0x0f;
//		  while	((P1&0x0f)!=0x0f);     //松手检测			
		}				
	}
	return k;	
}
     
//延时子程序,参数z为所需的 ms 数
void delay_ms(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

⌨️ 快捷键说明

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