矩阵键盘是蓝桥杯开发板的一个重要模块,矩阵键盘的扫描思想在以后的单片机学习中也是一个重要的思想,除了通过条件判断的方式实现矩阵键盘,我们还可以通过移位运算符更方便的实现矩阵键盘;
一、移位运算符实现矩阵键盘
二、加入长短按功能
一、移位运算符实现矩阵键盘
我么可以对一行或列进行扫描后,将数据左移四位(<<4)后腾出空间,将下一行或列写入,每次将扫描数据加入后都左移四位,这样我们就可以通过一个16位的变量存储一轮扫描获得的每一行或列的信息,代码实现如下:
unsigned char Key_Scan(void)
{
unsigned int Key_New;
unsigned char Key_Value;
P3 |= 0x0F;
P44 = 0; P42 = 1; P35 = 1; P34 = 1; // 第一列
Key_New = P3 & 0X0F;
P44 = 1; P42 = 0; P35 = 1; P34 = 1; // 第二列
Key_New = (Key_New << 4) | (P3 & 0X0F);
P44 = 1; P42 = 1; P35 = 0; P34 = 1; // 第三列
Key_New = (Key_New << 4) | (P3 & 0X0F);
P44 = 1; P42 = 1; P35 = 1; P34 = 0; // 第四列
Key_New = (Key_New << 4) | (P3 & 0X0F);
switch(~Key_New)
{
case 0x8000: Key_Value = 1; break;
case