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

📄 4x4.c

📁 4*4键盘扫描应用C51在UVision3平台开发编程
💻 C
字号:
#include<reg52.h>

//可输出0~9的ASCII码
#define uchar unsigned char
#define uint unsigned int


#define Key_Port P1//P1口为键盘接口

void dlms(void)
{
	uchar i;
	for(i=200;i>0;i--){}
}

uchar GetKey(void)//获取键值
{
   uchar Set_Code,R_Code;
   Key_Port=0xf0;
   if((Key_Port&0xf0)!=0xf0)
      {
	 	dlms();
	  if((Key_Port&0xf0)!=0xf0)
	    {
		Set_Code=0xfe;
		while((Set_Code&0x10)!=0)
		     {
			 Key_Port=Set_Code;
			 if((Key_Port&0xf0)!=0xf0)
			    {
				R_Code=(Key_Port&0xf0)|0x0f;
				return ((~R_Code)+(~Set_Code));
				}
			  else 
			  Set_Code=(Set_Code<<1)|0x01;
			 }
		  }
		}
   return 0;
}

keyin()
{	uchar key;
	key=GetKey();
	switch(key)
	{
		case 0x11:
				key=0;
				P0=0x5f;			  //0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0xdf,0xca,0x9b,0xdc,0xdb,0x8b
				break;

		case 0x12:
				key=1;
				P0=0x44;
				break;

		case 0x14:
				key=2;
				P0=0x9d;
				break;

		case 0x18:
				key=3;
				P0=0xd5;
				break;

		case 0x21:
				key=4;
				P0=0xc6;
				break;

		case 0x22:
				key=5;
				P0=0xd3;
				break;

		case 0x24:
				key=6;
				P0=0xdb;
				break;

		case 0x28:
				key=7;
				P0=0x45;
				break;

		case 0x41:
				key=8;
				P0=0xdf;
				break;

		case 0x42:
				key=9;
				P0=0xd7;
				break;

		case 0x44:
				key=10;
				break;

		case 0x48:
				key=11;
				break;

		case 0x81:
				key=12;
				P0=0x01;
				break;


		case 0x82:
				key=13;
				P0=0x02;
				break;

		case 0x84:
				key=14;
				P0=0x04;
				break;

		case 0x88:
				key=15;
				P0=0x08;
				break;

		default:
				key=0xff;
				break;
	}
	return(key);
}




void main(void)
{
	while(1)
	{
		keyin();
	}
}

⌨️ 快捷键说明

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