查看: 17537|回复: 12

能够识别组合按键的矩阵键盘的解析

[复制链接]
  • TA的每日心情
    慵懒
    2019-4-17 21:21
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    发表于 2012-6-2 01:52 | 显示全部楼层 |阅读模式
    本帖最后由 珜羽 于 2012-6-2 01:58 编辑

    就矩阵键盘的工作原理进行讲解。并介绍如何能做到识别复合按键。
    以下以3X3键盘为举例:

    A、B、C分别为3个数字引脚,做列线。
    1、2、3也是3个数字引脚,做行线。
    R1、R2、R3分别为1、2、3号引脚的上拉电阻。
    RA、RB、RC分别为A、B、C号引脚的上拉电阻。
    A、B、C旁边的按键模拟数字引脚输出为0。

    红色方块表示为高电平,蓝色方块表示为低电平。

    可以看到,默认的时候,1,2,3,A,B,C引脚全部为高,这个时候是没有按键按下。
    image001.png

    当A1按键按下时:
    image003.png
    这个时候是没有开始扫描的,是不知道有按键按下。


    开始扫描,将A引脚拉低:
    image005.png
    图中红色椭圆圈内的按键按下(模拟A引脚输出低电平)时,可以看到1号引脚的电位被拉低。
    结合A列扫描,即可知道是A1按键按下。

    然后继续扫描。A引脚不再拉低,将B引脚拉低:
    image007.png
    图中红色椭圆圈内的按键按下(模拟B引脚输出低电平)时,可以看到1、2、3号引脚都是高电平。B列没有按键按下。

    最后扫描。B引脚不再拉低,将C引脚拉低:
    image009.png
    图中红色椭圆圈内的按键按下(模拟C引脚输出低电平)时,可以看到1、2、3号引脚还是高电平。C列没有按键按下。

    最后结束扫描。一个扫描周期介绍,检测到了我们A1按键的按下。

    如果A2,B1,B2同时按下会出现怎样的结果呢?
    image011.png

    开始A列扫描后就会发现,A1按键没有按下但是1号线却是低电平?!!
    image013.png

    原因如下图中的红线所示,1号线通过这样的连接被置地,让系统以为A1按键按下了。
    image015.png


    如果在每个按键的出线加上二极管,如下图所示:
    image017.png
    其他的按键A2,B1,B2不会对A1按键检测造成影响。这就实现了完全的任意组合按键识别。
    PS:
    人工智能之五子棋机器人——人机对弈这个帖子中应用了这个原理来识别多个棋子










    该用户从未签到

    发表于 2012-6-3 16:18 | 显示全部楼层
    好像明白點了,謝謝珜羽
  • TA的每日心情
    慵懒
    2019-4-17 21:21
  • 签到天数: 29 天

    [LV.4]偶尔看看III

     楼主| 发表于 2012-6-3 23:01 | 显示全部楼层
    CY57 发表于 2012-6-3 16:18
    好像明白點了,謝謝珜羽

    好像明白点?啊咧? 教程写的还不明细么?还不清楚么?什么地方出错了????

    该用户从未签到

    发表于 2012-6-4 17:22 | 显示全部楼层
    不错,写的很详细,画图都要半天呀。问一下:最后A1按下时DA1是反向几穿的吗?
  • TA的每日心情
    慵懒
    2019-4-17 21:21
  • 签到天数: 29 天

    [LV.4]偶尔看看III

     楼主| 发表于 2012-6-4 19:11 | 显示全部楼层
    yyy_zc 发表于 2012-6-4 17:22
    不错,写的很详细,画图都要半天呀。问一下:最后A1按下时DA1是反向几穿的吗? ...

    正向导通。不会击穿的。

    该用户从未签到

    发表于 2012-6-4 21:12 | 显示全部楼层
    二极管,大的方向接正极,小的点接负极哟。图例是否画反了,效果是说明了。

    点评

    你说对了。我图贴成了另外一张了。  发表于 2012-6-6 19:55
  • TA的每日心情
    慵懒
    2019-4-17 21:21
  • 签到天数: 29 天

    [LV.4]偶尔看看III

     楼主| 发表于 2012-6-4 21:45 | 显示全部楼层
    yyy_zc 发表于 2012-6-4 21:12
    二极管,大的方向接正极,小的点接负极哟。图例是否画反了,效果是说明了。 ...

    三角形的边是正,竖线的是负。

    该用户从未签到

    发表于 2012-6-6 09:30 | 显示全部楼层
    赞楼主~很好的方法~~

    不过二极管那里理解不了,A2按键那里,电流不是应该从左到右流动,才能使2口被拉低吗?
    但是按照你的图,电流只能从右往左流啊

    点评

    你说对了。我图贴成了另外一张了。sorry  发表于 2012-6-6 19:55

    该用户从未签到

    发表于 2012-7-13 21:02 | 显示全部楼层
    好思路!{:soso__16984349925490629196_1:}

    该用户从未签到

    发表于 2012-9-4 12:02 | 显示全部楼层
    好好···继续顶
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    ArduinoJason6教程由ArduinoJson作者Benoit亲自出马一对一教学
    ArduinoJason6教程由Ardui
    这几天我觉得社区教学好像缺了点什么,呃呃~我想一想好像是缺少了ArduinoJson6的教学
    Arduino+L298N小车实例教程
    Arduino+L298N小车实例教
    (第一次写教程,如有错漏,敬请拍砖)Arduino+L298N小车实例教程Arduino小车是一个非
    零知开源分享-蓝牙模块与手机APP通信
    零知开源分享-蓝牙模块与
    本篇文章中将讲解蓝牙模块与安卓手机APP进行通信。1、说明MCU:零知开发板-标准板模
    DHT库无法被找到
    DHT库无法被找到
    今天在安装了DHT库之后在编译时却显示无法找到库,请问我是在哪里安装出错了,谢谢大
    (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
    (可远程)ESP8266读DHT11
    原理讲解 原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表