📄 4x4keyscan.c
字号:
//####################################################################################
//###### name || writer || time || place ||#########################
//######-----------------------------------------------------#########################
//######4x4键盘扫描程序|| freela || 2008/10/14|| 暨南大学 ||#########################
//####################################################################################
#include <at89x52.h>
void delay(long int second);
/*******各按键对应键值*****************
1:0xE7 2:0xD7 3:0xB7 4:0x77
5:0xEB 6:0xDB 7:0xBB 8:0x7B
9:0xED 0:0xDD A:0xBD B:0x7D
C:0xEE D:0xDE E:0xBE F:0x7E
****************************************/
unsigned char key_scan(void) //键盘扫描程序
{
unsigned char key_value; //键盘值
unsigned char real_value;//实际值
unsigned char temp;
key_value=0xff;
P1=0xF0;
delay(10);//10ms延时
if(P1!=0xF0)
{
temp=P1;
P1=temp|0x0F;
delay(10);
key_value=P1;
// delay(10);
}
//return key_value;
switch(key_value)
{
case 0xDD: //0
real_value=0;
break;
case 0xE7: //1
real_value=1;
break;
case 0xD7: //2
real_value=2;
break;
case 0xB7: //3
real_value=3;
break;
case 0x77: //4
real_value=4;
break;
case 0xEB: //5
real_value=5;
break;
case 0xDB: //6
real_value=6;
break;
case 0xBB: //7
real_value=7;
break;
case 0x7B: //8
real_value=8;
break;
case 0xED: //9
real_value=9;
break;
case 0xBD: //A
real_value=10;
break;
case 0x7D: //B
real_value=11;
break;
case 0xEE: //C
real_value=12;
break;
case 0xDE: //D
real_value=13;
break;
case 0xBE: //E
real_value=14;
break;
case 0x7E: //F
real_value=15;
break;
default: break;
}
return real_value;
}
void delay(long int second)
{
unsigned char us,usn; while(second!=0) { usn = 4; while(usn!=0) { us=0xf0; while (us!=0){us--;}; usn--; } second--; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -