在Proteus软件中如何读取矩阵键盘?

电子说

1.2w人已加入

描述

Proteus使用技巧

矩阵键盘是读取一系列按键的有效方法,例如读取电话的拨号盘、POS机小键盘、电脑键盘,甚至是电子钢琴上的键盘。

读取大量按键输入的一种方法是将每个按键连接到其自己的微控制器输入引脚。对于 4x4 键盘,这将需要 16 个 GPIO(通用输入/输出)引脚。

PROTEUS仿真

但是,通过在矩阵中连接按键,只需 8 个 GPIO 即可读取相同数量的按键。

PROTEUS仿真

这减少了所需的微控制器引脚数量,以及相关布线/PCB走线的数量。

矩阵式键盘是按行和列的网格布线的(尽管它们在物理上不一定要按这个方向布置,例如电子钢琴键盘)。在微控制器上,行或列的引脚被永久设置为输入(本文中我们坚持使用行连接),而另一组引脚(本文中我们坚持使用列连接)在输出(低电平驱动)和浮空(基本上是开漏输出)之间切换。

行输入引脚需要上拉电阻,这可以在微控制器外部添加,也可以在微控制器内部激活(如果微控制器包含此功能)。一些微控制器具有开漏输出引脚(用于列),或者可以简单地将这些引脚设置为输入,以使其浮空。如果你对上拉电阻、浮空和/或开漏这些术语不熟悉,那么这里有一些快速解释:

浮空输入

浮空输入是一种不主动驱动到任何特定水平的输入,它真的可以是任何东西(例如,基于环境中的静电)。我们都使用过自动关闭的门,比如在公共设施中常见的门--除非你主动把门打开,否则就会有一个机制把它再次关上。如果没有自动关闭机制(现在想象一下,门没有闩锁机制),门会被风吹来吹去,或者被进出的人移动,它不会默认到任何特定的位置。

上拉(或下拉)电阻

上拉(或下拉)电阻类似于这些门上的自动关闭机制,因为它在不主动驱动时将输入保持在一个特定的水平。上拉(或下拉)电阻可以被认为是一个弹簧,当它没有被主动驱动时,它将输入拉到一个特定的水平,你可能注意到,电阻符号实际上看起来像一个小弹簧:

PROTEUS仿真

开漏输出

开漏输出是一个只能被驱动为低电平的输出,而不是高电平;输出要么是低电平,要么是浮空的。本质上,输出只是连接到一个晶体管的漏极引脚(因此称为开漏)。

PROTEUS仿真

通过将微控制器引脚在输入(浮空,没有上拉或下拉电阻)和输出(被驱动为低电平)之间切换,可以实现类似的效果。

读取矩阵键盘

为了读取矩阵中的任何特定按键,我们将相应的列引脚驱动为低电平,然后读取相应的行引脚;如果行引脚读取为低电平,则该按键被按下,如果它读取为高电平,则该按键未被按下。

PROTEUS仿真

PROTEUS仿真

通常,这是在快速顺序扫描操作中完成的,以检查矩阵中的每个按键,依次驱动每个列引脚,同时读取中间的每个行引脚。同时按键不会对此方法造成任何问题,并且仍然可以单独读取每个键。

防抖动

机械开关也会出现一种弹跳现象,即开关的触点在接触时发生物理弹跳,并在开关稳定在新状态之前出现一些快速的电压转换:

PROTEUS仿真

如果微控制器非常频繁地读取输入,那么它可能会将弹跳记录成按下按键的次数(而不是用户期望的一次按下);最简单的解决方案是每次读取按键之间留出一定的延迟时间,这将使按键有足够的时间在两次读取之间转换(通常 10-50ms 就足够了),这就是防抖开关技术。

*本文章版权归英国LABCENTER公司所有,由广州风标电子提供翻译,原文链接如下:*https://www.labcenter.com/blog/sim-matrix-keypad/

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分