键盘矩阵知识点

键盘矩阵知识点
一、键盘矩阵1.1、定义键盘矩阵Matrix Keyboard是利用行列交叉结构用少量单片机 IO 引脚驱动大量按键的硬件电路把按键排布在横向「行 ROW」、纵向「列 COL」的交叉点上通过电平扫描判断哪个交叉点按键按下。1.2、核心公式总最大按键数量 行数 × 列数.上图电路按键数 4 x 4 16二、【行列】核心单元定义2.1、行 ROW作用输出控制线由单片机主动输出高低电平你的原理图Row1~Row4推挽输出初始状态统一输出高电平。2.2、列 COL作用电平检测输入线单片机读取线上电压判断按键你的原理图Col1~Col4开启内部上拉输入初始状态所有列都是高电平代表无任何按键导通。三、电气工作原理3.1、IO 配置ROW1~ROW4推挽输出扫描时单独一行拉低其余全部高电平COL1~COL4输入 MCU 内部上拉无按键时固定高电平3.2、按键导通流程示例按下S1按键导通过程阶段1默认状态下【引脚1是高电平即表示没有按下】阶段2扫描检测【拉低第一行电平为低电平S1不导通引脚1是高电平即没有按下】阶段3【按下第一个按键导通S1.可知第一行第一个按键被按下。即引脚1为低电平】总结ROW1 输出低 → S1按键按下→S1 导通 → 强拉低引脚1为低电平3.3、完整标准扫描流程逐行扫描无限循环执行阶段 1全局预检可选优化减少无效扫描全部 6 行统一拉低一次性读取 20 路列电平若所有列全高无按键直接跳过完整扫描进入下一轮循环若存在任意一列低电平判定有按键按下进入逐行精准定位流程。阶段 2逐行遍历定位核心扫描步骤共 6 轮循环变量 row 依次 R1、R2、R3、R4、R5、R6复位所有行6 行全部输出高电平选中当前扫描行仅把第 row 行输出低电平0V其余 5 行保持高读取全部 20 路列电平原理列默认上拉高阳极 3.3V当前行低阴极 0V阳极阴极二极管正向导通按下按键的列会被拉低判断某一列读到低电平→(当前行号, 该列号)按键按下判断全部列均为高电平 → 本行无按键记录所有按下按键坐标存入缓存数组释放当前行该行恢复高电平切换下一行重复步骤 1~4阶段 3软件消抖避免机械轴抖动误触发第一次扫描检测到按键坐标后延时 5~10ms再次执行一轮完整扫描重复读取行列两次扫描坐标完全一致才判定按键真实按下若第二次消失判定为抖动丢弃信号。阶段 4循环刷新整套扫描流程预检 6 行遍历 消抖循环执行通常刷新率 100~1000Hz人眼无延迟.四、典型故障现象4.1、鬼键现象凭空识别不存在的按键。4.1.1、鬼键完整案例阶段1默认状态阶段2同时按下 ABC 三个键扫描ROW1时ROW1输出低电平A被按下 → COL1读到低电平✓B被按下 → COL2读到低电平✓到这里都正常扫描ROW2时ROW2输出低电平C被按下 → COL2读到低电平✓注意此时多形成了一条电流泄漏路径。导致检测到的C0L1为低电平。导致D键检测到被按下其实没按下。这就是鬼键4.2、按键被屏蔽现象按了没反应。4.2.1、按键被屏蔽完整案例阶段1同时按下 ABC 三个键扫描ROW1时ROW1输出低电平A被按下 → COL1读到低电平✓B被按下 → COL2读到低电平✓到这里都正常扫描ROW2时ROW2输出低电平C被按下 → COL2读到低电平✓注意此时多形成了一条电流对冲路径。导致检测到的C0L2本应该是低电平。实际两股电流互相抵消COL2 的电压卡在中间既不算 MCU 判定的低电平也达不到标准高电平。这就是按键被屏蔽五、改进加装二极管后解决每个按键串联二极管阴极接行阳极接列电流只能列→二极管→按键→行。当扫描 ROW2 时ROW1 (3.3V) → K2 → 二极管阴极COL2 是阳极阴极电压阳极二极管反向截止ROW1 的高电平无法灌进 COL2不会对冲抵消COL2 被 ROW2 稳定拉低C键正常识别不会屏蔽丢键。

最新新闻

日新闻

周新闻

月新闻