发明内容
有鉴于此,本发明提供一种消除按键抖动的方法、装置及键盘,其能消除按键抖动,在按键闭合稳定期内读取非正常按键采样信号值的时也能正确识别按键,同时能够提高MCU的运行效率。
为了实现上述目的,本发明提供一种消除按键抖动的方法,所述方法包括如下步骤:
获取按键电路的采样信号值;
判断所述采样信号值是否在按键参考值范围内,所述按键参考值范围为预定义的正常采样信号取值范围,每个按键分别对应一按键参考值范围;
若所述采样信号值在其中一个按键的按键参考值范围内,则将该按键的按键类型变量计数累加一次;
多次采样后,将按键类型变量计数最多的按键作为有效按键处理。
根据本发明的消除按键抖动的方法,所述消除按键抖动的方法还包括:若所述采样信号值不在所述按键参考值范围内,则再次获取采样信号值,若再次获取的采样信号值不在预设的无按键时采样信号取值范围内,则作为异常跳变处理。
根据本发明的消除按键抖动的方法,所述采样信号值为ADC值、电压值或电流值。
根据本发明的消除按键抖动的方法,若所述采样信号值在其中一个按键的按键参考值范围内,还包括:判断按键状态变量是否标记为按键按下状态,所述按键状态变量用于标记键盘处于按键按下状态或按键未按下状态;若按键状态变量标记为按键未按下状态,则将所述按键状态变量修改标记为按键按下状态,同时按键计时开始。
根据本发明的消除按键抖动的方法,若所述再次获取的采样信号值在预设的无按键时采样信号取值范围内,且所述按键状态变量标记为按键按下状态则按键计时结束,同时将所述按键状态变量修改为按键未按下状态。
根据本发明的消除按键抖动的方法,按键计时开始后,若按键状态变量为按键按下状态,且按键计时达到预设的按键长按时间,则执行按键长按操作。
根据本发明的消除按键抖动的方法,按键计时结束时,按键计时到达预设的按键短按时间而未到达预设的按键长按时间,则执行按键短按操作。
本发明相应提供一种消除按键抖动的装置,所述装置包括:
采样电路,用于获取按键电路的采样信号;
计数器,用于当所述采样电路获取的采样信号值在其中一个按键的按键参考值范围内,则将该按键的按键计数次数累加一次,所述按键参考值范围为预定义的正常采样信号取值范围,且每个按键分别对应一按键参考值范围;
处理器,用于将所述计数器中按键计数次数最多的按键作为有效按键处理。
根据本发明的消除按键抖动的装置,若采样电路获取的采样信号值不在所述按键参考值范围内,则采样电路再次获取采样信号值,若再次获取的采样信号值不在预设的无按键时采样信号取值范围内,则作为异常跳变处理。
根据本发明的消除按键抖动的装置,所述采样信号值为ADC值、电压值或电流值。
根据本发明的消除按键抖动的装置,若所述采样电路获取的采样信号值在其中一个按键的按键参考值范围内,还包括:
判断按键状态变量是否标记为按键按下状态,所述按键状态变量用于标记键盘处于按键按下状态或按键未按下状态;
若按键状态变量标记为按键未按下状态,则将所述按键状态变量修改标记为按键按下状态,同时按键计时开始。
根据本发明的消除按键抖动的装置,若所述再次获取的采样信号值在预设的无按键时采样信号取值范围内,且所述按键状态变量标记为按键按下状态则按键计时结束,同时将所述按键状态变量修改为按键未按下状态。
根据本发明的消除按键抖动的装置,按键计时开始后,若按键状态变量为按键按下状态,且按键计时达到预设的按键长按时间,则执行按键长按操作;按键计时结束时,按键计时到达预设的按键短按时间而未到达预设的按键长按时间,则执行按键短按操作。
本发明还提供一种键盘,包括键盘盘体、设于所述键盘盘体表面的按键以及位于所述键盘盘体内的按键电路,所述键盘还包括如上述的消除按键抖动的装置,所述消除按键按键抖动的装置与按键电路连接。
本发明通过获取按键电路的信号采样值,并判断该信号采样值是否在预定义的正常采样信号取值范围内,若在该范围内,则将该信号采样值对应的按键类型变量的计数累加一次,最后经过多次采样,通过对比各按键类型变量的计数,将按键类型变量计数最多的按键作为有效按键处理。在按键按下并保持闭合稳定的时间内,出现了读取异常采样信号值的情况,也能通过判断该采样信号值是否在正常采样信号取值范围内来排除该异常采样信号值,即使该异常采样信号值在正常采样信号取值范围内,也能通过多次采样,统计按键的按键类型变量计数,将按键类型变量计数最多的按键作为有效按键处理。同时,本案采用循环方式读取按键电路信号采样值,在读取信号采样值的间隙执行程序其他功能,而未使用延时方法读取按键电路信号采样值,提高了MCU的运行效率。借此,本发明能消除按键抖动,在按键闭合稳定期内读取非正常按键采样信号值的时也能正确识别按键,同时能够提高MCU的运行效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,一下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图2所示,本发明一种消除按键抖动的方法,其包括如下步骤:
步骤S201,获取按键电路的采样信号值,该采样信号值为ADC值、电压值或电流值。
步骤S202,判断采样信号值是否在按键参考值范围内,按键参考值范围为预定义的正常采样信号取值范围,每个按键分别对应一按键参考值范围。例如按键电路有三个按键,三个按键A、B、C的正常采样信号取值(ADC值)范围分别为(180~200)、(210~230)、(240~260),若获取的采样信号值为500,则该采样信号值不在这三个按键的正常采样信号取值范围内,丢弃该采样信号值。
步骤S203,若采样信号值在其中一个按键的按键参考值范围内,则将该按键的按键类型变量计数累加一次。按键类型变量用于记录按键的类型(如按键A、按键B或按键C)。如前所述,若采样信号值为220,该采样信号值在按键B的正常采样信号取值范围内,即在按键B的按键参考值范围内,则将按键B的按键类型变量计数累加一次。
步骤S204,多次采样后,将按键计数最多的按键作为有效按键处理。例如进行了8次采样,其中有1次的采样信号值不在A、B、C按键的按键参考值范围内,有6次采样信号值落入按键B的按键参考值范围内,有1次采样信号值落入按键C的按键参考值范围内,则按键C的按键类型变量计数最多,将按键B作为有效按键处理。
本发明通过获取按键电路的信号采样值,并判断该信号采样值是否在预定义的正常采样信号取值范围内,若在该范围内,则将该信号采样值对应的按键类型变量的计数累加一次,最后经过多次采样,通过对比各按键类型变量的计数,将按键类型变量计数最多的按键作为有效按键处理。在按键按下并保持闭合稳定的时间内,出现了读取异常采样信号值的情况,也能通过判断该采样信号值是否在正常采样信号取值范围内来排除该异常采样信号值,即使该异常采样信号值在正常采样信号取值范围内,也能通过多次采样,统计按键的按键类型变量计数,将按键类型变量计数最多的按键作为有效按键处理。借此,本发明能消除按键抖动,在按键闭合稳定期内读取非正常按键采样信号值的时也能正确识别按键。
本发明的按键被按下的时候,软件开始进行循环读取,每隔一段时间读取一次信号采样值,采用循环方式读取按键电路信号采样值,在读取信号采样值的间隙执行程序其他功能,而未使用延时方法读取按键电路信号采样值,提高了MCU的运行效率。
优选地,在步骤S203中,“若采样信号值在其中一个按键的按键参考值范围内”之后还包括:判断按键状态变量是否处于按键按下标记状态,按键状态变量用于标记键盘处于按键按下状态或按键未按下状态;若按键状态变量标记为按键未按下状态,则将按键状态变量修改标记为按键按下状态,同时按键计时开始。也即,在首次接收到正常采样信号值之前,按键状态变量标记为没有按键按下,在首次收到正常采样信号值时,将按键状态变量修改标记为有按键按下。
优选地,经过步骤S202的判断,若采样信号值不在按键参考值范围内,则再次获取采样信号值,若再次获取的采样信号值不在预设的无按键时采样信号取值范围内(包括再次获取的采样信号值在按键参考值范围内或者不在按键参考值范围内),则作为异常跳变处理;若再次获取的采样信号值在预设的无按键时采样信号取值范围内,且按键状态变量标记为按键按下状态则按键计时结束,同时将按键状态变量修改为按键未按下状态。由按键计时开始至按键计时结束为一次按键的按键过程。也即,若连续两次采集的采样信号值均不在按键参考值范围内,而且第二次采集的采样信号值在无按键时采样信号取值范围内,则说明按键结束。
按键计时开始后,若按键状态变量标记为按键按下状态,且按键计时达到预设的按键长按时间,则执行按键长按操作,也即在按键按下的时间到达预设的按键长按时间前还未接收到按键结束的信息,作为按键长按处理;按键计时结束时,按键计时到达预设的按键短按时间而未到达预设的按键长按时间,则执行按键短按操作,也即从按键计时开始到按键计时结束所统计的时间只到达按键短按时间而未到达按键长按时间,作为按键短按处理。
图3示出了本发明的一种具体实施例,其流程主要包括以下步骤:
步骤S301,读取键盘电路的ADC值,并保存到变量A中。
在步骤S301之前还包括首先对各个变量进行定义:定义记录键盘电路ADC值的变量A、定义记录一次完整按键过程(包括按键的按下和弹起)的标记变量B1,定义记录按键按下的标记变量B2,定义记录按下按键的按键类型变量K,记录按键时间的变量T,定义记录读取到的所有按键类型数组变量K[10],定义记录读取到的所有按键的按键次数数组变量C[10]。
步骤S302,判断变量A中保存的ADC值是否在预定义的按键ADC值范围内,是则进入步骤S303,否则进入步骤S304。该预定义的按键ADC值范围即为预定义的正常ADC取值范围。
步骤S303,判断变量B2是否标记按键按下,若是则转到步骤S306,否则进入步骤S305。
步骤S304,再次读取键盘电路的ADC值,并进入步骤S314。
步骤S305,标记B2为按键按下状态,B1为未完成按键过程状态,记录当前按键类型,保存到变量K中,设置按键类型数组变量K[0]等于K,按键次数数组变量C[0]增加一次,此时变量T开始计时。
步骤S306,判断按键类型数组变量K[0]保存的类型是否等于当前按下的按键类型K,是则进入步骤S307,否则进入步骤S308。
步骤S307,按键次数数组变量C[0]增加一次,
步骤S308,保存当前按下的按键类型K到按键类型数组变量K[1]中,当前按键类型K对应的按键次数数组变量C[1]增加一次。
步骤S309,判断C[0]是否大于C[1],是则进入步骤S310;若否则进入步骤S311。
步骤S310,置K等于K[0],K有效。K有效则将K作为有效按键处理。
步骤S311,判断C[0]是否小于C[1],是则进入步骤S312;否则说明C[0]等于C[1],并进入步骤S313。
步骤S312,置K等于K[1],K有效。
步骤S313,置K为无效值。
步骤S314,判断再次读取的ADC值是否在预设的无按键时ADC值范围内,是则进入步骤S315,否则回到步骤S301。本步骤主要用于为了判断不在范围的ADC值是异常跳变还是正常按键放开导致。
步骤S315,判断B2是否为按下状态,是则进入步骤S316,否则回到步骤S301。
步骤S316,将B1标记为一次完整的按键过程,并将B2标记为按键未按下状态,变量T结束计时。
步骤S317,判断K是否有效,是则进入步骤S318,否则回到步骤S301。
步骤S318,判断是否满足:B2为按下状态,并且T已经到达了长按状态的时间;或者当B2为未按下状态,T到达了短按状态的时间。是则进入步骤S319,否则回到步骤S301。
步骤S319,执行按键长按或者按键短按处理,并进入步骤S320。
步骤S320,置B1为一次完整按键过程,置B2为未按下状态,置K为无效值,变量T清空。
从上述流程可以看出,按键被按下的时候,开始进行循环读取,每隔一段时间读取一次ADC值,并定义一个变量对读取到的ADC值进行计数,这个计数是通过比对当前读取到的ADC值所对应的按键类型和之前读取的ADC值所对应的按键类型进行判断,如果当前读取ADC值对应的按键类型与之前读取的ADC值对应的按键类型一致,则将该按键的按键类型变量计数次数进行一次累加,否则加入到新的按键类型变量中。当按键被释放的时候,对进行计数的几个变量进行对比,次数最多的那个即为当前按下的正确按键,如果次数都相等,则不进行处理。出现读取异常ADC值的情况,也能通过判断该ADC值是否在正常ADC值取值范围内来排除该异常ADC值,即使该ADC值在正常采样信号取值范围内,也能通过多次采样,统计按键类型变量K的计数次数,将按键类型变量K计数次数最多的按键作为有效按键处理。采用循环方式读取按键电路信号采样值,可以在读取信号采样值的间隙执行程序其他功能,而未使用延时方法读取按键电路信号采样值,提高了MCU的运行效率。
如图4所示,本发明还提供一种消除按键抖动的装置400,装置400包括:
采样电路41,用于获取按键电路的采样信号;计数器42,用于当采样电路41获取的采样信号值在其中一个按键的按键参考值范围内,则将该按键的按键计数次数累加一次,按键参考值范围为预定义的正常采样信号取值范围,且每个按键分别对应一按键参考值范围;处理器43,用于将计数器42中按键计数次数最多的按键作为有效按键处理。消除按键抖动的装置400的具体实现方法在前文已做详细描述,故在此不再赘述。
本发明还提供一种的键盘,包括键盘盘体、设于所述键盘盘体表面的按键以及位于所述键盘盘体内的按键电路,键盘还包括消除按键抖动的装置400,消除按键按键抖动的装置与按键电路连接。
本发明通过获取按键电路的信号采样值,并判断该信号采样值是否在预定义的正常采样信号取值范围内,若在该范围内,则将该信号采样值对应的按键类型变量的计数累加一次,最后经过多次采样,通过对比各按键类型变量的计数,将按键类型变量计数最多的按键作为有效按键处理。在按键按下并保持闭合稳定的时间内,出现了读取异常采样信号值的情况,也能通过判断该采样信号值是否在正常采样信号取值范围内来排除该异常采样信号值,即使该异常采样信号值在正常采样信号取值范围内,也能通过多次采样,统计按键的按键类型变量计数,将按键类型变量计数最多的按键作为有效按键处理。同时,本案采用循环方式读取按键电路信号采样值,在读取信号采样值的间隙执行程序其他功能,而未使用延时方法读取按键电路信号采样值,提高了MCU的运行效率。借此,本发明能消除按键抖动,在按键闭合稳定期内读取非正常按键采样信号值的时也能正确识别按键,同时能够提高MCU的运行效率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应当属于本发明所附的权利要求的保护范围。