当前位置: 首页 > 游戏攻略 > 使用STM32进行矩阵键盘的代码实现

使用STM32进行矩阵键盘的代码实现

来源:网络 作者:趣玩小编 发布时间:2024-08-06 10:16:06

首先要感谢江苏科技大学提供的STM32入门课程,让我受益匪浅。我强烈推荐有兴趣的朋友去参加学习。

首先介绍一下我使用的矩阵键盘的外形,这是一种非常常见的类型。

接线图如下(其他型号可根据自己的需求接上GPIO口)。

代码基于stm大善人的代码修改而来,他的讲解非常详细,我在这里要表示非常感谢。

现在直接上代码:

头文件Key4x4.h

主体文件Key4x4.c

主要代码说明:

初始化配置 (KEY_4x4_Init):

  • 使能GPIOA模块的时钟。
  • 配置GPIOA的前四个引脚(GPIO_Pin_0至GPIO_Pin_3)为推挽输出模式,用于键盘行线的扫描。
  • 设置GPIOA的后四个引脚(GPIO_Pin_4至GPIO_Pin_7)为上拉输入模式,用于检测键盘列线的状态。

按键检测 (KEY_Click_Listener):

  • 检测列线状态,如果有键按下,则调用 Do_Click 函数记录按键信息并等待按键释放。
  • 使用延时函数 Delay_ms 来消除按键抖动。

扫描过程 (KEY_Scan):

  • 循环扫描每一行,通过改变行线的状态来检测是否有键按下。
  • 调用 KEY_Click_Listener 函数来处理每一行的按键检测。

读取按键值 (Key_Read):

  • 返回当前按下的键对应的数值。

补充说明:

line 定义了4个16进制的数值分别转成二进制

0000 0000 1111 1110 0x00fe

0000 0000 1111 1101 0x00fd

0000 0000 1111 1011 0x00fb

0000 0000 1111 0111 0x00f7

低4位为行,高四位为列。

设置0就是给对应行设置低电平。

在扫描的代码中,我们可以看到扫描的方法是先给传入的行line[x]设置低电平。

当扫描到某一列为低电平时就说明这一列被点击了。

循环从第一列到第四列设置低电平,直到检测到某一列也变成低电平。

假设1被点击,则1这一列也是低电平。

就变成第一行第一列低电平。

这样就能确定1被点击。给对应参数赋值1即可。

再根据定义的keys(ASCII码表对应数值)。

主要代码就是上面这些,其他代码只要复制江苏科技大学OLED的课件源码即可。

使用方式 man.c

相关攻略
热门推荐 更多 +
休闲益智 | 945.71MB
我的世界是一款风靡全球的3D第一人称沙盒...
9.6
角色扮演 | 878.96MB
最新版《汉家江湖》是一款以武侠为题材、以...
9.5
飞行射击 | 262.79MB
《荒野乱斗》是快节奏射击类多人对战游戏。...
9.5
飞行射击 | 102.9M
掌上飞车手游app是由腾讯特别为QQ飞车...
9.2
休闲益智 | 263.56MB
开心消消乐是一款轻松休闲的手游,也是一款...
9.6