发明内容
为了解决上述问题,本发明提供了一种利用悬浮控制技术进行电容式触摸屏按键检测的方法,采用如下技术方案:
一种电容式触摸屏按键检测方法,包括以下步骤:
步骤1,系统上电,硬件初始化;
步骤2,对各按键的反馈电压信号进行采样及处理;
步骤3,进行按键判断处理;
步骤4,对采样数据进行滤波处理;
步骤5,判断是否已到基准时间?如果否,返回步骤2;如果是,继续执行步骤6;
步骤6,刷新各个按键的基准值;
步骤7,判断长按键时间是否大于等于6秒?如果否,返回步骤2;如果是,继续执行步骤8;
步骤8,刷新全部按键的基准值。
优选的,所述基准时间为10ms。
进一步的,所述步骤2的对各按键的反馈电压进行采样及处理具体包括:
步骤201,ADC采样电路对按键的反馈电压信号进行采样;
步骤202,采样值累加;
步骤203,判断采样值是否大于等于基准值?如果是,则结束程序;如果否,继续执行步骤204;
步骤204,用所述的基准值减去采样值,其结果作为差值1;
步骤205,判断所述差值1是否大于等于有效阀值?如果否,则结束程序;如果是,继续执行步骤206;
步骤206,按键计数值加1,并结束程序。
优选的,对各个按键的反馈电压信号进行采样及处理时,采样顺序为顺次进行或并列进行。
优选的,所述采样值累加,是连续对反馈电压信号采样256次后,对所得到的采样值进行累加,再取平均值,所得结果为平均采样值。
进一步的,所述步骤3的按键判断处理具体包括:
步骤301,判断上电时间是否超过2秒?如果否,执行步骤302;如果是,则执行步骤303;
步骤302,将采样计数值清零,并结束程序;
步骤303,采样计数值加1;
步骤304,判断采样计数值是否大于等于总采样次数?如果否,则结束程序;如果是,执行步骤305;
步骤305,判断各个按键的按键计数值是否大于等于有效次数?如果是,执行步骤306;如果否,则执行步骤307;
步骤306,将各个按键的标志位置位;
步骤307,判断本次采样结果上次采样结果是否相同?如果否,执行步骤308;如果是,执行步骤309;
步骤308,刷新本次采样结果,并将连续计数值清零,然后执行步骤309;
步骤309,连续计数值加1;
步骤310,判断连续计数值是否大于等于连续次数?如果是,执行步骤311;如果否,执行步骤312;
步骤311,进行按键处理并输出结果,并执行步骤312;
步骤312,将采样计数值和按键计数值清零,并结束程序。
优选的,判断各个按键的按键计数值是否大于等于有效次数、将各个按键的标志位置位,各个按键的判断顺序为顺次进行或并列进行。
优选的,所述总采样次数为100次。
进一步的,所述步骤6的按键基准值刷新处理具体包括:
步骤601,判断上电时间是否超过2秒?如果否,结束程序;如果是,执行步骤602;
步骤602,用所述的基准值减去平均采样值,其结果作为差值2;
步骤603,判断差值2是否小于下限值?如果是,执行步骤604;如果否,执行步骤605;
步骤604,将延时计数值清零,并结束程序;
步骤605,判断差值2是否大于等于上限值?如果是,执行步骤604;如果否,执行步骤606;
步骤606,判断采样值是否大于等于基准值?如果是,执行步骤607;如果否,执行步骤609;
步骤607,延时计数值加1,继续执行步骤608;
步骤608,判断延时计数值是否大于等于延时值1?如果否,结束程序;如果是,执行步骤612;
步骤609,判断差值2是否大于等于有效阀值?如果是,执行步骤604;如果否,执行步骤610;
步骤610,延时计数值加1;
步骤611,判断延时计数值是否大于等于延时值2?如果否,结束程序;如果是,执行步骤612;
步骤612,延时计数值清零,刷新基准值,并结束程序。
优选的,刷新各个按键的基准值时,刷新顺序为顺次进行或并列进行。
本发明所提供的利用悬浮控制技术进行触摸屏按键检测的软件处理方法,能够自动跟踪刷新基准值,通过反馈电压信号变化量的大小来判断是否有按键动作发生,并通过自动补偿和修正来区别处理,有效解决了外部电路参数所引起的差异以及工作环境条件变化所引起的漂移问题。在具体应用中,不需要调节任何电路参数和修改软件参数,简单易用,而且可靠性更高,抗干扰能力更强,适用性好,对按键的响应灵敏度的调整非常简单,而且电路简单,成本低廉,适合批量生产。
具体实施方式
下面结合附图对本发明作进一步说明。
现有的利用ADC转换测量方法进行电容式触摸屏按键检测时,转换的反馈电压信号受具体电路参数及环境条件的影响,其差异性很大,但有按键动作时的反馈电压信号都是在没有按键动作时反馈电压信号的基础上产生的较大变化值。如果能检测并判断出没有按键时的反馈电压值,在有按键动作时检测出反馈电压信号的变化量,从而判断出有按键动作发生。此方法是通过反馈电压的变化量而并非是具体电位值来进行判断,可以避免受具体电路参数及环境条件的影响。对每一路反馈电压信号利用相同的处理方法单独进行检测,始终自动检测并跟踪刷新反馈电压的基准值,并时刻检测出反馈电压的变化量,从而判断出有无按键的动作发生。这就是利用悬浮控制技术进行触摸屏按键检测的软件处理方法的原理。
基准值刷新处理的原理如图2所示,在正常使用过程中,反馈电压信号会随着使用条件的变化而有所波动,在没有按键动作时,其反馈电压信号变化是缓慢而且幅度较小的;在有按键动作时,反馈电压信号变化很快且幅度较大,并且会维持一定的时间;而在有外界干扰时,反馈电压信号变化也可能出现较快且幅度较大的情况,但其大多数持续时间都很短暂。根据反馈电压信号的这些特点,进行信号采样处理时根据不同的变化规律做如下区别处理,其中,图2(a)至2(e)中,恒定不变的信号为基准值,存在波动的信号为检测值:
如图2(a),对反馈电压信号进行检测并做相应的软件滤波处理,取连续采样256次并进行累加后的平均值,该平均值作为检测值与基准值进行比较,若检测值在基准值很小的范围内上下波动,此为正常的稳定状态,维持原来的基准值不变,只需清除延时时间变量;
如图2(b),若检测值比基准值大且幅度超过一定范围,并且连续持续较长时间(例如大于300ms),则刷新基准值,以检测值作为新的基准值,并清除延时时间变量;
如图2(c),若检测值比基准值小且幅度超过一定范围,但幅度又比有效按键的变化幅度小,并且连续持续较长时间(例如大于500ms),则刷新基准值,以检测值作为新的基准值,并清除延时时间变量;
如图2(d),若检测值比基准值小且幅度超过有效按键的变化幅度,并且连续持续一段时间(例如大约持续100ms),则认为是正常的触摸按键动作,基准值不变,清除延时时间变量,响应相应的按键动作;
如图2(e),若检测值比基准值小且幅度超过有效按键的变化幅度,并且连续持续时间很长(例如大于6s,长按键有效的情况除外),超出正常按键操作时的持续时间,则认为发生错误,刷新所有按键的基准值。
本发明的电容式触摸屏按键检测的软件处理方法,其主工作流程如图3所示,包括以下步骤:
步骤1,系统上电,硬件初始化;
步骤2,对各按键的反馈电压信号进行采样及处理;
步骤3,进行按键判断处理;
步骤4,对采样数据进行滤波处理;
步骤5,判断是否已到基准时间?如果否,返回步骤2;如果是,继续执行步骤6;
步骤6,刷新各个按键的基准值;
步骤7,判断长按键时间是否大于等于6秒?如果否,返回步骤2;如果是,继续执行步骤8;
步骤8,刷新全部按键的基准值。
在上述的步骤2和6中,对各个按键的反馈电压信号进行采样及处理时,以及在刷新各个按键的基准值时,采样顺序和刷新顺序既可以是顺次进行的,也可以是并列进行的,只要完成对全部按键的相应处理即可。步骤5中基准时间,是指在本检测方法中,凡是涉及到时间变量的计算,都以此基准时间为基准来进行累加,本实施例中,所述基准时间设定为10ms。
进一步的,所述步骤2的对各按键的反馈电压进行采样及处理的子程序流程如图4所示,包括:
步骤201,ADC采样电路对按键的反馈电压信号进行采样;
步骤202,采样值累加;
步骤203,判断采样值是否大于等于基准值?如果是,则结束程序;如果否,继续执行步骤204;
步骤204,用所述的基准值减去采样值,其结果作为差值1;
步骤205,判断所述差值1是否大于等于有效阀值?如果否,则结束程序;如果是,继续执行步骤206;
步骤206,按键计数值加1,并结束程序。
本实施例中,所使用的ADC采样分辨率为8位,因此各参数都是在8位ADC基准上的数据。本系统上电后,电路系统需要经过约2秒钟才能达到稳定,在前2秒内只对反馈电压信号进行检测,但并不进行按键的判断以及基准值的刷新处理;经过2秒后,系统进行首次有效的采样,此后根据基准值的刷新处理流程进行处理来更新基准值(在硬件电路正常情况下,首次有效的采样的检测值即为基准值)
本实施例中,步骤202所述的采样值累加,具体方法是连续对反馈电压信号进行采样,将采样256次的采样值进行累加,然后取平均值,得到平均采样值,具体为:用2个字节变量表示累加的和值,每采样一次就把采样值加到该和值,连续加满256次后,和值的高字节即为累加后的平均值,将此平均值作为进行基准值刷新处理的检测值。
步骤205中所述的有效阀值,该参数值是根据实验结果得出的,本实施例中取有效阀值为12,其依据为实际应用中在按键覆盖介质为不超过5mm厚玻璃的情况下的实际应用值。
进一步的,所述步骤3的按键判断处理子程序流程如图5所示,包括:
步骤301,判断上电时间是否超过2秒?如果否,执行步骤302;如果是,则执行步骤303;
步骤302,将采样计数值清零,并结束程序;
步骤303,采样计数值加1;
步骤304,判断采样计数值是否大于等于总采样次数?如果否,则结束程序;如果是,执行步骤305;
步骤305,判断各个按键的按键计数值是否大于等于有效次数?如果是,执行步骤306;如果否,则执行步骤307;
步骤306,将各个按键的标志位置位;
步骤307,判断本次采样结果上次采样结果是否相同?如果否,执行步骤308;如果是,执行步骤309;
步骤308,刷新本次采样结果,并将连续计数值清零,然后执行步骤309;
步骤309,连续计数值加1;
步骤310,判断连续计数值是否大于等于连续次数?如果是,执行步骤311;如果否,执行步骤312;
步骤311,进行按键处理并输出结果,并执行步骤312;
步骤312,将采样计数值和按键计数值清零,并结束程序。
步骤3的按键判断处理子程序,其作用是判断是否有按键动作发生。在上述的步骤305、306中,判断各个按键的按键计数值是否大于等于有效次数,将各个按键的标志位置位,各个按键的判断顺序既可以是顺次进行的,又可以是并列进行的。
在本实施例中,对反馈电压信号进行连续多次的采样(如进行100次采样),每次采样的采样值都与基准值进行比较,判断是否发生有效的按键,且按键计数器开始计数;每100次采样检测后,判断按键计数值是否达到有效按键的次数值(本实施例中设为80次),并设置相应的按键检测标志;达到有效按键的计数值则判断为有按键,否则无按键。若连续3次出现上述相同的采样结果,则认为有按键动作发生,进行相应的按键处理并输出结果。
步骤304中所述的总采样次数,即为上述的连续多次采样的总次数,本实施例中设为100次;步骤305中所述的有效次数,即为上述的有效按键的次数值,本实施例中设为80次;步骤310中所述的连续次数,即为上述的相同采样结果的连续次数值,本实施例中设为3次。这些参数值的选取,关系到触摸屏按键检测的响应速度、准确性以及抗干扰性。因此在本实施例中,对8通道触摸屏按键连续采样100次的时间大约为20-30ms,连续3次相同结果检测总时间基本符合正常触摸屏按键操作时的反馈电压信号特性。
进一步的,所述步骤6的按键基准值刷新处理子程序流程如图6所示,包括:
步骤601,判断上电时间是否超过2秒?如果否,结束程序;如果是,执行步骤602;
步骤602,用所述的基准值减去平均采样值,其结果作为差值2;
步骤603,判断差值2是否小于下限值?如果是,执行步骤604;如果否,执行步骤605;
步骤604,将延时计数值清零,并结束程序;
步骤605,判断差值2是否大于等于上限值?如果是,执行步骤604;如果否,执行步骤606;
步骤606,判断采样值是否大于等于基准值?如果是,执行步骤607;如果否,执行步骤609;
步骤607,延时计数值加1,继续执行步骤608;
步骤608,判断延时计数值是否大于等于延时值1?如果否,结束程序;如果是,执行步骤612;
步骤609,判断差值2是否大于等于有效阀值?如果是,执行步骤604;如果否,执行步骤610;
步骤610,延时计数值加1;
步骤611,判断延时计数值是否大于等于延时值2?如果否,结束程序;如果是,执行步骤612;
步骤612,延时计数值清零,刷新基准值,并结束程序。
步骤603中所述的下限值和步骤605中所述的上限值,均为根据实际使用效果而定义的参数,在本实施例中,定义为基准值的±2,平均采样值在这一范围内波动时,认为是正常的检测误差而不刷新基准值。
步骤608中所述的延时值1和步骤611中的延时值2,均为根据实际使用效果定义的参数,在本实施例中,为了提高抗干扰能力对采用数据进行滤波处理,考虑到抗干扰性能和按键的响应速度,将延时值1设为300ms、延时值2设为500ms。
本发明实施例所提供的利用悬浮控制技术进行触摸屏按键检测的软件处理方法,能够自动跟踪刷新基准值,通过反馈电压信号变化量的大小来判断是否有按键动作发生,并通过自动补偿和修正来区别处理,有效解决了外部电路参数所引起的差异以及工作环境条件变化所引起的漂移问题。在具体应用中,不需要调节任何电路参数和修改软件参数,简单易用,而且可靠性更高,抗干扰能力更强,适用性好,对按键的响应灵敏度的调整非常简单,而且电路简单,成本低廉,适合批量生产。