注:此单片机型号为STC15F2K60S2.
矩阵按键
原理
![来源:我自己:)](https://img-blog.csdnimg.cn/c45f871a21234c3f8f0cecb6d839d39a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATW9xaW0=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 首先,把跳线帽连接1、2,使其进入矩阵按键模式。
![来源:我自己:)](https://img-blog.csdnimg.cn/e6a431f58e264b56904bd1fb2c0383ed.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATW9xaW0=,size_10,color_FFFFFF,t_70,g_se,x_16#pic_center) 此时,即为矩阵按键模式。 ![来源:我自己:)](https://img-blog.csdnimg.cn/1e61502d8f5341439a5188144876e90b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATW9xaW0=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center) 按键原理 : 由图可看出,行接口有: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;
}
|