0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

矩阵键盘怎么接在stm32上

分享:

将矩阵键盘连接到STM32微控制器需要硬件连接和软件配置的结合。以下是详细步骤:


1. 硬件连接

1.1 确定矩阵键盘结构

  • 常见的矩阵键盘为 4x4(4行+4列)或 4x3(4行+3列),行(Row)和列(Col)交叉点对应一个按键。
  • 行(Row)一般作为输出端,由STM32控制;列(Col)作为输入端,连接到STM32的GPIO输入引脚。

1.2 连接步骤

  1. 选择GPIO引脚

    • 为每行(Row)分配一个GPIO引脚(设置为推挽输出模式)。
    • 为每列(Col)分配一个GPIO引脚(设置为输入模式,并启用内部或外部上拉电阻)。
  2. 物理连接

    • 将矩阵键盘的行(Row1~Row4)连接到STM32的GPIO输出引脚(如PA0~PA3)。
    • 将矩阵键盘的列(Col1~Col4)连接到STM32的GPIO输入引脚(如PA4~PA7),并启用内部上拉(或外接上拉电阻到VCC)。
  3. 上拉电阻

    • 列线(输入)必须保持高电平,当按键未按下时,输入引脚通过上拉电阻保持高电平;按下时,行线(输出低电平)会将列线拉低。

2. 软件配置

2.1 GPIO初始化

配置行引脚为输出,列引脚为输入并启用上拉:

// 示例:行(PA0~PA3)设为推挽输出,列(PA4~PA7)设为输入上拉
GPIO_InitTypeDef GPIO_InitStruct = {0};

// 配置行(输出)
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 配置列(输入)
GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;      // 输入模式
GPIO_InitStruct.Pull = GPIO_PULLUP;          // 启用内部上拉
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

2.2 按键扫描方法(逐行扫描)

  1. 逐行置低电平:依次将每一行(Row)设置为低电平,其余行保持高电平。
  2. 读取列状态:检测对应的列(Col)是否被拉低。若有列被拉低,则说明该行该列交叉点的按键被按下。
  3. 消抖处理:检测到按键后,加入10~20ms延时消除抖动,再次确认按键状态。

示例代码片段:

uint8_t key_scan(void) {
  uint8_t row, col;
  uint8_t key_value = 0xFF; // 默认无按键

  // 扫描每一行
  for (row = 0; row < 4; row++) {
    // 当前行置低,其余行置高
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 << row, GPIO_PIN_RESET);

    // 读取列状态
    for (col = 0; col < 4; col++) {
      if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4 << col) == GPIO_PIN_RESET) {
        HAL_Delay(10); // 消抖
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4 << col) == GPIO_PIN_RESET) {
          key_value = row * 4 + col; // 计算键值(例如0~15)
          while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4 << col) == GPIO_PIN_RESET); // 等待松开
        }
      }
    }
  }
  return key_value;
}

3. 注意事项

  1. 上拉电阻:如果STM32内部上拉不足,需在列线外接1kΩ~10kΩ上拉电阻。
  2. 消抖处理:必须加入延时或硬件滤波电容(通常软件消抖更常用)。
  3. 扫描频率:建议通过定时器中断定期扫描按键(如每10ms一次),避免阻塞主程序。
  4. 避免引脚冲突:确保所选GPIO未被复用为特殊功能(如USART、SPI等)。

4. 扩展优化

  • 使用中断扫描:可将列线连接到外部中断引脚,按键按下时触发中断,减少CPU占用。
  • 多键检测:修改扫描逻辑以支持组合键或长按检测。

通过以上步骤,即可实现矩阵键盘与STM32的交互。

什么是矩阵键盘矩阵键盘扫描原理介绍

,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和8X8,其中用的最多的是4X4。矩阵键盘的原理矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点,设置一个按键。这

宜家 2022-02-28 06:32:19

STM32操作矩阵键盘的两种方法

目录STM32操作矩阵键盘的两种方法——扫描和中断一、矩阵键盘的结构和原理二、扫描式矩阵键盘的原理和实现三、中断式矩阵键盘的原理和实现四、两种方案优劣STM32操作矩阵键盘的两种方法——扫描和中断

刀马旦 2021-08-12 06:33:27

什么是矩阵键盘

很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和8X8,其中用的最多的是4X4。矩阵键盘的原理矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点,设置一个按键。这样键盘中按键的个数是4×4个。这种行列式键盘结构能够有效地提

卿小知1 2022-01-07 07:43:13

矩阵键盘的按键识别方法_矩阵键盘扫描程序

矩阵键盘的按键识别方法来自简单日记网精选推荐。在学习有关矩阵键盘的时候,往往要学会矩阵键盘的按键识别方法,那么矩阵键盘的按键识别方法有哪些呢?小编带着你来了解。

2020-04-20 09:39:00

矩阵键盘的特点有哪些

最近,由于在学习51单片机,学会了用proteus进行仿真Proteus仿真-矩阵键盘由于一般的按键是单独接在一根I/O线上,构成所谓的独立式键盘。其特点是电路简单,易于编程,但占用的I/O口线比较

winber 2022-02-22 06:52:10

STM32 4*4矩阵键盘实现原理是什么

STM324*4矩阵键盘实现原理(附程序): 理解矩阵键盘之前,先要了解一下独立按键的触发原理。下图是普通独立按键的接线图。:按键的一端接地,一端接MCU的GPIO。当按键没有被按下的时候,这条路

tulin 2022-01-07 07:45:37

分享一个stm32矩阵键盘的程序

分享一个stm32矩阵键盘的程序

来自南方的狼 2023-10-10 08:26:26

矩阵键盘扫描的原理及设计

设计中在遇到按键较多,但是单片机I/O资源有限时,采用矩阵键盘是一种很好的选择方案。在按键较少时,矩阵键盘没有明显的优势,比如3×3矩阵键盘占用I/O口6个,只支持9个按键;但是,按键较多时,矩阵键盘的优势就凸显出来了,比如5×5矩阵键盘占用I/O口10个,可支持25个按键;

2022-07-05 14:59:29

矩阵键盘是什么?矩阵键盘怎么用?

矩阵键盘是什么?矩阵键盘怎么用?

风动影随 2022-01-18 06:20:55

在Proteus软件中如何读取矩阵键盘

矩阵键盘是读取一系列按键的有效方法,例如读取电话的拨号盘、POS机小键盘、电脑键盘,甚至是电子钢琴键盘

2023-07-19 15:26:23

LCD1602与矩阵键盘的使用方法

文章目录LCD1602的使用矩阵键盘的使用矩阵键盘相关电路图按键检测扫描制作密码输入器LCD1602的使用首先LCD1602是外接在开发板的液晶屏外设,如图所示:我们主要使用它来代替动态数码管进行

小芳 2022-01-27 07:38:32

矩阵键盘的相关资料分享

STM32矩阵键盘简介1.硬件部分2.软件部分硬件部分矩阵键盘的工作方式对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中的CPU的工作状况而定,其选取的原则是既要保证CPU能及

hfgfsds 2022-01-20 06:27:21

矩阵键盘怎么操作

?对与矩阵键盘,我们只能逐行扫描,然后读取列的状态信号。如果R3行输出低电平,那么黄色按键如果有按下动作的话,那读取C2列信号也应该为低电平,而该行其他没有按下动作的按键的列信号则为高电平。因此,我们可以得到矩阵键盘的基本扫描步骤: R1输出点电平,R2、R3、R4输出高电平,逐个读取判断

HCPcry 2022-01-07 06:28:47

proteus矩阵键盘仿真电路

proteus矩阵键盘仿真电路,本文通过在proteus搭建51单片机的矩阵键盘电路并联合keil编程软件编写的源程序进行8*8矩阵键盘仿真,进而熟悉proteus仿真软件的仿真操作。目录(一)4

tulin 2021-07-15 08:27:27

STM32F407使用4*4矩阵键盘

STM32F407使用4*4矩阵键盘

dfasda 2021-08-09 07:47:43

带有stm32的宏键盘4x4矩阵

描述带有stm32的宏键盘4x4矩阵

Ehunt 2022-08-16 06:48:19

请问个关于C51矩阵键盘的问题

)//P3口接在矩阵键盘上{ case 0x7e:P0=table[0];break; case 0xbe:P0=table[1];break; case 0xde:P0=table[2];break

leetow2006 2020-04-10 07:43:17

如何对stm32f103zet6矩阵键盘的代码进行测试呢

stm32f103zet6矩阵键盘的代码该如何去实现呢?如何对stm32f103zet6矩阵键盘的代码进行测试呢?

dsdfshf 2021-12-13 06:32:00

矩阵键盘检测独立按键与单片机连接

键盘。我们以4x4矩阵键盘为例。将16个按键排成4行4列,第一行将每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样便有4行线4列线共8线。我们将这8根线连接到单片...

ufydsyfsf 2022-02-22 06:14:55

分享STM32矩阵键盘扫描及处理的一些经验

STM32矩阵键盘扫描及处理前言由于最近帮做一个毕业设计需要用到直接输入目标值去控制输出,所以才写这么一个按键处理的程序。对于一个才接触单片机没多久的大学生菜鸟来说,实现毕设里的每一项功能都有一定

山川1998 2022-02-21 06:28:28

矩阵键盘的使用方法

首先呢,大家都知道:历年的蓝桥杯单片机组都会考到按键模块;对于国赛来说,考矩阵键盘的概率远远高于独立按键,所以必须将矩阵键盘的用法吃透来。现在来给大家介绍矩阵键盘的使用方法(基于状态机)1、使用矩阵

小佳99 2022-01-12 06:12:02

STM32F249的矩阵键盘使用笔记分享

个人练习笔记,如果存在某些漏洞,望大佬们指点。本文是关于STM32F249的矩阵键盘使用笔记如图可见,矩阵键盘是一种只需要8个引脚驱动16个按键的解决方法,可以简单的理解为,四个引脚作为输出四个引脚

小佳99 2022-01-07 08:18:17

矩阵键盘的基本扫描步骤

工作方式和扫描思路。要识别出黄色按键的按下状态,逐行扫描,然后读取列的状态信号。如果R3行输出低电平,那么黄色按键如果有按下动作的话,那读取C2列信号也应该为低电平,而该行其他没有按下动作的按键的列信号则为高电平。因此,我们可以得到矩阵键盘的基本扫描步骤: R1输出点电平,R2、R3

微风挽雨 2022-01-11 07:00:17

在FPGA开发板板载矩阵键盘驱动的设计实现

板载矩阵键盘的原理图。矩阵键盘电路原理图从图中可以看到,键盘的列线已经都设置了拉电阻,在没有按下按键时,键盘列线的输出为高电平。若给键盘的某一行输入低电平,并按下该行的一个按键,那么该按键连接的列

四哥201311 2022-07-26 17:16:56

为什么用矩阵键盘

提示:这里主要围绕4*4矩阵键盘,其他结构键盘的原理可通用。一、为什么用矩阵键盘我们在做独立键盘实验的时候,独立键盘与单片机连接时,每一个按键都需要一个独立的I/O口。如果某单片机系统需要较多按键

sgaasag 2022-01-07 06:44:50

矩阵键盘长短按的识别

定时器三行代码 矩阵键盘长短按的识别 九层妖塔 起于垒土【蓝桥杯】—{模块}—{矩阵键盘Part_1}矩阵键盘四、Template2矩阵键盘四、Template2

hy381 2021-12-09 07:52:21

矩阵键盘和独立键盘的原理介绍

学到矩阵键盘这一块对网上别人写的C代码有些疑问,希望有能看到的大牛帮助解答。矩阵键盘和独立键盘原理图:原理:对于图右侧的矩阵键盘,把P3口的低四位(P3.0 ~ P3.3)和高四位(P3.4

zaichenxi 2022-01-13 08:10:14

一文弄懂矩阵键盘是什么

为什么用矩阵键盘矩阵键盘的原理是什么?如何对矩阵键盘进行仿真?

kdsnvjsnjk 2021-09-22 07:37:55

Keyboard矩阵键盘外设

矩阵键盘,Keyboard

2023-03-07 09:42:57

矩阵键盘的基本原理讲解

矩阵键盘是单片机外部设备中所使用的排布类似于矩阵键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。

2019-11-21 07:09:00

加载更多
相关标签