1.矩阵式按键接口
单片机系统中,若按键较多时,通常采用矩阵式(也称行列式)键盘。
(1)矩阵式键盘的结构及原理。
矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图9-4所示。
图9-4 矩阵式键盘结构
一个端口(如P1口)就可以构成4×4=16个按键,比直接将端口线用于键盘多出一倍,而且线数越多,区别越明显。比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。
(2)矩阵式键盘按键的识别。
识别按键的方法很多,其中,最常见的方法是扫描法。下面说明扫描法识别按键的过程。
①判断键盘中有无键按下,将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
②判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
(3)键盘的编码。
对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号唯一确定。可采用依次排列键号的方式对按键进行编码。以图9-4中的4×4键盘为例,可将键号编码为:01H、02H、03H…0EH、0FH、10H等16个键号。编码的相互转换可通过计算或查表的方法实现。
2.键盘的工作方式
在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。
(1)编程扫描方式。
编程扫描方式是利用CPU完成其他工作的空余时间调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。键盘扫描程序一般应包括以下内容:
a.判别有无键按下。
b.键盘扫描取得闭合键的行、列值。
c.用计算法或查表法得到键值。(www.xing528.com)
d.判断闭合键是否释放,如未释放则继续等待。
e.保存闭合键键号,同时转去执行该闭合键的功能。
以如图9-4所示矩阵式键盘电路为例,单片机的P1口用作键盘I/O口,键盘的列线接到P1口的高4位,键盘的行线接到P1口的低4位。列线P1.4~P1.7分别接有4个上拉电阻到正电源+5V,并把列线P1.4~P1.7设置为输入线,行线P1.0~P1.3设置为输出线。4根行线和4根列线形成16个相交点。
键盘扫描程序处理步骤如下:
a.检测当前是否有键被按下。检测的方法是P1.0~P1.3输出全“0”,读取P1.4~P1.7的状态,若P1.4~P1.7全为“1”,则无键闭合,否则有键闭合。
b.去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。
c.若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.0~P1.3按下述4种组合依次输出:
即依次将P1.0~P1.3行线置“0”后读取P1.4~P1.7,若读出的各列线全为“1,这表示行线为“0”的这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值,为了保证键每闭合一次CPU仅作一次处理,必须消除键释放时的抖动。
键盘扫描程序流程图如图9-5所示。
图9-5 键盘扫描程序流程图
图9-6 中断扫描键盘电路
(2)定时扫描方式。
定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(如10ms)的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能程序。定时扫描方式的硬件电路与编程扫描方式相同。
(3)中断扫描方式。
采用上述两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态,为提高CPU工作效率,可采用中断扫描方式。
中断扫描键盘电路如图9-6所示,该键盘是由单片机P1口的高、低字节构成的4×4键盘。键盘的列线与P1口的高4位相连,键盘的行线与P1口的低4位相连,因此,P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5V电源,输出端接至51单片机的外部中断输入端。具体工作过程如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端口为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,CPU转去执行键盘扫描子程序,并识别键号。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。