注:此单片机型号为STC15F2K60S2.
矩阵按键
原理
首先,把跳线帽连接1、2,使其进入矩阵按键模式。
此时,即为矩阵按键模式。 按键原理 : 由图可看出,行接口有:P30、P31、P32、P33. ——————列接口有:P44、P42、P35、P34. 以S7举例,假设要检测S7被按下,则首先要设置其左端为低电平,即设置P44为低电平并且其余端口保持高电平,再检测其右端即P30是否为低电平即可。 (原理与独立按键相似,只是要自己设置一段为低电平。)
代码
来源:蓝桥杯官方。
unsigned char Key_Read(void)
{
unsigned int Key_New;
unsigned char Key_Val;
P44 = 0; P42 = 1; P35 = 1; P34 = 1;
Key_New = P3;
P44 = 1; P42 = 0;
Key_New = (Key_New<<4) | (P3&0x0f);
P42 = 1; P35 = 0;
Key_New = (Key_New<<4) | (P3&0x0f);
P35 = 1; P34 = 0;
Key_New = (Key_New<<4) | (P3&0x0f);
switch(~Key_New)
{
case 0x8000: Key_Val = 4; break;
case 0x4000: Key_Val = 5; break;
case 0x2000: Key_Val = 6; break;
case 0x1000: Key_Val = 7; break;
case 0x0800: Key_Val = 8; break;
case 0x0400: Key_Val = 9; break;
case 0x0200: Key_Val = 10; break;
case 0x0100: Key_Val = 11; break;
case 0x0080: Key_Val = 12; break;
case 0x0040: Key_Val = 13; break;
case 0x0020: Key_Val = 14; break;
case 0x0010: Key_Val = 15; break;
case 0x0008: Key_Val = 16; break;
case 0x0004: Key_Val = 17; break;
case 0x0002: Key_Val = 18; break;
case 0x0001: Key_Val = 19; break;
default: Key_Val = 0;
}
return Key_Val;
}
|