[MSP-EXP430F5529LP] [代码分享]矩阵键盘(MSP430F5529LP)

[复制链接]

1

主题

7

帖子

513

积分

单晶硅锭

Rank: 3Rank: 3

积分
513
楼主
查看: 7779回复: 1 发表于 2021-4-15 20:11:32   只看该作者
本帖最后由 陈思潼 于 2021-4-15 20:18 编辑

简要:
使用4*4矩阵键盘,通过定时器1ms中断控制键盘扫描,通过串口发送按下键盘的数据


一、硬件图片


二、电路图/引脚连接
KeyIn1->P6.0 KeyOut1->P6.4
KeyIn2->P6.1 KeyOut2->P7.0
KeyIn3->P6.2 KeyOut3->P3.6
KeyIn4->P6.3 KeyOut4->P3.5


P3.3 UART-TX引脚 连接到板载调试器处的TXD靠调试器一侧





三、代码简述
  1. /* 按键扫描函数,需在定时中断中调用,推荐调用间隔1ms */
  2. void KeyScan()
  3. {
  4.     unsigned char i;
  5.     static unsigned char keyout = 0;   //矩阵按键扫描输出索引
  6.     static unsigned char keybuf[4][4] = {  //矩阵按键扫描缓冲区
  7.         {0xFF, 0xFF, 0xFF, 0xFF},  {0xFF, 0xFF, 0xFF, 0xFF},
  8.         {0xFF, 0xFF, 0xFF, 0xFF},  {0xFF, 0xFF, 0xFF, 0xFF}
  9.     };

  10.     //将一行的4个按键值移入缓冲区
  11.     keybuf[keyout][0] = (keybuf[keyout][0] << 1) | KEY_IN_1;
  12.     keybuf[keyout][1] = (keybuf[keyout][1] << 1) | KEY_IN_2;
  13.     keybuf[keyout][2] = (keybuf[keyout][2] << 1) | KEY_IN_3;
  14.     keybuf[keyout][3] = (keybuf[keyout][3] << 1) | KEY_IN_4;
  15.     //消抖后更新按键状态
  16.     for (i=0; i<4; i++)  //每行4个按键,所以循环4次
  17.     {
  18.         if ((keybuf[keyout][i] & 0x0F) == 0x00)
  19.         {   //连续4次扫描值为0,即4*4ms内都是按下状态时,可认为按键已稳定的按下
  20.             KeySta[keyout][i] = 0;
  21.         }
  22.         else if ((keybuf[keyout][i] & 0x0F) == 0x0F)
  23.         {   //连续4次扫描值为1,即4*4ms内都是弹起状态时,可认为按键已稳定的弹起
  24.             KeySta[keyout][i] = 1;
  25.         }
  26.     }
  27.     //执行下一次的扫描输出
  28.     keyout++;         //输出索引递增
  29.     keyout &= 0x03;   //索引值加到4即归零
  30.     switch (keyout)   //根据索引,释放当前输出引脚,拉低下次的输出引脚
  31.     {
  32.         case 0: KEY_OUT_4_H(); KEY_OUT_1_L(); break;
  33.         case 1: KEY_OUT_1_H(); KEY_OUT_2_L(); break;
  34.         case 2: KEY_OUT_2_H(); KEY_OUT_3_L(); break;
  35.         case 3: KEY_OUT_3_H(); KEY_OUT_4_L(); break;
  36.         default: break;
  37.     }
  38. }
复制代码

代码较多,此处仅贴关键代码。从注释可以看出,每次进入中断,执行按键扫描时,仅扫描一行,每行需要重复4次。当4次都是按下状态时,将KeySta数组对应位置置1。



fistMSPProjTest.zip (69.38 KB, 下载次数: 48)


碎碎念吐槽:上传附件竟然只要.zip,不能7z




73

主题

469

帖子

1007

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1007
沙发
发表于 2021-4-27 13:58:29   只看该作者
感谢分享
快速回复 返回顶部 返回列表