键盘是单片机应用系统中的重要输入设备,其作用是控制系统的工作状态,向系统输入数据和命令。键盘一般由若干个规则排列的按键组成。根据按键的连接方式可分为独立式键盘和矩阵式键盘。单片机应用系统中常用的按键开关如图2.25所示。
图2.25 常用的按键开关
一、键的可靠输入
机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平。机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定的时间触点机械抖动,然后其触点才稳定下来。其抖动过程如图2.26所示,抖动时间长短,与开关的机械特性、按键动作等因素有关,一般为5~10 ms。在触点抖动期间检测按键的通与断,可能导致判断出错,即按键一次按下或释放错误地被认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取消抖措施。
按键消抖一般有硬件和软件两种方法。
1.硬件消抖
有专用的去抖动电路,一般在按键数较少时使用。采用RS触发器的硬件消抖电路原理图如图2.27所示。
图2.26 按键触点的机械抖动
图2.27 去抖电路
2.软件延时
按键较多时,采用软件消抖。即检测有按键按下,延时时间10ms,再读按键的状态,若仍闭合则确定按下。同理,在检测按键释放时,采用延时方法消除后沿抖动影响。软件去抖动的流程图如图2.28所示。
图2.28 按键去抖流程图
二、独立式键盘
独立式键盘就是将按键直接与I/O口相连的方式,如图2.29所示。当任意一个按键被按下,都会使相应的输入端出现低电平。若没有按键按下,则为高电平。上拉电阻保证了按键断开时,IO口线有确定的高电平。当IO口内部有上拉电阻时外电路可以不接上拉电阻。
在软件设计中,只需不断地查询端口出现低电平的情况,以此判断哪个按键被按下。
图2.29 独立式键盘
独立式键盘的结构比较简单,但每个按键都占用了一个口线,因此只适用于按键数量比较少的情况。
三、矩阵式键盘
当按键数量较多时,可将这些按键按行列构成矩阵,在每个行列的交点上连接一个按键,因此又称矩阵式键盘或行列式键盘。
1.行列式键盘的结构
4×4行列式键盘的结构如图2.30所示。
设键盘中有m×n个按键,采用矩阵式结构需要m+n条口线,图中P1口外接的键盘有4×4个按键,则需要4+4条口线。当键4按下时,则行线P1.1与列线P1.4接通,若仅使P1.1行为低电平,则P1.4列也为低电平,而其他列则都为高电平,根据行和列的电平信号就可以判断出按键所处的行和列的位置。
2.按键的识别(www.daowen.com)
图2.30 矩阵式键盘
按键的识别功能是判断键盘中是否有按键按下,若有按键按下,则确定按键所在的行列位置和键值。
识别过程如下:
(1)检测出是否有键按下。方法是P1.0~P1.3输出全0,然后读P1.4~P1.7的状态,若为全1则无键闭合,否则表示有键闭合。
(2)消抖处理。有键闭合后,调用10ms延时子程序避开按键抖动。
(3)判别键号。进行键盘扫描,即依次给每一条行线送0,其余各行都为1,并检测每次扫描的列状态。每当扫描输出某一行为0时,读入列线状态。若为全1,表示为0的这行上没有键闭合,否则不为全1,表示为0的这一行上有键闭合。确定了闭合键的位置后,就可计算出键号。闭合的键号等于为低电平行的首键号与为低电平的列号之和。
(4)键的释放。再次延时等待闭合键释放,键释放后执行处理按键对应的功能操作。
3.键盘的工作方式
单片机对键盘的扫描方法有编程扫描方式、定时扫描方式和中断扫描方式三种。
(1)编程扫描方式。
编程扫描方式是利用CPU的空闲时间,调用键盘扫描子程序,响应键盘的输入请求。在扫描法中,只有在CPU空闲时才去扫描键盘,响应操作员的键盘输入,但CPU在执行应用程序(若应用程序中没有键扫描程序)的过程中,不能响应键盘输入。
(2)定时扫描方式。
利用单片机内部定时器,每隔一定时间(如10ms)对键盘扫描一次,这种控制方式,不管键盘上有无键闭合,CPU总是定时地扫描键盘状态。在大多数情况下,CPU对键盘可能进行空扫描。
(3)中断扫描方式。
CPU平时不必扫描键盘,只要当键盘上有键闭合时就产生中断请求,向CPU申请中断,CPU响应键盘中断后立即对键盘进行扫描,识别闭合键,并作相应的处理。这种方法可大大提高CPU的效率又能及时响应键盘输入。
例2-10 通过单片机实现对4×4矩阵式键盘键号的控制并将键号在单个LED数码管显示。要求:顺序按下4×4矩阵式键盘(图2.31)中的按键,按键编号为0~F;在单个LED数码管上依次显示相应的键号,即数码管上依次显示0~F并仿真运行。
(1)电路设计。
选择单片机AT89C51,P1口接4×4矩阵式键盘,其中P1.0~P1.3连接4条行线,P1.4~P1.7连接4条列线,P0口接共阳极LED数码管,仿真电路如图2.31所示。电路中的16个按键的键号依次为0~F。
图2.31 4×4矩阵式键盘
(2)程序设计。
采用键盘扫描方式,P1.0~P1.3为输出扫描行,P1.4~P1.7为输入列,按照键盘识别过程产生键号,并在数码管上显示。
控制程序如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。