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

📄 keyboard.c

📁 有创新的4*4矩阵键盘
💻 C
字号:
/******************************************************************/
/***    文件名 :    keyboard.c	                           ********/
/*** 		输  入 :       无                                 ********/
/***    输  出 :     按键值 1 - 16 												 ********/
/***																											 ********/
/***    建立    时间 :  2009年3月9号 											 ********/
/***    最后修改日期 :  2009年3月9号											 ********/
/******************************************************************/

//////延时函数/////////////////
#define uint unsigned int
#define uchar unsigned char
void delay()
{
	unsigned int a = 50;
	while(a--);
}

/***********************   主要函数       *******                   **/     
/***        keyx,keyy分别为某个I/O口检测时的横或纵向码          ***/
/***        addx,addy分别为按键坐标值 1,2,3,4								 ***/

unsigned char keyboard()	
{
	unsigned char keyx = 0,keyy = 0,addx = 0,addy = 0,keynum = 0;
	P1 = 0x0f;	 //检测前先给P1口赋值
	keyx = P1;	 //P1变化后的值赋给keyx
	P1 = 0xf0;
	keyy = P1;
	
	///    以下防抖动       //////////
	delay();
	if(keyx == 0x0f || keyy == 0xf0)
		return 0;

	delay();
	P1 = 0x0f;
	keyx = P1;
	P1 = 0xf0;
	keyy = P1;
	if(keyx == 0x0f || keyy == 0xf0)
		return 0;

	///   将键码转换为坐标1-4		///////////
	switch(keyx)			 
	{
		case 0x0e : addx = 1;		break;
		case 0x0d : addx = 2;		break;
		case 0x0b : addx = 3;		break;
		case 0x07 : addx = 4;		break;
	} 
	switch(keyy)
	{
		case 0xe0 : addy = 1;		break;
		case 0xd0 : addy = 2;		break;
		case 0xb0 : addy = 3;		break;
		case 0x70 : addy = 4;		break;
	}
	///     将坐标转换为开关号1-16     ///////////
	 keynum = 4 * (addy-1) + addx;
	 if(keynum)
		 return	keynum;
	 else
	   return 0;
}

⌨️ 快捷键说明

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