嵌入式开发 | 矩阵键盘

矩阵键盘(Matrix Keypad)是一种通过行列交叉点检测按键的电子输入设备,广泛应用于嵌入式系统、计算器、密码锁、工业控制面板等场景。相比独立按键的“一对一”连接方式,矩阵键盘利用行列扫描技术大幅减少所需的I/O端口数量,是嵌入式开发中节省硬件资源的经典设计。
在嵌入式开发中实现矩阵键盘需要结合硬件电路设计和软件扫描算法,以下是经过工业验证的实现方案(基于STM32平台示例):

一、硬件设计核心要点

  1. 矩阵拓扑选择
    • 4x4矩阵:使用8个GPIO(4行+4列),可支持16键
    • 3x3矩阵:使用6个GPIO(3行+3列),支持9键
    推荐电路

    Rows: 接上拉电阻到VCC(如10KΩ)
    Columns: 直接连接GPIO输出模式
    
  2. 防干扰设计
    • 在GPIO入口处并联100pF电容滤波
    • 长距离布线时增加RC低通滤波(R=1KΩ, C=100nF)

  3. 功耗优化
    • 空闲时关闭列线输出(配置为高阻态)
    • 使用GPIO中断唤醒代替轮询(降低待机功耗90%)

二、软件扫描算法实现

方法1:逐行扫描法(适合低功耗场景)
// STM32 HAL库实现
#define ROWS 4
#define COLS 4
const uint16_t row_pins[ROWS] = {
   
   GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3};
const uint16_t col_pins[COLS] = {
   
   GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7};

uint8_t key_scan(void) {
   
   
    for(int col=0; col<COLS; col++) {
   
   
        HAL_GPIO_WritePin(GPIOB, col_pins[col], GPIO_PIN_RESET);
        for(int row=0; row<ROWS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值