按键系统及其检测方法

文档序号:7510386阅读:342来源:国知局
专利名称:按键系统及其检测方法
技术领域
本发明涉及电子技术,特别涉及按键的扫描检测技术。
背景技术
目前各生产厂家生产碟机、卫星接收机、遥控器等需要使用按键的产品大部分都采用矩阵式扫描电路连接到MCU(按键编码集成电路)进行按键扫描检测确认某个按键的状态;采用该种按键扫描方式参见图1,图中涉及对4×4个按键的按键扫描电路,其中,S15~S0表示按键,PA3~PA0为行导线输入端,初始化为带上拉电阻的输入口,PA7~PA4为列导线输出端,初始化为输出低电平。扫描方法首先由输出口PA7~PA4向所有的列导线输出低电平,读取各行导线PA3~PA0的状态,若行导线状态全为高电平,则表明无键按下,若行导线状态中有低电平,则表明有键按下,再对每一条列导线进行扫描,即PA7~PA4四条列导线分别输出低电平,在每次输出低电平期间,读取各行导线PA3~PA0的状态,确定键值。例如PA7~PA4输出″1011″,此时若读取PA3~PA0的状态为″1110″,则表明按键S4被按下。4×4个按键需要8个GPIO(通用输入输出)口线。若扫描n×n个按键,则需要2n个GPIO口线。这种矩阵扫描检测方式容易受到MCU的GPIO口线的限制而影响按键的数量,如果按键数量多,那么就必须更换有更多GPIO口的MCU,从而增加了系统成本,也不利于产品的小型化。

发明内容
本发明所要解决的技术问题是,针对现有矩阵按键扫描电路占用硬件资源多,系统成本高的问题,提供一种按键系统及其检测方法。
本发明解决所述技术问题采用的技术方案是,按键系统,包括按键编码集成电路、n条行导线、m条列导线、m只二极管,且n≥m>1;行导线与按键编码集成电路连接;n条行导线与m条列导线以n×m矩阵分布,m只二极管分布于矩阵的交点上,二极管阳极接行导线,阴极接列导线,且每条行导线最多与一只二极管的阳极连接,每条列导线与一只二极管的阴极连接;矩阵的其余交点上则分布按键,按键按下时,行导线和列导线接通。
按键系统的按键检测方法,包括下列步骤
a.将n条行导线置为高电平,然后扫描n条行导线,判断是否有低电平出现,有低电平出现则进入步骤b,无低电平出现则进入步骤c;b.检测到电平为低电平的行导线上接地的按键被按下;c.按如下方法检测位于n×m矩阵交点上的按键将第i条行导线置为低电平;扫描第j条行导线是否为低电平,j≠i;若是,则第j条行导线通过二极管连接的列导线与第i条行导线的交点上的按键被按下。
对上述第j条行导线通过二极管连接的列导线可以通过软件确定结合按键系统的电路图中二极管的具体分布,在程序中记录二极管所处的行导线和列导线为(j,r),j与r一一对应;当将第j条行导线作为扫描线,扫描第j条行导线是否为低电平时,通过程序中记录的j所对应的r,则确定出第j条行导线通过二极管连接的列导线为第r条列导线。
特别的,当m只二极管分布于n×m矩阵对角线的交点上时,二极管所处的行导线和列导线为(k,k),则本发明的按键系统的按键检测方法,包括下列步骤a.将n条行导线置高电平,然后扫描n条行导线,判断是否有低电平出现,有低电平出现则进入步骤b,无低电平出现则进入步骤c;b.检测到电平为低电平的行导线上接地的按键被按下;c.按如下方法检测位于n×m矩阵交点上的按键将第i条行导线置为低电平;扫描第k条行导线是否为低电平,k≠i;若是,则第k条列导线与第i条行导线的交点上的按键被按下。
本发明的有益效果是,提供一种多按键检测系统及其方法,节约了印制电路板和整机的空间,降低了系统成本。
以下结合具体实施方式
和附图,对本发明作进一步说明。


图1是4×4矩阵按键扫描电路图。
图2是本发明实施方式的电路图。
图3是分发明实施方式流程图。
图4是本发明实施例1的电路图
具体实施例方式
本发明的按键系统,包括按键编码集成电路(MCU),n(n>1)条行导线与n条列导线,n只二极管,n2个按键,以及n只电阻;按照如图2所示的电路图连接n条行导线分别通过电阻与电源连接,n条行导线一端分别与MCU的通用输入输出(GPIO)接口连接,一端通过按键接地,为了简化电路,n条行导线的接地端分别与一条接地的导线连接,行导线通过按键接地起到静电放电防护的作用;n条行导线与n条列导线以n×n矩阵分布,构成n2个交点,为了电路图布局方便和简化按键检测方法,n只二极管分布于n×n矩阵对角线上的n个交点上,二极管阳极接行导线,阴极接列导线,且每条行导线最多与一只二极管的阳极连接,每条列导线与一只二极管的阴极连接,能防止电路短路;其余n2-n个交点上则分布按键,按键按下时,行导线和列导线接通。
对图2中n2个按键分别定义为K1、K2、K3…Kn;n只二极管分别定义为D1、D2、D3…Dn;n只电阻分别定义为R1、R2、R3…Rn;连接行导线的MCU的GPIO口线分别定义为KEY1、KEY2、KEY3…KEYn,对应的行导线分别为第1条行导线、第2条行导线、第3条行导线…第n条行导线。通过对MCU的GPIO的口线置为高/低电平(高电平指模拟电压大于等于3V,逻辑电平定义为1;低电平指模拟电压小于3V,逻辑电平定义为0),实现了将所对应连接的行导线置为高/低电平。
对图2中n2个按键分别定义为K1、K2、K3…Kn;n只二极管分别定义为D1、D2、D3…Dn;n只电阻分别定义为R1、R2、R3…Rn;连接行导线的MCU的GPIO口线分别定义为KEY1、KEY2、KEY3…KEYn,对应的行导线分别为第1条行导线、第2条行导线、第3条行导线…第n条行导线。通过对KEY1、KEY2、KEY3…KEYn置为高/低电平(高电平指模拟电压大于等于3V,逻辑电平定义为1;低电平指模拟电压小于3V,逻辑电平定义为0),使KEY1、KEY2、KEY3…KEYn所对应连接的行导线被置为高/低电平,结合图3,对图2所示的电路图的按键检测方法具体实现如下步骤S302将KEY1、KEY2、KEY3…KEYn置为高电平,MCU依次扫描KEY1、KEY2、KEY3…KEYn的电平状态;步骤S303判断是否有低电平出现,无低电平出现,则进入步骤S305;有低电平出现,则进入步骤S304,表示有按键被按下,即检测到电平为低电平的行导线上接地的按键被按下。设电平为低电平的行导线连接的MCU的GPIO口线为KEYx(x∈n),则检测到Kx按键被按下,本次按键检测结束;
步骤S305初始化k为1;步骤S306初始化i为1,初始化计数值为0;步骤S307判断i是否等于k,i等于k,则进入步骤S308;i不等于k,则进入步骤S309;步骤S308i的值加1;步骤S309先将KEY1、KEY2、KEY3…KEYn置为高电平,再将KEYi置为低电平;扫描KEYk的电平状态;步骤S310判断是否有低电平出现,无低电平出现,则进入步骤S311;有低电平出现,则进入步骤S304,表示有按键被按下,即检测到n×n矩阵上位于第k条列导线和第i条行导线的交点上的按键被按下;步骤S311计数值的值加1;步骤S312判断计数值是否等于n-1,计数值等于n-1,则进入步骤S316;计数值不等于n-1,则进入步骤S313;步骤S313i的值加1;步骤S314判断i的值是否等于k的值,i等于k,则进入步骤S315;i不等于k,则返回步骤S309;步骤S315i的值加1后返回步骤S309;步骤S316判断k的值是否等于n,k等于n,则进入步骤S318;k不等于n否,则进入步骤S317;步骤S317k的值加1后返回步骤S306。
步骤S318没有检测到有按键被按下,程序结束。
结合图2中的按键标识,进一步说明检测按键Kn+1、Kn+2、Kn+3…Kn2是否被按下的实现方法先将KEY1、KEY2、KEY3…KEYn置为高电平,再将KEY2置为低电平,MCU扫描KEY1的状态;判断是否有低电平出现,有低电平出现,则说明Kn+1按键被按下;无低电平出现,则先将KEY1、KEY2、KEY3…KEYn置为高电平,再将KEY3置为低电平,MCU扫描KEY1的状态;判断是否有低电平出现,有低电平出现,则说明Kn+2按键被按下;无低电平出现,则依次类推,即先将KEY1、KEY2、KEY3…KEYn置高电平,再依次分别将KEY2、KEY3…KEYn置为低电平,在每次置低电平期间,MCU扫描KEY1的状态,判断是否有低电平出现,有低电平出现,则可以依次确定按键Kn+1、Kn+2…K2n-1被按下。
同理可得,先将KEY1、KEY2、KEY3…KEYn置为高电平,再依次分别将KEY1、KEY3…KEYn置为低电平,在每次置低电平期间,MCU扫描KEY2的状态,判断是否有低电平出现,有低电平出现,则可以依次确定按键K2n、K2n+1…K3n-2被按下。依次类推,先将KEY1、KEY2、KEY3…KEYn置为高电平,再依次分别将KEY1、KEY2、KEY3…KEYn-1置为低电平,在每次置低电平期间,MCU扫描KEYn的状态,判断是否有低电平出现,有低电平出现,则可以依次确定按键Kn2-n、Kn2-n+1、Kn2-n+2…Kn2被按下。
本发明的上述具体实施方式
,实现了通过n个通用输入输出口线完成对n×n个按键的检测,比现有的矩阵式扫描电路减少了一半的通用输入输出口线,行导线通过按键接地,不仅有效防止了静电放电,还简化了按键检测方法,对于行导线上接地的按键,当将n条行导线置为高电平后,直接扫描每条行导线的电平状态就可以确定出该条行导线上接地的按键是否被按下;另外,二极管分布在n×n矩阵的对角线上时,二极管所处的行导线和列导线为(k,k),k是一个公差为1递增数列,从1递增到n,简化了按键检测方法的程序实现。
实施例1按键电路图如图4所示KEY1~KEY4分别表示4个GPIO口线,D1~D4分别表示4只二极管,K1~K16分别表示16个按键,R1~R4分别表示4只电阻;4条行导线分别通过电阻(D1~D4)与电源连接;4条行导线一端通过按键(K1~K4)接地,一端分别与MCU的GPIO口线(KEY1~KEY4)连接;4条行导线与4条列导线以4×4矩阵分布,构成42个交点,4只二极管(D1~D4)分布于4×4矩阵对角线上的4个交点上,二极管阳极接行导线,阴极接列导线;其余42-4个交点上则分布按键(K5~K16),按键按下时,行导线和列导线接通。
若按键K3被按下,结合图3,本发明的检测过程如下将KEY1、KEY2、KEY3、KEY4置为高电平,MCU依次对KEY1、KEY2、KEY3、KEY4进行扫描,因为KEY3出现低电平,则检测到第3条行导线上与地接通的按键(按键K3)被按下,本次按键检测结束。
若按键K9被按下,结合图3,本发明的检测过程如下第一步先将KEY1、KEY2、KEY3、KEY4置为高电平,MCU依次对KEY1、KEY2、KEY3、KEY4进行扫描,没有检测到低电平,则可以排除被按下的按键不是接地的四个按键(K1、K2、K3、K4)之一,进入下一步;
第二步初始化k的值为1,i的值为1,即KEYk为KEY1,KEYi为KEY1;初始化计数值为0;因为KEYi等于KEYk;则i的值加1,KEYi变为KEY2;先将KEY1、KEY2、KEY3、KEY4置高电平,再将KEYi(KEY2)置为低电平,MCU扫描KEYk(KEY1)的电平状态;KEY1为高电平;则计数值的值加1,计数值变为1;因为计数值不等于n-1(3),则i的值加1,i为3;因为i=3,k=1,i≠k,则先将KEY1、KEY2、KEY3、KEY4置高电平,KEYi(KEY3)置为低电平,MCU扫描KEY1的电平状态,KEY1为高电平;则计数值的值加1,计数值变为2;因为计数值不等于n-1(3),则i的值加1,i为4;因为i=4,k=1,i≠k,则先将KEY1、KEY2、KEY3、KEY4置高电平,KEY4置低电平,MCU扫描KEY1的状态,KEY1为高电平,此时可以确定被按下的按键不在第1条列导线上,进入下一步;第三步k的值加1,则KEYk为KEY2;初始化i的值为1,即KEYi为KEY1,初始化计数值为0;因为i=1,k=2,i≠k,先将KEY1、KEY2、KEY3、KEY4置高电平,再将KEYi(KEY1)置低电平,MCU扫描KEYk(KEY2)的状态,KEY2为高电平,则计数值的值加1,计数值变为1;因为计数值不等于n-1(3),则i的值加1,i为2;因为i=k=2,则i的值加1,i为3即KEYi变为KEY3;先将KEY1、KEY2、KEY3、KEY4置高电平,KEYi(KEY3)置为低电平,MCU扫描KEY2的电平状态,KEY2为低电平;则检测到4×4矩阵上位于第2条列导线和接KEY3的行导线(即第3条行导线)交点上的按键(按键K9)被按下,即由D2所在的列导线确定被按下键所在的列导线,由被置为低电平的KEY3所连接的行导线确定被按下键所在的行导线,本次按键检测结束。
以上虽然结合附图描述了本发明的实施方式,但是本领域的技术人员可以在所附权力要球的范围内做出各种变形或修改,例如根据等效的原则,将权利要求书中所述的技术方案改为阴极接行导线,阳极接列导线;行导线通过按键接电源,行导线通过电阻接地。按键检测时,将权利要求书中所述的置为高电平的技术方案改为置为低电平;置为低电平的技术方案改为置为高电平。对于上述的等效变形,同样属于本发明所要求保护的范围。
权利要求
1.按键系统,其特征是,包括按键编码集成电路、n条行导线、m条列导线、m只二极管,且n≥m>1;行导线与按键编码集成电路连接;n条行导线与m条列导线以n×m矩阵分布,m只二极管分布于所述矩阵的交点上,二极管阳极接行导线,阴极接列导线,且每条行导线最多与一只二极管的阳极连接,每条列导线与一只二极管的阴极连接;所述矩阵的其余交点上则分布按键,所述按键按下时,行导线和列导线接通。
2.如权利要1所述的按键系统,其特征是,所述行导线通过按键接地。
3.如权利要1或2所述的按键系统,其特征是,所述m只二极管分布于所述矩阵对角线的交点上。
4.如权利要求3所述的按键系统,其特征是,还包括n只电阻,所述n条行导线分别通过电阻与电源连接。
5.按键系统的按键检测方法,包括下列步骤a.将n条行导线置为高电平,然后扫描n条行导线,判断是否有低电平出现,有低电平出现则进入步骤b,无低电平出现则进入步骤c;b.检测到电平为低电平的行导线上接地的按键被按下;c.按如下方法检测位于n×m矩阵交点上的按键将第i条行导线置为低电平;扫描第j条行导线是否为低电平,j≠i;若是,则第j条行导线通过二极管连接的列导线与第i条行导线的交点上的按键被按下。
6.如权利要求书5所述的按键系统的按键检测方法,其特征是,m只二极管分布于n×m矩阵对角线上的交点上,所述步骤c为将第i条行导线置为低电平;扫描第k条行导线是否为低电平,k≠i;若是,则第k条列导线与第i条行导线的交点上的按键被按下。
全文摘要
按键系统及其检测方法,涉及电子技术,特别涉及按键的扫描检测技术。本发明针对现有矩阵按键扫描电路占用硬件资源多,系统成本高的问题,公开了一种按键系统及其检测方法。本发明的按键系统,包括按键编码集成电路、n条行导线、m条列导线、m只二极管,且n≥m>1;n条行导线与m条列导线以n×m矩阵分布,n条行导线接按键编码集成电路,m条列导线分别通过二极管与行导线连接,n×m矩阵的其余交点上则分布按键,按键按下时,行导线和列导线接通;本发明还公开了上述按键系统的按键检测方法。本发明的有益效果是,节约了印制电路板和整机的空间,降低了系统成本。
文档编号H03M11/20GK101079637SQ20071004916
公开日2007年11月28日 申请日期2007年5月24日 优先权日2007年5月24日
发明者付强 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1