【模块介绍】6×6矩阵键盘(硬件部分和扫描方式)

目录

概述

原理图

扫描方式

扫描法

单个按键按下

多个按键按下

行反转法

图解

成品


概述

矩阵键盘非常常见

就是利用键盘组成矩阵来减少IO口的使用

做成6×6的矩阵键盘可以使用12个IO口读取36个按键

矩阵键盘的优势在于成本低,无需其他芯片即可实现功能

原理图

这是我所制作的原理图

扫描方式

常见的扫描方式有2种,此原理图的方案这两种方法均可使用

扫描法

扫描法就是间隔一段时间给不同的控制线通低电平(默认不触发状态是高电平)之后读取接收线的电平高低,如果是低电平(接上拉避免误触,默认高电平)则认为这根控制线和接收线对应的按键被按下

单个按键按下

假设某一时刻,红色线为低电平,其余控制线为高电平,蓝色按键被按下,则只有黄色的接收线为低电平

如果某个时刻,如下图红色的为低电平,其余控制线为高电平,因为没有其他按键按下,因此只有蓝色按键被按下,所有没有线为低电平

以此类推,每隔一段时间改变控制线电压,即可找到按下的按键,

即哪个控制线通低电平,读取接收线,为低电平的是被按下的

多个按键按下

使用扫描法可以识别多个按键按下的情况,但并不是所有的情况均能识别出,这是原理的限制

显而易见,整行或整列的任意几个按键按下均可被识别出来

这行任意按下,均可再分时状态识别出来,即每个不同控制线的通低电平可以读取到读取线的低电平

 这列被按下时,这列的控制线通低电平时,按下按键的读取线为低电平

 “L”型按下则会出现误触

像这三个按键按下,因为这三个按键组成回路,使得不管控制线0或控制线1均会出现读取线的0和1为低电平

也就是会认为1,2,7,8这4个按键按下

以此类推,一般会再软件中禁止这些会发生误触的按键

这样子也会出现误触 

 其余情况不会发生误触且可以识别

行反转法

行反转法是一种比较高效的方法,大体的实现流程是

  1. 先给列(行)线通全部低电平,行(列)通高电平(开漏)
  2. 检测行(列)线电平,如果出现一个低电平则认为有按键被按下
  3. 读取行(列)线数值,保存下来
  4. 将列(行)通高电平,行(列)通低电平,读取列(行)的数值
  5. 这两个数值就代表这键盘按下的信息

可以做到和扫描法同样的多按键识别,同样L型会出现误触(硬件决定的)

图解

就像这样,每一个横线和竖线的交点为开关 👆

 我们先给列线通高电平,行线设为低电平👆

没有开关按下时,列线为高电平

 假设这个按键被按下,则L0线被拉到低电平,读取列线(0b110)👆

然后给行线通高电平, 列线通低电平,读取行线(0b110)👆

则这两个代码(3,3)则代表这个按键被按下

两个或多个按键被按下,只要是硬件原理是上能被区分的均可识别出来

成品

这是使用AD画的PCB,(在10cm×10cm以内)

链接百度网盘https://pan.baidu.com/s/1ya_UqaPhN4RAMhYENeg8Mw?pwd=aahh%C2%A0
提取码:aahh

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会尽力回答你的问题。关于STM32矩阵键盘4*4的硬件电路的功能分析,这需要涉及一些硬件知识。矩阵键盘是由多个按键按下后形成的按键矩阵,因其节约了 IO 引脚,简化了连线,被广泛应用于各种嵌入式系统中。STM32单片机的矩阵键盘4*4的硬件电路可分为两部分,即矩阵键盘的输入部分和单片机控制部分。其中,矩阵键盘的输入部分是由 4 行 * 4 列的按键矩阵构成,单片机控制部分则是通过外部中断引脚和 DMA 控制器等模块进行通讯。 在使用 STM32 单片机矩阵键盘时,首先需要在单片机的相应引脚上接入按键矩阵。对于 4 行 * 4 列的按键矩阵,通常使用 GPIO 引脚来读取键盘输入。由于键盘输入是矩阵式排列的,因此需要使用扫描算法来获取键值。在扫描算法中,即按一个按键时,单片机首先将所在列的引脚输出低电平,然后轮流扫描与该列相连的 4 行引脚的电平,并得到最终键值。 此外,为了实现更加精准的手感反馈,还需要对矩阵键盘进行去抖动处理。去抖动是指在按键按下时,由于机械特性的原因可能会出现短时间的多次触发,从而导致按键反应不稳定的问题。为了避免这种情况,需要对键值信号进行去抖动处理,即对输入的信号进行滤波等处理,使其变得更加稳定可靠。 总的来说,STM32矩阵键盘4*4的硬件电路的功能分析主要涉及到键盘输入的采集、信号处理和反馈等方面。通过此硬件电路,可以实现精准、快捷的键盘输入,为产品的用户操作提供更好的体验。希望这个回答能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值