DIY智能门控——入门篇01:矩阵键盘


矩阵键盘简介

    矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。

当设备所需按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
矩阵式结构的键盘,结构和识别上显然要复杂一些:在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如PA口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的按键数量比较多时,采用矩阵法来做键盘是合理的。(原理图如下所示)
4*4矩阵键盘原理图1
4*4矩阵键盘原理图2
矩阵键盘实物图


## 键盘识别方法
如上原理图1所示,当按键没有按下时,所有的输入端都是高电平,代表无键按下。

下面介绍一种常规的键盘识别方法——电平翻转法:
    识别步骤如下:
  1. 判断键盘中有无键按下:将全部行线ROW_1-4设置为输出低电平,然后检测列线COL_1-4的输入状态。只要有一列的电平为低,则表示键盘中已有按键被按下,而且闭合的按键恰好位于低电平列线(COL_y)与4根行线(ROW)相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
  2. 判断闭合按键的具体位置:执行步骤1,且确定有按键按下后,将全部列线COL_1-4设置为输出高电平,检测行线ROW_1-4的输入状态。由于步骤1中按下的按键未变更,此时闭合的按键必定位于低电平行线(ROW_x)与列线(COL_y)相交叉的按键位置。
  3. 按键识别完毕。
    电平翻转法流程
    当然键盘识别的方法有很多,比如扫描法。扫描法又可称为逐行(或列)扫描查询法,也是一种常用的按键识别方法。
具体项目中,开发者可根据自身实际进行方案选择。

Arduino演示例程:

下面基于Arduino UNO Rev3开发板给出一个具体的例子,当然例子来自网络。
Arduino Playground - Keypad Library

开源代码参考链接:Arduino Playground - Keypad Library

仿写代码如下:

     /* 
             Name:       Keypads.ino 
             Created:   2018/7/3 17:26:41 
             Author:     禾灮\HeGuang 
         */ 
         // Define User Types below here or use a .h file 
     #include <Key
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值