键盘输入

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2 键盘

4.2.1键盘概念

键盘是最常用也是最主要的输入设备,通过键盘,可以将英文字母、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。

4.2.2键盘的分类

按照键盘的工作原理和按键方式的不同,可以划分为四种:

(1)机械式键盘(Mechanical) 采用类似金属接触式开关,工作原理是使触点导通或断开,具有工艺简单、噪音大、易维护的特点。

(2)塑料薄膜式键盘(Membrane)键盘内部共分四层,实现了无机械磨损。其特点是低价格、低噪音和低成本,已占领市场绝大部分份额。

(3)导电橡胶式键盘(Conductive Rubber)触点的结构是通过导电橡胶相连。键盘内部有一层凸起带电的导电橡胶,每个按键都对应一个凸起,按下时把下面的触点接通。这种类型键盘是市场由机械键盘向薄膜键盘的过渡产品。(4)无接点静电电容式键盘(Capacitives)使用类似电容式开关的原理,通过按键时改变电极间的距离引起电容容量改变从而驱动编码器。特点是无磨损且密封性较好。

按其结构形式可分为以下两种:

(1)编码键盘

编码键盘采用硬件方法产生键码。每按下一个键,键盘能自动生成键盘代码,键数较多,且具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用键盘即为编码键盘。

(2)非编码键盘

非编码键盘仅提供按键开关工作状态,其键码由软件确定,这种键盘键数较少,硬件简单,广泛应用于各种单片机应用系统,本次设计使用非编码键盘。

按照键盘与单片机的连接方式可分为一下两种:

(1)独立式键盘

独立式键盘,顾名思义,即各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态。这种按键软件程序简单,但占用I/O口线较多(一根口线只能接一个键),适用于键盘应用数量较少的系统中。

(2)矩阵式键盘

矩阵式键盘又称行列式键盘,在其行、列交汇点接有若干个按键。当需要较多按键时,与独立式键盘相比,单片机口线资源利用率大幅提高了。但若需要更多的键盘,需采用接口扩展技术,如8155等。

综上所述,结合实际情况,本次设计选用非编码矩阵式键盘。

4.2.3非编码矩阵式键盘工作原理

非编码矩阵式键盘,作为单片外围电路,应具有如下功能:

(1)键扫描功能,即检测是否有键按下。

(2)键识别功能,确定被按下键所在的行列的位置。

(3)产生相应的键的代码(键值)。

(4)消除按键弹跳及对于多键串键(复按)。

非编码矩阵式键盘工作原理主要以下几方面:

(1)键扫描

键盘上的键按行列组成矩阵,在行列交点上都有对应有一个键。为判定有无键被按下(闭合)以及被按键的位置,一般使用扫描法。

首先判定有没有键被按下。键盘的行线一端经电阻接+5V电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键按下,可先向所有列线输出低电平,然后再输入各行线状态。若行线状态皆为高电平,则表示无键按下;若行线状态中有低电平则表明有键按下。

然后再判定被按键的位置。因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使穿过闭合键的那条行线变成低电平。

(2)去抖动

当扫描表明有键被按下之后,紧急着应进行去抖动处理。因为常用键盘的键实际上是一个机械开关结构,被按下时,由于机械触点的弹性及电压突然跳变等原因,在触点闭合或断开的瞬间会出现电压的抖动。抖动时间长短与键的机械特性有关,一般为5~10ms。而键稳定闭合时间和操作者的按键动作有关,约为十分之几到几秒不等。抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误,因而必须设法消除抖动的不良后果。通过去抖动处理,可以得到按键闭合与断开的稳定状态。去抖动的方法有硬件与软件两种:硬件方法是加去抖动电路,如可通过RS触发器实现硬件去抖动;软件方法是在第一次检测到键盘按下后,执行一段20---30ms的延迟子程序后再确认该键是否确实按下,躲过抖动,待信号稳定之后,再进行键扫描。为了简单起见,本设计采用软件方法去抖动。

(3)键码计算

为了准确判断闭合键的位置,要对每个按键进行编码。根据矩阵式键盘的结构,采用行扫描的键位识别方法。使某条列线为低电平,如果这条列线上没有闭合键,则各行线的状态都为高电平;如果列线上有键闭合,则相应的那条行线即变为低电平。于是就可以根据行线号与列线号计算出闭合键的键码。扫描时由第一列开始,然后行线状态状态输入单片机,判断哪一行有键闭合,若无键闭合,再扫描第二列,检测下一列各行键闭合状态,由此一直扫描下去。至此扫描似乎已经可以结束,但是实际上扫描往往要继续进行下去,以发现出现的多键同时被按下。

最后得出被按下键的行号、列号,计算键码,公式如下:

键码 = 行首键号+列号

(4)等待键释放

计算键码后,再以延时后进行行扫描的方法等待键释放。等待键释放是为了保证键的一次闭合仅进行一次处理。

(5)键处理子程序

在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转到相应的键处理子程序,进行字符、数据的输入或命令处理,这样就可以实现该键的功能。

(6)键盘扫描的中断控制方式

在单片机系统中,CPU除了对键盘进行处理外,还要进行数据处理、结果输出显示及其它各种控制,因此键盘处理不应占用CPU过多的时间,但又必须保证CPU能够检测到键盘的工作。为提高CPU的工作效率,可采用中断扫描方式。当无键闭合时,CPU处理自已的工作,当有键闭合时,产生中断请求,CPU转去执行键盘扫描子程序并执行相应的功能。

设计中可采用4输入与门用于产生键盘中断,其输入端与各行线相连,输出端接至SM8958的外部中断输入端。当无键盘闭合时,与门各输入端均为高电平,输出端为高电平;当有键闭合时,为低电平,于是向CPU申请中断。若CPU开放中断,则会响应该键盘中断,转去执行键盘扫描子程序。

3.2.4 键盘设计

本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M 个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

4×4矩阵键盘的工作原理

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

扫描原理

把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按

相关文档
最新文档