一种提高键盘扫描速度的键盘电路转让专利

申请号 : CN201110132961.4

文献号 : CN102289291B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨旭东孙晓朋戴广永杨乾乾

申请人 : 西北工业大学

摘要 :

本发明提出了一种提高键盘扫描速度的键盘电路,行线和列线的一端均分别通过限流电阻与电源相连,行线的另一端通过PNP开关三极管,前m根列线另一端通过NPN开关三极管,复用后与I/O口P1.1、P1.2、……P1.m对应相连;剩余列线一半通过PNP开关三极管,另一半通过NPN开关三极管,复用后与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2对应相连,所有开关三极管的基极分别通过限流电阻连接到I/O口P1.0;在每个按键位置行线与列线通过复合开关与地线相连;所有行线通过与门电路连接到中断输入口。本键盘电路当行列数之和为2N时,所需的I/O口数为N+1,当行列数之和为2N+1时,所需的I/O口数为N+2,且过两次扫描就能得出按键的行值和列值。

权利要求 :

1.一种提高键盘扫描速度的键盘电路,所述键盘电路为m×n的矩阵键盘电路,m表示行线数,n表示列线数,且行线数不大于列线数,其特征在于:行线和列线的一端均分别通过限流电阻与电源相连,行线的另一端分别通过PNP型开关三极管与I/O口P1.1、P1.2、……P1.m对应相连,列线中前m根列线的另一端分别通过NPN型开关三极管连接到I/O口P1.1、P1.2、……P1.m上;当n-m为偶数时,后n-m根列线中的一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连,另一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连;当n-m为奇数时,另外n-m-1根列线中的一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,另一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,剩余的一根列线通过开关三极管与I/O口P1.(m+n+1)/2相连;所有开关三极管的基极分别通过限流电阻连接到I/O口P1.0;在每个按键位置行线与列线通过复合开关与地线相连;所有行线通过与门电路连接到中断输入口。

2.根据权利要求1所述的一种提高键盘扫描速度的键盘电路,其特征在于:当行线数大于列线数时,将行线与列线互换。

3.根据权利要求1或2所述的一种提高键盘扫描速度的键盘电路,其特征在于:行线的另一端分别通过NPN型开关三极管与I/O口P1.1、P1.2、……P1.m对应相连,列线中前m根列线的另一端分别通过PNP型开关三极管连接到I/O口P1.1、P1.2、……P1.m上。

4.根据权利要求1或2所述的一种提高键盘扫描速度的键盘电路,其特征在于:当n-m为偶数时,后n-m根列线中的一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连,另一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连;当n-m为奇数时,另外n-m-1根列线中的一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,另一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连。

说明书 :

一种提高键盘扫描速度的键盘电路

技术领域

[0001] 本发明涉及计算机及自动控制系统的输入设备领域,具体为一种提高键盘扫描速度的键盘电路。

背景技术

[0002] 目前通用的键盘主要以矩阵式键盘为主,在键盘应用中,如何提高键盘扫描速度,如何在一定数量的I/O口下尽可能多地增加按键个数是两个重要问题。传统地采用线反转法可以通过较少的扫描步骤实现对键盘的扫描,从而减少键盘扫描时间,如实现N×N的矩阵键盘,采用线反转法可以实现简单的扫描程序,但所需的I/O口数量为2N个,占用I/O口数量较多。在申请号为200420014528的专利文献中公开了一种键盘电路,能够有效的减少占用的I/O口数量,实现N×N的矩阵键盘扫描所需的I/O口数量为N+1个,但是其扫描过程复杂,确定一个按键值需要扫描N次,且在矩阵键盘行列数不相等时无法实现减少占用I/O口数量的目的。

发明内容

[0003] 要解决的技术问题
[0004] 为解决现有技术中的问题,实现在一定按键数量的前提下,既减少键盘扫描电路占用的I/O口数,又能简化键盘扫描过程的目的,本发明提出了一种提高键盘扫描速度的键盘电路。
[0005] 技术方案
[0006] 本发明的技术方案为:
[0007] 所述一种提高键盘扫描速度的键盘电路,键盘电路为m×n的矩阵键盘电路,m表示行线数,n表示列线数,且行线数不大于列线数,其特征在于:行线和列线的一端均分别通过限流电阻与电源相连,行线的另一端分别通过PNP型开关三极管与I/O口P1.1、P1.2、……P1.m对应相连,列线中前m根列线的另一端分别通过NPN型开关三极管连接到I/O口P1.1、P1.2、……P1.m上;当n-m为偶数时,后n-m根列线中的一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连,另一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连;当n-m为奇数时,另外n-m-1根列线中的一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,另一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,剩余的一根列线通过开关三极管与I/O口P1.(m+n+1)/2相连;所有开关三极管的基极分别通过限流电阻连接到I/O口P1.0;在每个按键位置行线与列线通过复合开关与地线相连;所有行线通过与门电路连接到中断输入口。
[0008] 所述一种提高键盘扫描速度的键盘电路,其特征在于:当行线数大于列线数时,将行线与列线互换。
[0009] 所述一种提高键盘扫描速度的键盘电路,其特征在于:行线的另一端分别通过NPN型开关三极管与I/O口P1.1、P1.2、……P1.m对应相连,列线中前m根列线的另一端分别通过PNP型开关三极管连接到I/O口P1.1、P1.2、……P1.m上。
[0010] 所述一种提高键盘扫描速度的键盘电路,其特征在于:当n-m为偶数时,后n-m根列线中的一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连,另一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n)/2相连;当n-m为奇数时,另外n-m-1根列线中的一半列线分别通过NPN型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连,另一半列线分别通过PNP型开关三极管与I/O口P1.m+1、P1.m+2、……P1.(m+n-1)/2相连。
[0011] 有益效果
[0012] 本发明设计的矩阵键盘电路,当行列数之和为2N,即为偶数时,所需的I/O口数为N+1,当行列数之和为2N+1,即为奇数时,所需的I/O口数为N+2,远比线反转法占用的I/O口数要少,且不要求矩阵行列数一定相等;同时采用该矩阵键盘电路,通过两次扫描就能得出按键的行值和列值,即可得出按键键值,无论是顺序扫描、定时扫描,还是中断扫描,均可提高键盘扫描速度,节省CPU时间。

附图说明

[0013] 图1:m×n矩阵键盘电路;
[0014] 图2:3×5矩阵键盘电路。

具体实施方式

[0015] 下面结合具体实施例描述本发明。
[0016] 本实施例是一个3×5的矩阵键盘电路。行线数为3,列线数为5.
[0017] 参照附图2,所有行线的一端分别通过限流电阻R21-R23与+5V电源VCC相连,所有列线的一端分别通过限流电阻R11-R15与+5V电源VCC相连。行线的另一端分别通过PNP型或NPN型开关三极管与I/O口P1.1、P1.2和P1.3依次相连,在本实施例中,行线另一端采用的是PNP型开关三极管Q1、Q2和Q3;列线中前3列列线的另一端分别通过NPN型或PNP型开关三极管与I/O口P1.1、P1.2和P1.3依次相连,这里要保证行线相连的开关三极管与前m列列线相连的开关三极管结构类型相反,由于本实施例中行线另一端连接PNP型开关三极管,所以这里前3列列线另一端分别通过NPN型开关三极管Q4、Q5和Q6与I/O口P1.1、P1.2和P1.3依次相连。
[0018] 在其余的2根列线中,取1根列线通过PNP型或NPN型开关三极管与I/O口P1.4相连,本实施例中取的是第5列列线通过PNP型开关三极管Q8与I/O口P1.4相连;取另外1根列线通过NPN型或PNP型开关三极管与I/O口P1.4相连,这里要保证这两根列线相连的开关三级管结构类型相反,由于本实施例中第5列列线已经通过PNP型开关三极管Q8与I/O口P1.4相连,所以这里取第4列列线通过NPN型开关三极管Q7与I/O口P1.4相连。
[0019] 本实施例中,其余的列线个数为偶数,当其余的列线个数为奇数时,就在其余的列线中单独取出一根列线,其另一端通过NPN型或PNP型开关三极管与单独的一个I/O口相连,这样剩余的列线个数又为偶数了,就可以如上述分成两部分,分别通过结构类型相反的开关三极管与I/O口相连。若当行数大于列数时,只需将行线与列线互换。
[0020] 本实施例中,开关三极管的基极分别通过限流电阻R31-R38连接到I/O口P1.0上,通过P1.0的状态控制开关三极管的通断;在每个按键位置行线与列线通过复合开关与地线相连;所有行线通过与门电路G1连接到中断输入口,构成键盘扫描中断输入电路。
[0021] 键盘工作时,当没有按键按下时,各行均为高电平,经与门电路G1后连接到中断输入口的电平为高电平,此时不触发中断。当有按键按下时,经与门电路G1后连接到中断输入口的电平为低电平,此时触发键盘扫描中断,开始执行键盘扫描中断程序。扫描过程中,首先在P1.0口置1,此时PNP型开关三极管Q1、Q2、Q3和Q8均导通,行线及第五列列线与相应I/O口相连通,扫描行线及第五列列线,若某行或第五列有键按下,则对应输入口读得为0,其余输入口读得为1,从而得到所按按键的行状态值和第五列的状态值,将此值暂存。然后在P1.0口置0,此时NPN型开关三极管Q4-Q7导通,前3列列线和第4列列线与相应I/O口相连通,扫描该四列列线,若该四列无键按下则对应输入口均为高电平,输入口状态读得全为1;若某列有键按下则对应此列输入口读得为0,其余输入口读得仍为1,从而得到所按按键的该四列的状态值,将此状态值暂存。P1.0口完成一次1→0循环,则完成一次扫描,根据两次读得的按键状态值即可计算出键值。扫描过程中,可通过延时比较前后所得键值是否相同来去除干扰、抖动,避免误操作,同时也可判断区分键的按下、释放和长按,从而保证每个键按一次执行一次操作。