一种按键扫描方法及系统与流程

文档序号:11523726阅读:650来源:国知局
一种按键扫描方法及系统与流程

本发明属于实体按键扫描技术领域,尤其是涉及一种按键扫描方法及系统。



背景技术:

现有矩阵键盘扫描软件实现方式一般采用接线方式为行列接线法。即将io线以行列的方式排列,每个交叉点接一个按键。如果是20跟io线,分4行x5列连接,则有20个交叉点,可识别最大20个按键。但实际用到的io口只有9个。

具体包括三种方法:行扫描法,行列反转法,行列扫描法。

行扫描法的工作原理是:cpu首先向所有行输出低电平,如果没有按键按下,则所有列线输出为高电平。如果有某一键按下,则该键所在的列因为与行线低电平短路,该列线变为低电平。cpu在此时通过读取列线的值,即可判断有无键按下。在有按键按下的情况下,cpu再来确定是哪一个键按下,采用的方法是行扫描法。先向第0行输出低电平,其余行输出高电平,然后读取所有列线的电平值,如果有某一列为低电平,则说明0行和该跨接位置的那个键被按下了。确定了键的位置就可以退出扫描了。如果列线全为高电平。说明本行没有键按下,则继续将下一行输出低电平,其余行输出高电平,然后读取所有列线的的电平值。依此类推,直到找到按下键的位置则退出扫描。找到按下键的位置,即该键的行号和列号,就可以获取键的键码。这种通过行列位置标示的键码称为行列码或扫描码,也称为键盘扫描码。

行列反转法也是常用的识别闭合键的方法。其原理是:首先对所有行线输出低电平,列行线输出高电平,同时读列线。如果有键按下,则该键盘所在的列线为低电平,而其他列线为高电平,由此获得列号。然后向所有列线输出低电平,行线输出高电平,读行线,确定按键的行号。通过行号和列号确定按键的位置和编码。

行列扫描法也是键盘使用的主要键码识别方法,其工作原理如下:首先向每一行依次输出低电平,其余各行为高电平,每扫描一行,读取一次列线。如果列线全为高电平,说明没有键按下,如果有一列为低电平,则说明有键按下,此时可以确定行号和列号,行扫描完。接下来依次向每一列输出低电平,读行线,再次确定按键的行号和列号,两次获得的行号和列号相同,则键码正确,即获得按下键的行列扫描码。

在现有技术的按键扫描技术中,普遍存在资源利用率不高的问题。



技术实现要素:

有鉴于此,本发明旨在提出一种按键扫描方法及系统,用以在一定程度上适当降低io占用资源和软件资源。

为达到上述目的,本发明的技术方案是这样实现的:

一种按键扫描系统,包括:主控制模块、至少一个扫描端口、io线组、定时脉冲信号发送单元、按键扫描单元和按键上报单元;

每个扫描端口都可以作为输入或输出端口;

所述io线组具有下拉电阻或外接下拉电阻,并与所述扫描端口信号连接,该io线组中的io线分别与按键矩阵中的按键连接,所述io线的条数至少与按键矩阵的行数或列数相同,且该按键矩阵的每一行或者每一列均与一条io线连接,按键按下时,对应连接组合被短接,松开后恢复断开状态;

定时脉冲信号发送单元,与所述按键的行或列对应连接,用以发送按键检测所需脉冲信号,该定时脉冲信号发送单元定时发送脉冲信号①,且在按键按下时发送脉冲信号②,每行或者每列的脉冲信号①与脉冲信号②之间的时间间隔不同;

按键扫描单元,与所述按键的行或列对应连接,用以对按键的脉冲信号进行扫描,确定按键的行列值;

按键上报单元,与所述按键扫描单元信号连接,接收按键扫描单元扫描的行列值并进行初步判断,判断该行列值中有脉冲信号②时,将该行列值及按键扫描单元的扫描时间输入主控制模块。

进一步的,所述io线的条数与按键矩阵的行数相同,定时脉冲信号发送单元每行的脉冲信号①与脉冲信号②之间的时间间隔不同,此时该按键矩阵中的每一行按键对应与一条io线连接,该io线与所述扫描端口一一对应连接。

进一步的,所述io线的条数与按键矩阵的列数相同,定时脉冲信号发送单元每列的脉冲信号①与脉冲信号②之间的时间间隔不同,此时该按键矩阵中的每一列按键对应与一条io线连接,该io线与所述扫描端口一一对应连接。

进一步的,所述按键扫描系统还包括扫描终止单元,所述扫描终止单元分别与所述主控制模块、定时脉冲信号发送单元、按键扫描单元和按键上报单元信号连接,用以接收所述主控制模块的扫描终止控制信号,并向所述定时脉冲信号发送单元、按键扫描单元和按键上报单元发送。

一种基于以上所述按键扫描系统的按键扫描方法,包括以下步骤:

(1)设置扫描端口的输出,该输出的扫描端口为与每一行连接的io线组所对应的扫描端口时进行步骤(2),该输出的扫描端口为与每一列连接的io线组所对应的扫描端口时进行步骤(3);

(2)当有按键按下时,首先定时发送的脉冲信号①发送至行里的扫描端口中,行里的扫描端口收到脉冲信号①后,启动每列的计数器,每列的计数器设置值是不同的,当倒计时到零时,每个列端口开始发送脉冲信号②,由于每列的脉冲信号①和②之间的时间间隔不同,故在按键按下导通时,主控制模块根据该行收到的脉冲信号②的时间确定按键的行列值,然后进行步骤(4);

(3)当有按键按下时,首先定时发送的脉冲信号①发送至列里的扫描端口中,列里的扫描端口收到脉冲信号①后,启动每行的计数器,每行的计数器设置值是不同的,当倒计时到零时,每个行端口开始发送脉冲信号②,由于每行的脉冲信号①和②之间的时间间隔不同,故在按键按下导通时,主控制模块根据该列收到的脉冲信号②的时间确定按键的行列值,然后进行步骤(4);

(4)主控制模块根据按键行列值处理所述按键,并执行相应的指令,该次扫描结束,若要再次扫描,则根据io线与按键及扫描端口的连接关系,再次进行步骤(2)和(4)或者步骤(3)和(4)。

相对于现有技术,本发明所述的按键扫描方法及系统具有以下优势:

(1)本发明所述的按键扫描方法及系统,使用较少的扫描端口,扫描较多的按键,同时在一定程度上降低了io占用资源和软件资源。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的2x2键盘矩阵电路图;

图2为本发明实施例所述的row0,row1发送脉冲示意图;

图3为本发明实施例所述的按键扫描流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。

下面将参考附图并结合实施例来详细说明本发明。

一种按键扫描系统,包括:主控制模块、至少一个扫描端口、io线组、定时脉冲信号发送单元、按键扫描单元和按键上报单元;

每个扫描端口都可以作为输入或输出端口;

所述io线组具有下拉电阻或外接下拉电阻,并与所述扫描端口信号连接,该io线组中的io线分别与按键矩阵中的按键连接,所述io线的条数至少与按键矩阵的行数或列数相同,且该按键矩阵的每一行或者每一列均与一条io线连接,按键按下时,对应连接组合被短接,松开后恢复断开状态;

定时脉冲信号发送单元,与所述按键的行或列对应连接,用以发送按键检测所需脉冲信号,该定时脉冲信号发送单元定时发送脉冲信号①,且在按键按下时发送脉冲信号②,每行或者每列的脉冲信号①与脉冲信号②之间的时间间隔不同;

按键扫描单元,与所述按键的行或列对应连接,用以对按键的脉冲信号进行扫描,确定按键的行列值;

按键上报单元,与所述按键扫描单元信号连接,接收按键扫描单元扫描的行列值并进行初步判断,判断该行列值中有脉冲信号②时,将该行列值及按键扫描单元的扫描时间输入主控制模块。

所述io线的条数与按键矩阵的行数相同,定时脉冲信号发送单元每行的脉冲信号①与脉冲信号②之间的时间间隔不同,此时该按键矩阵中的每一行按键对应与一条io线连接,该io线与所述扫描端口一一对应连接。

所述io线的条数与按键矩阵的列数相同,定时脉冲信号发送单元每列的脉冲信号①与脉冲信号②之间的时间间隔不同,此时该按键矩阵中的每一列按键对应与一条io线连接,该io线与所述扫描端口一一对应连接。

所述按键扫描系统还包括扫描终止单元,所述扫描终止单元分别与所述主控制模块、定时脉冲信号发送单元、按键扫描单元和按键上报单元信号连接,用以接收所述主控制模块的扫描终止控制信号,并向所述定时脉冲信号发送单元、按键扫描单元和按键上报单元发送。

一种基于以上所述按键扫描系统的按键扫描方法,包括以下步骤:

(1)设置扫描端口的输出,该输出的扫描端口为与每一行连接的io线组所对应的扫描端口时进行步骤(2),该输出的扫描端口为与每一列连接的io线组所对应的扫描端口时进行步骤(3);

(2)当有按键按下时,首先定时发送的脉冲信号①发送至行里的扫描端口中,行里的扫描端口收到脉冲信号①后,启动每列的计数器,每列的计数器设置值是不同的,当倒计时到零时,每个列端口开始发送脉冲信号②,由于每列的脉冲信号①和②之间的时间间隔不同,故在按键按下导通时,主控制模块根据该行收到的脉冲信号②的时间确定按键的行列值,然后进行步骤(4);

(3)当有按键按下时,首先定时发送的脉冲信号①发送至列里的扫描端口中,列里的扫描端口收到脉冲信号①后,启动每行的计数器,每行的计数器设置值是不同的,当倒计时到零时,每个行端口开始发送脉冲信号②,由于每行的脉冲信号①和②之间的时间间隔不同,故在按键按下导通时,主控制模块根据该列收到的脉冲信号②的时间确定按键的行列值,然后进行步骤(4);

(4)主控制模块根据按键行列值处理所述按键,并执行相应的指令,该次扫描结束,若要再次扫描,则根据io线与按键及扫描端口的连接关系,再次进行步骤(2)和(4)或者步骤(3)和(4)。

下面以2*2的键盘矩阵为实施例对本发明进行解释说明。

如图1所示,是常用键盘矩阵的电路图(矩阵为2*2),其中row0,row1扫描端口配置为输出,col0,col1扫描端口配置为输入口,row0,row1,col0,col1接到了同一个主控制模块(cpu)。col0,col1内部有进行下拉配置。

设备的程序已经预设了列端口能够根据两个行脉冲时间间隔判断出是哪行的这个功能。

如图2所示,row0与row1的脉冲可以同时发送或不同时发送,但每行发送的脉冲间隔,即①和②之间的时间间隔是坚决不能一样的。为了减少软件人员的工作量,程序会设定每行的脉冲①同时发送。为了阐述简单明了,图2只用两行(row)来进行叙述。

如图3所示,是一个完整的按键扫描流程。

参照图1和图2,叙述本实施例具体的实现步骤。

图1中英文字母特指:

row0行端口0,输出端口

row1行端口1,输出端口

col0列端口0,输入端口

col1列端口1,输入端口

耳机功能实现:

步骤1:将四四i/o口row0,row1,col0.col1都接10kohm下拉电阻,使其平时处于i/o低电平状态,此时cpu读到的i/o线为低电平;

步骤2:软件配置每个行端口row0,row1在持续发送脉冲信号①,每行的脉冲信号①同时发送;

步骤3:当有按键按下时,脉冲信号会通过按键传到列里,因为列初始为低电平,脉冲信号发动过来后,列端口判断有按键按下,能够判断出具体的列,此时还不能判断是哪行;如果没有按键被按下,则继续步骤2

步骤4:列收到脉冲信号①后,启动每行的计数器,每行的计数器设值是不同的,当倒计时到零时,每个行(row)端口开始发送脉冲信号脉冲信号②,注意row0的脉冲①和②的时间间隔和row1的脉冲①和②的时间间隔(n*1ms)是不一样的,只有按键导通的行,第②个脉冲信号才会发送过去,其余的是无法到达列端口的;

步骤5:程序已经预设不同的行所对应两个脉冲的间隔,所以当第②个脉冲信号到达列端口后,扫描模块已经根据时间判断出是哪一行,这样就得了按键的行列码值;

步骤6:当得到按键的行列码值后,按键上报单元向主芯片上报所述按键,以使所述主芯片处理所述按键,去执行相应的指令扫描结束;

步骤7:扫描结束后,程序回到步骤2,等待下一次按键被按下,并执行扫描流程。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1