新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机常用按键电路

单片机常用按键电路

作者: 时间:2016-11-28 来源:网络 收藏

但如果端口非双向,或按键数量大,端口数紧张需进一步减少端口时,也许就需要别的方式来解决。

还是拿上面的电路做例子,全行全列扫描是在检测到有按键按下时,先检测列然后再确定行。

换种检测方式,就是先给定行,再检测列。比如行端口Px每次输出不是全部,而是只有一位输出为低,也就是预先给定了行,那么对应行有按键按下时,Py读回的值就代表按键所在列。Px口按位逐一输出低,每次读回Py值,这样的处理方式,更贴近扫描的含义。因为按键是机械动作,相对单片机运行速度来说,一次扫描流程足够检测到按键按下的动作。这种扫描方式就是逐行全列扫描。见流程图。

这种扫描方式的特点是逐行扫描,有多少行就扫多少次,当有按键按下时,行列数就确定了。虽然显得麻烦点,但好处是Px只需是输出而Py只是输入,Px输出每次只有唯一的一位为低,这样的特点就可以对端口数进行简化,比如使用译码器。如图所示:

由图可以看出,同样按键数,增加一个138译码器之后,CPU所用端口数就减为5了。




Px口的3位只需输出0到7,译码器输出就能得到和前面一样的行扫描信号。这时候的程序处理流程,和上面的略有不同,主要是行的表示上不同。上面是行数的对应位表示对应行,下面的是行数的对应值就是对应行。程序框图如所示。

逐行扫描还有另外一个用处,就是当系统中有需要动态扫描的装置比如LED数码管或点阵时,行扫描线就可以为其提供动态扫描信号,这样也是为了减少端口使用数量,达到信号复用并减少代码量的目的。


除了上面提到的几种按键电路,还有一种按键电路,使用更少的端口数量,如图


该电路同矩阵式按键电路一样,所不同的是行列端口使用的是同一个端口,并且矩阵的一条对角线上按键由二极管代替。如此图所示,

按键数Knum=Pnum*(Pnum-1),其中Pnum就是使用的端口数。

以4个端口数为例,

一对一连接方式只能是4个按键;

不带译码器最多4个按键,

使用2-4译码器或3-8译码器方式最多8个按键

而这种电路可以达到12个按键。此电路程序部分和不带译码器的一样,只是注意对角线上被二极管替代的地方没有按键。


上一页 1 2 下一页

关键词: 单片机按键电

评论


技术专区

关闭