新闻中心

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

单片机常用按键电路

作者:时间:2016-11-28来源:网络收藏
单片机组成的小系统中,有的需要人机交互功能,按键是最常见的输入方式。最常见的按键电路大致有,一对一的直接连接和动态扫描的矩阵式连接两种。

一对一的直接连接就是一个按键直接对应一个CPU的输入口,比如下图

本文引用地址:http://www.eepw.com.cn/article/201611/322912.htm



左右两个电路作用一样,区别是左边CPU的输入端常态为高电位,按下按键时为低电位;右边的常态为低电位,按下按键是高电位。

这样的电路简单直接,一个按键独占一个端口,在按键数量较少端口数量富裕时可以直接使用。但很多场合需要的按键数比较多,要尽量少地占用端口就必须使用矩阵式的按键链接。如下图:



图中将按键按行列矩阵的方式排列,其中的每一行公用一根行线,每一列公用一根列线。以此图为例,16个按键,按一对一方式连接的话需要16个端口,而按这样的矩阵方式链接只需要8个端口,所需端口数大量减少。按键数Knum=line*row,而端口数Pnum=line+row,其中的line和row分别代表行数和列数。

图中的Px,Py为CPU的IO端口,在本例中可以使用不同的端口也可以使用同一个8位端口。上拉电阻不是必须,单片机IO口内部有上拉电路时此处就可省略。

这个电路的工作原理是采用程序扫描的方式检测某个按键状态。比如将Px口的4位全置为低电平,这时如果没有任何按键按下的话,从Py口读回的4位应全为高,而如果有某一键按下,则对应按下键的那一列的位读回值将为低。这样就能知道按下键所在的列;接着确定按键所处行,把Py口的输入值作为输出,Px全部置高并读取输入,就能得到按键所在行位置,于是就确定了所按按键的行列位置。

扫描可以有两种实现的方法,一种是全行全列扫描,一种是逐行全列扫描。

上面的例子其实就是全行全列扫描方式,见流程框图。

其特点是,一个流程就能到是否有按键按下,并能确定按下按检测行列值,检测步骤简单迅速。但作为行列接口的Px,Py必须是双向的,亦即同时具有输入输出功能,单片机的端口基本都能满足。


上一页 1 2 下一页

关键词: 单片机按键电

评论


技术专区

关闭