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

📄 4x4key.c

📁 4×4矩阵式键盘识别技术 * 注:为了有更多实用的实验程序供大家学习
💻 C
字号:
 /*****************************************************************
 ;*  主    页 :  HTTP:WWW.QLMCU.COM           				
 ;*                                                              
 ;*  程序功能 :  4×4矩阵式键盘识别技术
 ;*                                         
 ;*  应用软件 : KEIL C                                               
 ;*                                                                      
 ;*  版    本 : KEIL 7.06   
 ;*              
 ;*  硬    件 :  WS804
 ;*                                                     
 ;*  创建时间 :  2005.07.04
 ;*
 ;*  Designer :  benladn911   
 ;******************************************************************
 ;*  注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
 ;*      在此谢谢这些无私奉献的朋友!!!   
 ;******************************************************************
 ;  0   1   2   3  ---P20
 ;  4   5   6   7  ---P21
 ;  8   9   10  11 ---P22
 ;  12  13  14  15 ---P23
 ;  |   |   |   |
 ; P24 P25 P26 P27
 ;******************************************************************/


#include <AT89X51.H>
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned char temp;
unsigned char key;
unsigned char i,j;


void main(void)
{
	P1_3=0;//选通第四位数码管做显示键值
	while(1)
	{
		P2=0xff;
		P2_4=0;
		temp=P2;
		temp=temp & 0x0f;
		if (temp!=0x0f)
		{
			for(i=50;i>0;i--)
			for(j=200;j>0;j--);
			temp=P2;
			temp=temp & 0x0f;
			if (temp!=0x0f)
				{
					temp=P2;
					temp=temp & 0x0f;
					switch(temp)
					{
						case 0x0e:
						key=0;
						break;
						case 0x0d:
						key=4;
						break;
						case 0x0b:
						key=8;
						break;
						case 0x07:
						key=12;
						break;
					}
					temp=P2;
					P0=table[key];
					temp=temp & 0x0f;
						while(temp!=0x0f)
						{
						temp=P2;
						temp=temp & 0x0f;
						}
				}
		}

		P2=0xff;
		P2_5=0;
		temp=P2;
		temp=temp & 0x0f;
		if (temp!=0x0f)
		{
			for(i=50;i>0;i--)
			for(j=200;j>0;j--);
			temp=P2;
			temp=temp & 0x0f;
			if (temp!=0x0f)
				{
					temp=P2;
					temp=temp & 0x0f;
					switch(temp)
						{
						case 0x0e:
						key=1;
						break;
						case 0x0d:
						key=5;
						break;
						case 0x0b:
						key=9;
						break;
						case 0x07:
						key=13;
						break;
						}
					temp=P2;
					P0=table[key];
					temp=temp & 0x0f;
						while(temp!=0x0f)
						{
						temp=P2;
						temp=temp & 0x0f;
						}
				}
		}

		P2=0xff;
		P2_6=0;
		temp=P2;
		temp=temp & 0x0f;
		if (temp!=0x0f)
			{
			for(i=50;i>0;i--)
			for(j=200;j>0;j--);
			temp=P2;
			temp=temp & 0x0f;
			if (temp!=0x0f)
				{
					temp=P2;
					temp=temp & 0x0f;
					switch(temp)
					{
						case 0x0e:
						key=2;
						break;
						case 0x0d:
						key=6;
						break;
						case 0x0b:
						key=10;
						break;
						case 0x07:
						key=14;
						break;
					}
					temp=P2;
					P0=table[key];
					temp=temp & 0x0f;
						while(temp!=0x0f)
						{
						temp=P2;
						temp=temp & 0x0f;
						}
				}
			}

		P2=0xff;
		P2_7=0;
		temp=P2;
		temp=temp & 0x0f;
		if (temp!=0x0f)
			{
			for(i=50;i>0;i--)
			for(j=200;j>0;j--);
			temp=P2;
			temp=temp & 0x0f;
			if (temp!=0x0f)
				{
				temp=P2;
				temp=temp & 0x0f;
					switch(temp)
					{
						case 0x0e:
						key=3;
						break;
						case 0x0d:
						key=7;
						break;
						case 0x0b:
						key=11;
						break;
						case 0x07:
						key=15;
						break;
					}
				temp=P2;
				P0=table[key];
				temp=temp & 0x0f;
					while(temp!=0x0f)
					{
					temp=P2;
					temp=temp & 0x0f;
					}
				}
			}
}//while
} 

⌨️ 快捷键说明

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