按键扫描方法和低压电器的控制器与流程

文档序号:11180221阅读:289来源:国知局
按键扫描方法和低压电器的控制器与流程

本发明涉及低压电器领域,特别涉及一种按键扫描方法和低压电器的控制器。



背景技术:

现有智能型的低压电器,包括断路器、变频器、接触器、继电器等的控制器,在矩阵键盘的扫描方式上,常见的扫描方式分为中断扫描和定时扫描方式,中断扫描以按键中断信号为扫描入口,定时扫描以定时服务为扫描入口。在现有的按键扫描中,按键消抖都是采用时间耗尽的方式进行消抖;按键值扫描时只进行单一的逐行扫描;在按键增加和删除时,都需要对软件进行修改,移植性差。

另外,低压电器的矩阵式键盘由于空间限制,通常无法设置过多的按键,而且在使用时每个按键只能实现单一的功能,导致无法满足应用的需要,或者需要用户进行多次操作选择,导致用户操作过于复杂。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种按键扫描方法,可以区分同一按键的短按键操作和长按键操作,使得同一按键可以实现不同的功能,还提供了一种低压电器的控制器。

为实现上述目的,本发明采用了如下技术方案:

一种按键扫描方法,比较连续两次扫描获取的按键值,如果为相同的按键值,则将后续规定时间内扫描获得的按键值与前面两次所获取的按键值比较;如果在后续规定时间内有一次按键扫描获取的按键值与前面两次所获取的按键值不相同,则所获取的按键类型为短按键操作;如果在后续规定时间内每次扫描所获取的按键值均与前面两次所获取的按键值相同,则所获取的按键类型 为长按键操作。

进一步,在同一时间检测到有多个按键值同时有效时,则为组合按键操作。

进一步,当按键为长按键操作时,按键扫描时间到达后,系统继续对按键进行扫描,当所扫描到的按键值发生变化时,则认为该长按键已经被释放,此时所获取的按键类型为长按键释放操作。

进一步,每次按键扫描包括防止按键抖动的验证扫描,每次按键扫描包括以下步骤:

a,判断消抖时间是否耗尽,如果耗尽,进入步骤b,否则重复步骤a;

b,获取具体按键值;

c,判断获取的按键值是否有效;如果扫描到按键值为有效按键值时,则进行步骤d,如果扫描到的按键值为无效按键值,则表示没有获取到按键值,扫描结束;

d,对扫描到的按键次数进行判断:扫描到的按键次数不是第一次时,对扫描到的按键次数进行复位操作,进入步骤e,扫描到的按键次数是第一次时,则保存当前获取的按键值,标识按键次数并设置消抖时间,进入步骤a;

e,对当前获取的按键值进行判断:当获取的按键值与上一次获取的按键值相同时,得到扫描的按键值,如果获取的按键值与上一次获取的按键值不同,则表示获取按键值无效。

进一步,在步骤e中,如果获取的按键值与上一次获取的按键值不同,则为无效按键操作。

一种低压电器的控制器,包括按键电路和与按键电路连接的控制单元,所述控制单元根据预设的扫描时间定时采用权利要求1-5任一所述的按键扫描方法对按键电路进行扫描获得按键值。

进一步,所述按键电路在按键被按下时向控制单元发送中断信号,控制单元在收到中断信号后采用权利要求1-5任一所述的按键扫描方法对按键电路进行扫描获得按键值。

进一步,所述按键电路包括中断信号电路和键盘电路,所述键盘电路包括 按n行n列排列的n*n个按键的矩阵键盘,中断信号电路用于按键值的输出,所述n*n个按键的矩阵键盘的每行按键分别通过一根行扫描线连接,每列按键分别通过一根列扫描线连接,所述中断信号电路包括n个二极管组成的第一组开关二极管和另外n个二极管组成的第二组开关二极管;所述第二组开关二极管的n个二极管的正极分别和n列扫描线连接,第二组开关二极管的n个二极管的负极分别与电阻r302的一端连接,电阻r302的另一端与三极管q301的基极连接,三极管q301的集电极连接至第n+1个i/o端口key_int,按键电路在按键被按下时通过第n+1个i/o端口key_int向控制单元发送中断信号,三极管q301的发射极接地;n列扫描线的一端与第一组开关二极管的n个二极管的正极连接,第一组开关二极管的n个二极管的负极与n行扫描线连接,n行扫描线与n个i/o端口(key_p1,……,key_pn)连接。

进一步,获取按键值时,先将需要扫描的相应行的i/o端口设为输出,并配置为高电平,再将其余的i/o端口设为输入,然后检测每个i/o端口的值,再将该数值加上该行的序号值,即为相应行的值;依次获取n行的按键值,再将获取到的n行按键值组合成一个值,即可获取多行按键值。

进一步,所述中断信号电路的每一根列扫描线通过n个电阻接地,所述第n+1个i/o端口key_int通过第n+1个电阻接地低压电器的控制器;所述中断信号电路还包括电阻r301,电阻r301的一端与三极管q301的集电极连接,另一端与电源连接。

本发明的目的在于克服现有技术的缺陷,提供一种按键扫描方法和低压电器的控制器,可以区分同一按键的短按键操作和长按键操作,使得同一按键可以实现不同的功能,还提供了一种低压电器的控制器。

附图说明

图1是本发明中断扫描方式的流程框图;

图2是本发明定时扫描方式流程框图;

图3是本发明按键扫描方法获取按键值的流程图;

图4是本发明另一种按键扫描方法的流程图;

图5是本发明键盘电路的电路图;

图6是本发明中断信号电路的电路图。

具体实施方式

以下结合附图1至6给出的实施例,进一步说明本发明的按键扫描方法和低压电器的控制器的具体实施方式。本发明的按键扫描方法和低压电器的控制器不限于以下实施例的描述。

本发明的一种按键扫描方法,包括以下步骤:

a,判断消抖时间是否耗尽,如果耗尽,进入步骤b,否则重复步骤a;

b,获取具体按键值;

c,判断获取的按键值是否有效;如果扫描到按键值为有效按键值时,则进行步骤d,如果扫描到的按键值为无效按键值,则表示没有获取到按键值,扫描结束;

d,对扫描到的按键次数进行判断:扫描到的按键次数不是第一次时,对扫描到的按键次数和消抖时间进行复位操作,进入步骤e,扫描的按键次数是第一次时,则保存当前获取的按键值,标识按键次数并设置消抖时间,进入步骤a;

e,对当前获取的按键值进行判断:当获取的按键值与上一次获取的按键值相同时,得到扫描的按键值,如果获取的按键值与上一次获取的按键值不同,则表示获取按键值无效。

本发明按键扫描方法,通过对按键进行连续两次扫描,并进行确认,只有连续两次扫描的按键值一致时,才认为按键有效,,两次的扫描间隔时间大于按键抖动时间,从而实现按键消抖功能。这里的按键次数是指系统内部所扫描到的按键次数,但未必是用户实际按了多次按键,因为采用的是扫描方式(每间隔一定时间扫描一次,检测是否有按键按下),故当用户单次按下按键的时间较长时(超过扫描间隔时间时)与系统实际扫描到按键次数并不相同。

如图1所示,本发明的按键扫描方法的第一种实施例:中断扫描方式。

(1)当检测到按键中断信号后,置中断标志位。

(2)判断按键消抖时间是否耗尽:如果耗尽当按键消抖时间耗尽,扫描具体的按键值;否则重复步骤(2)。

(3)获取具体按键值。

(4)判断获取的按键值是否有效:如果扫描到的按键值为有效按键值时,则进行有效按键次数判断;如果扫描到的按键值为无效按键值,则表示没有获取到按键值,对按键次数、扫描标志、中断标志进行复位操作。

(5)进行按键的次数判断:按键并不是第一次按下时,对按键次数、扫描标志、中断标志进行复位操作;如果按键为第一次按下,则保存当前获取的按键值,并将扫描标志和中断标志复位、消抖时间重置、按键次数加一,然后进行步骤(2)。

(6)对当前获取的按键值进行判断:当获取的按键值与上一次获取的按键值相同时,将按键值进行缓存,以备按键处理时使用;如果获取的按键值与上一次获取的按键值不同,则表示获取按键值无效。

(7)重新配置引脚功能,将中断引脚以外的引脚都配置为高电平输出状态。不管获取到按键值有效,还是无效,都需要重新配置引脚功能。

(8)此时一次按键中断扫描结束。

当检测到按键中断信号后,置中断标志位,刚开始时间t=0直接进行第一次按键扫描,再一次按键确认扫描时,需要按键消抖时间耗尽后,扫描具体的按键值。当扫描到的按键值为有效按键值时,则进行按键的次数判断,按键并不是第一次按下时,对按键次数、扫描标志、中断标志进行复位操作,按键是第一次按下,则保存当前获取的按键值,并将扫描标志、中断标志复位、消抖时间重置、进行再一次的确认扫描。获取的按键值与上一次获取的按键值相同时,将按键值进行缓存,以备按键处理时使用。获取到按键值之后重新配置引脚功能,将中断引脚以外的引脚都配置为高电平输出状态,此时一次按键中断扫描结束。

在按键获取过程中,对于一次检测到按键按下时,需要保存当前获取的按键值,并将扫描标志和中断标志复位、消抖时间重置、按键次数加一。之后通过再进行一次按键扫描,在这个过程中起到一个按键消抖的作用。

如图2所示,本发明的按键扫描方法的第二种实施例:定时扫描方式。

(1)定时扫描开始,系统进入定时服务程序。

(2)判断定时扫描时间是否到达:当时间到达后,扫描具体按键值;如果 时间还未达到,则重复步骤(2)。

(3)获取具体按键值。

(4)判断获取的按键值是否有效:如果扫描到的按键值为有效按键值时,则进行按键的次数判断;如果扫描到的按键值为无效按键值,则表示没有获取到按键值。

(5)进行按键次数判断:如果按键为第一次按下,则保存当前获取的按键值,并将按键次数加一,然后进行步骤(2);按键并不是第一次按下时,对按键次数进行复位操作,并对获取到的有效按键值进行判断。

(6)对当前获取的按键值进行判断:当获取的按键值与上一次获取的按键值相同时,将按键值进行缓存,以备按键处理时调出使用;如果获取的按键值与上一次获取的按键值不同,则表示获取按键值无效,对按键次数进行复位操作。

(7)不管获取到按键值有效,还是无效,此时一次按键定时扫描处理结束。

在系统配置中设置好定时处理服务程序,定时服务启动后开始扫描,当按键扫描时间达到后,进入到扫描具体按键值状态。如果扫描到的按键值为有效按键值时,则进行按键的次数判断;如果扫描到的按键值为无效按键值,则表示没有获取到按键值。如果按键并不是第一次按下时,对按键次数进行复位操作,并对获取到的有效按键值进行判断。当获取的按键值与上一次获取的按键值相同时,将按键值进行缓存,以备按键处理时调出使用;如果获取的按键值与上一次获取的按键值不同,则表示获取按键值无效,对按键次数进行复位操作。

在按键获取过程中,通过再进行一次按键扫描,在这个过程中起到一个按键消抖的作用。

如图3所示,按键值的具体获取过程,按键值获取过程中,可以获取其中任意一行的按键值,也可以获取其中几行的按键值,也可以获取所有行数的按键值,以获取四行的按键值为例,如图3所示:

获取第一行按键值:先将key-p2、key-p3、key-p4和key-int四个io口设为输入,将key-p1的io口设为输出,将key-p1置为高电平,然后检测key-p1、key-p2、key-p3、key-p4和key-int这五个io口的值,再将该数值加1,即为 第一行的按键值;

获取第二行按键值:先将key-p1、key-p3、key-p4和key-int四个io口设为输入,将key-p2的io口设为输出,将key-p2置为高电平,然后检测key-p1、key-p2、key-p3、key-p4和key-int这五个io口的值,再将该数值加2,即为第二行的按键值;

获取第三行按键值:先将key-p1、key-p2、key-p4和key-int四个io口设为输入,将key-p3的io口设为输出,将key-p3置为高电平,然后检测key-p1、key-p2、key-p3、key-p4和key-int这五个io口的值,再将该数值加3,即为第三行的按键值;

获取第四行按键值:先将key-p1、key-p2、key-p3和key-int四个io口设为输入,将key-p4的io口设为输出,将key-p4置为高电平,然后检测key-p1、key-p2、key-p3、key-p4和key-int这五个io口的值,再将该数值加4,即为第四行的按键值;

将获取到的四行按键值,组合成一个值,即为最终获取到的按键值。

显而易见,按键值扫描时,可以对任意一行进行扫描,或者对其中几行进行扫描,也可以对所有行进行扫描。

如图4所示,本发明还提供了另外一种按键扫描方法:比较两次连续扫描获取的按键值,如果为相同的按键值,则将后续规定时间内扫描获得的按键值与前面两次所获取的按键值比较;如果在后续规定时间内有一次按键扫描获取的按键值与前面两次所获取的按键值不相同,则所获取的按键类型为短按键操作;如果在后续规定时间内每次扫描所获取的按键值均与前面两次所获取的按键值相同,则所获取的按键类型为长按键操作。本发明按键扫描方法,可以区分同一按键的短按键操作和长按键操作,使得同一按键可以实现不同的功能,节约按键,降低成本。

因硬件具备初始条件,当没有任何按键按下时的初始按键值,作为一个无效按键,此时相应的按键类为无按键操作,同理,也是通过检测该按键值作为检测按键是否已经被释放的判断条件之一。同理,当系统连续两次扫描所获取到的按键值虽不属于无效按键值,但连续两次的按键值却不同(说明在扫描时间内按键发生了变化),此时,相应的按键类型为无效按键操作。

特别地,在同一时间检测到有多个按键值同时有效时,则为组合按键操作。采用组合按键可以带来更为多样的按键形式,从而实现更多的功能。

特别地,当按键为长按键操作时,按键扫描时间到达后,系统继续对按键进行扫描,当所扫描到的按键值发生变化时,则认为该长按键已经被释放,此时所获取的按键类型为长按键释放操作。

本发明还提供了一种实现上述按键扫描方法的低压电器的控制器。包括按键电路和与按键电路连接的控制单元,所述控制单元根据预设的扫描时间定时采用上述的按键扫描方法对按键电路进行扫描获得按键值。所述按键电路在按键被按下时向控制单元发送中断信号,控制单元在收到中断信号后采用上述的按键扫描方法对按键电路进行扫描获得按键值。

如图5、6所示,所述按键电路包括中断信号电路和键盘电路,所述键盘电路包括按n行n列排列的n*n个按键的矩阵键盘,中断信号电路用于按键值的输出,所述n*n个按键的矩阵键盘的每行按键分别通过一根行扫描线连接,每列按键分别通过一根列扫描线连接,所述中断信号电路包括n个二极管组成的第一组开关二极管和另外n个二极管组成的第二组开关二极管;所述第二组开关二极管的n个二极管的正极分别和n列扫描线连接,第二组开关二极管的n个二极管的负极分别与电阻r302的一端连接,电阻r302的另一端与三极管q301的基极连接,三极管q301的集电极连接至第n+1个i/o端口key_int,按键电路在按键被按下时通过第n+1个i/o端口key_int向控制单元发送中断信号,三极管q301的发射极接地;n列扫描线的一端与第一组开关二极管的n个二极管的正极连接,第一组开关二极管的n个二极管的负极与n行扫描线连接,n行扫描线与n个i/o端口(key_p1,……,key_pn)连接。图中实施例中断信号电路和键盘电路为独立设置,两者之间通过接线排连接在一起。

具体地,所述中断信号电路的每一根列扫描线通过n个电阻接地,所述第n+1个i/o端口key_int通过第n+1个电阻接地。所述中断信号电路还包括电阻r301,电阻r301的一端与三极管q301的集电极连接,另一端与3.3v电源正极连接。

具体地,扫描到的按键值为无效按键值后,重新配置引脚功能,将i/o端口key_int以外的i/o端口(key_p1,……,key_pn)都配置为高电平输出状 态。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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