按键消抖电路
技术领域
本发明涉及一种脉冲信号处理电路,尤其是一种按键消抖电路。
背景技术
数字信号电路中,经常要求机械按键开关按下操作时输出脉冲。机械按键开关在按下或者松开时,会因为触点的抖动使按键脉冲产生抖动干扰脉冲。采用软件消除开关抖动时需要耗费CPU的工作时间,大大浪费了系统资源。当需要采用电路消除按键开关抖动脉冲的影响时,常用的方法是RS触发器和RC滤波电路。采用RS触发器时,要求按键开关同时具有常闭开关和常开开关,其应用受到限制。采用RC滤波电路,当抖动干扰为连续的窄脉冲干扰时,需要加大滤波时间常数,影响电路的快速响应能力;或者是按键电路存在连续的窄脉冲干扰时,RC滤波电路存在直流记忆效应,前面的窄脉冲会影响后面窄脉冲的过滤。
发明内容
为了解决现有按键消抖电路所存在的问题,本发明提供了一种按键消抖电路,包括按键脉冲产生电路、快速放电电路、快速充电电路、电容、施密特电路。
所述按键脉冲产生电路输出按键脉冲。
所述快速放电电路的输入为按键脉冲,输出端连接至施密特电路输入端;所述快速充电电路的输入为按键脉冲,输出端连接至施密特电路输入端。
所述电容的一端连接至施密特电路输入端,另外一端连接至按键消抖电路的公共地或者是供电电源。
所述施密特电路的输出端为输出脉冲端。
所述快速放电电路包括快速放电二极管、充电电阻、快速放电开关;所述快速放电二极管与充电电阻并联后,再与快速放电开关串联;所述快速充电电路包括快速充电二极管、放电电阻、快速充电开关;所述快速充电二极管与放电电阻并联后,再与快速充电开关串联。
所述快速放电二极管上的单向电流流向为从快速放电电路输出端流向输入端;所述快速充电二极管上的单向电流流向为从快速充电二极管输入端流向输出端。
所述快速放电开关、快速充电开关由输出脉冲控制,具体方法是,当施密特电路为同相施密特电路时,输出脉冲的低电平控制快速放电开关接通、快速充电开关关断,输出脉冲的高电平控制快速放电开关关断、快速充电开关接通;当施密特电路为反相施密特电路时,输出脉冲的高电平控制快速放电开关接通、快速充电开关关断,输出脉冲的低电平控制快速放电开关关断、快速充电开关接通。
所述快速放电开关和快速充电开关为数字控制的多路模拟开关;或者是,所述快速放电开关和快速充电开关均为电平控制的双向模拟开关。。
所述充电电阻与放电电阻的电阻值相同时,能够取消快速放电电路中的充电电阻与快速充电电路中的放电电阻并用电阻值与充电电阻相同的充放电电阻代替;所述充放电电阻并联在按键脉冲端和施密特电路输入端。
所述按键消抖电路能够过滤的正窄脉冲宽度通过改变充电时间常数或者施密特电路的上限门槛电压来进行控制;所述按键消抖电路能够过滤的负窄脉冲宽度通过改变放电时间常数或者施密特电路的下限门槛电压来进行控制。
所述充电时间常数为充电电阻与电容的乘积;所述放电时间常数为放电电阻与电容的乘积;或者是,所述充电时间常数和放电时间常数均为充放电电阻与电容的乘积。
所述施密特电路具有高输入阻抗特性。
本发明的有益效果是:所述按键消抖电路允许宽度大于规定值的正脉冲和负脉冲信号通过,能够自动过滤负宽脉冲期间的正窄脉冲,特别是能够快速恢复过滤能力过滤连续的正窄脉冲干扰信号,消除按键脉冲的上升沿抖动;能够自动过滤正宽脉冲期间的负窄脉冲,特别是能够快速恢复过滤能力过滤连续的负窄脉冲干扰信号,消除按键脉冲的下降沿抖动;需要过滤的正窄脉冲最大宽度能够通过改变充电时间常数进行调整;需要过滤的负窄脉冲最大宽度能够通过改变放电时间常数进行调整;所述按键消抖电路能够应用在需要采用电路可靠消除按键脉冲抖动影响的场合。
附图说明
图1为按键消抖电路实施例结构框图;
图2为按键脉冲产生电路实施例;
图3为脉冲消抖电路实施例1;
图4为脉冲消抖电路实施例1的按键脉冲和输出脉冲波形;
图5为脉冲消抖电路实施例2;
图6为脉冲消抖电路实施例3;
图7为脉冲消抖电路实施例3的按键脉冲和输出脉冲波形;
图8为脉冲消抖电路实施例4;
图9为脉冲消抖电路实施例5;
图10为脉冲消抖电路实施例6。
具体实施方式
以下结合附图对本发明作进一步说明。
如图1所示为按键消抖电路实施例结构框图,包括按键脉冲产生电路和脉冲消抖电路。按键脉冲产生电路输出由按键操作产生的按键脉冲P1,按键脉冲P1被送至脉冲消抖电路进行脉冲消抖,得到输出脉冲P2。
按键脉冲产生电路用于在有按键操作时产生按键脉冲并输出。如图2所示为按键脉冲产生电路的一个实施例,由按键S10、电阻R10、驱动门F10组成。按键脉冲P1经由驱动门F10输出,可以提高按键脉冲P1的带负载能力。选择驱动门F10时,可以选择同相驱动门,也可以选择反相驱动门;要求驱动门F10的高电平和低电平带负载能力一致或者接近,且灌电流带负载能力与拉电流带负载能力一致或者接近。驱动门F10可以选择CMOS门电路或者是高速CMOS门电路。驱动门F10还可以选择用运放电路来构成。
脉冲消抖电路的组成包括快速放电电路、快速充电电路、电容、施密特电路。
如图3所示为脉冲消抖电路实施例1。实施例1中,快速放电二极管、充电电阻、快速放电开关分别为二极管D11、电阻R11、开关T11,组成了快速放电电路;快速充电二极管、放电电阻、快速充电开关分别为二极管D12、电阻R12、开关T12,组成了快速充电电路;电容为电容C11。施密特电路F11为同相施密特电路,实施例1中输出脉冲P2与按键脉冲P1同相。电容C11的一端接施密特电路的输入端,即F11的输入端A2,另外一端连接至公共地。二极管D11的阳极连接至F11的输入端A2,阴极与开关T11串联后连接至按键脉冲端P1,当开关T11导通时,二极管D11的单向电流流向为从F11的输入端A2流向按键脉冲端P1。二极管D12的阴极连接至F11的输入端A2,阳极与开关T12串联后连接至按键脉冲端P1,当开关T12导通时,二极管D12的单向电流流向为从按键脉冲端P1流向F11的输入端A2。
快速放电开关、快速充电开关为电平控制的双向模拟开关。实施例1中,开关T11、开关T12均选择控制信号为高电平时开关接通,控制信号为低电平时开关关断的双向模拟开关,型号可以选择CD4066,或者是CD4016。实施例1中施密特电路F11为同相施密特电路,输出脉冲P2(图3中A3点)直接连接至开关T12的电平控制端,输出脉冲P2的高、低电平分别控制开关T12接通、关断;输出脉冲P2经过反相器F12后(图3中点)连接至开关T11的电平控制端,输出脉冲P2的高、低电平分别控制开关T11关断、接通。受到输出脉冲P2的控制,开关T11与开关T12中总是一个处于接通状态,另外一个处于关断状态。
图4为脉冲消抖电路实施例1的按键脉冲和输出脉冲波形。图4中,P1为按键脉冲,P2为输出脉冲,当P1低电平为正常的负宽脉冲时,图3中A2点电位与A1点低电平电位一致,P2为低电平,开关T11接通、T12关断。正窄脉冲11的高电平通过充电电阻R11对电容C11充电,使A2点电位上升;由于窄脉冲11的宽度小于时间T1,A2点电位在窄脉冲11结束时仍低于施密特电路F11的上限门槛电压,因此,P2维持为低电平,开关T11维持接通;窄脉冲11结束时,A1点重新变为低电平且通过快速放电二极管D11使电容C11快速放电,使A2点电位与A1点低电平电位一致,恢复至窄脉冲11来临前的状态,其抗干扰能力得到迅速恢复,当后面紧接有连续的正窄脉冲干扰信号时,同样能够过滤掉。正窄脉冲12、正窄脉冲13的宽度均小于时间T1,因此,当窄脉冲12、窄脉冲13中的每一个结束时,P2维持为低电平,A1点重新变为低电平且通过快速放电二极管D11使电容C11快速放电,使A2点电位与A1点低电平电位一致。
脉冲14为正常的正宽脉冲,P1在上升沿20之后维持高电平时间达到T1时,P1的高电平通过充电电阻R11对电容C11充电,使A2点电位上升达到施密特电路F11的上限门槛电压,施密特电路F11输出P2在上升沿25处从低电平变为高电平,使开关T11关断、T12接通;A1点的高电平通过快速充电二极管D12使电容C11快速充电,使A2点电位与A1点高电平电位一致,P2维持为高电平。
负窄脉冲15的低电平通过放电电阻R12对电容C11放电,使A2点电位下降;由于窄脉冲15的宽度小于时间T2,A2点电位在窄脉冲15结束时仍高于施密特电路F11的下限门槛电压,因此,P2维持为高电平,开关T12维持接通;窄脉冲15结束时,A1点重新变为高电平且通过快速充电二极管D12使电容C11快速充电,使A2点电位与A1点高电平电位一致,恢复至窄脉冲15来临前的状态,其抗干扰能力得到迅速恢复,当后面紧接有连续的负窄脉冲干扰信号时,同样能够过滤掉。负窄脉冲16、负窄脉冲17、负窄脉冲18的宽度均小于时间T2,因此,当窄脉冲16、窄脉冲17、窄脉冲18中的每一个结束时,P2维持为高电平,A1点重新变为高电平且通过快速充电二极管D12使电容C11快速充电,使A2点电位与A1点高电平电位一致。
P1在下降沿21之后维持低电平时间达到T2时,表示P1有一个正常的负宽脉冲,P1的低电平通过放电电阻R12对电容C11放电,使A2点电位下降达到施密特电路F11的下限门槛电压,施密特电路F11输出P2在下降沿26处从高电平变为低电平,使开关T11接通、T12关断;A1点的低电平通过快速放电二极管D11使电容C11快速放电,使A2点电位与A1点低电平电位一致,P2维持为低电平。P1的负宽脉冲19宽度大于T2,在负宽脉冲19的上升沿22之后维持高电平时间达到T1时,P2在上升沿27处从低电平变为高电平。
脉冲消抖电路将P1信号中的窄脉冲11、窄脉冲12、窄脉冲13、窄脉冲15、窄脉冲16、窄脉冲17、窄脉冲18都过滤掉,而正宽脉冲14、负宽脉冲19能够通过,使P2信号中出现相应的正宽脉冲23和负宽脉冲24。输出脉冲P2与按键脉冲P1同相,而输出的宽脉冲23上升沿比输入的宽脉冲14上升沿滞后时间T1,下降沿滞后时间T2。
窄脉冲11、窄脉冲12、窄脉冲13为正窄脉冲,其中窄脉冲11为干扰脉冲,窄脉冲12、窄脉冲13为连续的触点抖动脉冲。时间T1为脉冲消抖电路能够过滤的最大正窄脉冲宽度。T1受到充电时间常数、按键脉冲P1的高电平电位、按键脉冲P1的低电平电位和施密特电路F11的上限门槛电压共同影响。通常情况下,按键脉冲P1的高电平电位和低电平电位为定值,因此,调整T1的值可以通过改变充电时间常数或者施密特电路的上限门槛电压来进行。图3中,充电时间常数为充电电阻R11与电容C11的乘积。
窄脉冲15、窄脉冲16、窄脉冲17、窄脉冲18为负窄脉冲,其中窄脉冲15为干扰脉冲,窄脉冲16、窄脉冲17、窄脉冲18为连续的触点抖动脉冲。时间T2为脉冲消抖电路能够过滤的最大负窄脉冲宽度。T2受到放电时间常数、按键脉冲P1的高电平电位、按键脉冲P1的低电平电位和施密特电路F11的下限门槛电压共同影响。通常情况下,按键脉冲P1的高电平电位和低电平电位为定值,因此,调整T2的值可以通过改变放电时间常数或者施密特电路的下限门槛电压来进行。图3中,放电时间常数为放电电阻R12与电容C11的乘积。
图3中,二极管D11与电阻R11并联后再与开关T11串联,按键脉冲P1从A1点先经过开关T11、然后经过二极管D11与电阻R11的并联电路到达A2点,按照脉冲信号流向关系,快速放电开关串联连接在快速放电二极管与充电电阻的并联电路的前面;二极管D12与电阻R12并联后再与开关T12串联,按照脉冲信号流向关系,快速充电开关串联连接在快速充电二极管与放电电阻的并联电路的前面。快速放电开关的串联位置也可以放在快速放电二极管与充电电阻的并联电路的后面,同样地,快速充电开关的串联位置也可以放在快速充电二极管与放电电阻的并联电路的后面。另外,电容C11接公共地的一端也可以改接在脉冲消抖电路的供电电源端。
图3中,施密特电路F11也可以选择反相施密特电路,此时输出脉冲P2与按键脉冲P1反相,输出脉冲P2及其反相信号控制开关T11、开关T12的连接方式需要按照输出脉冲P2的高、低电平分别控制开关T12关断、接通,输出脉冲P2的高、低电平分别控制开关T11接通、关断来进行。
图5所示为脉冲消抖电路实施例2,快速放电二极管、充电电阻、快速放电开关分别为二极管D21、电阻R21、开关T21,快速充电二极管、放电电阻、快速充电开关分别为二极管D22、电阻R22、开关T22,电容为电容C21。施密特电路F21为同相施密特电路,输出脉冲P2(图5中B3点)直接连接至开关T22的电平控制端;输出脉冲P2经过反相器F22后(图5中点)连接至开关T21的电平控制端。实施例2与图3所示的实施例1结构类似,不同之处一是电容C21的一端接施密特电路的输入端,另外一端连接至脉冲消抖电路的供电电源+VCC,不同之处二是按照脉冲信号流向关系,快速放电开关的串联位置在快速放电二极管与充电电阻的并联电路的后面,即开关T21串联在二极管D21与电阻R21并联电路的后面。实施例2的工作原理与实施例1相同。
如图6所示为脉冲消抖电路实施例3,快速放电二极管、充电电阻分别为二极管D31、电阻R31,快速充电二极管、放电电阻分别为二极管D32、电阻R32,快速放电开关与快速充电开关为数字控制的多路模拟开关T31,T31的常开开关为快速放电开关,常闭开关为快速充电开关;二极管D31、电阻R31与多路模拟开关T31的常开开关(图6中C1)组成快速放电电路,二极管D32、电阻R32与多路模拟开关T31的常闭开关(图6中C0)组成快速充电电路;电容为电容C31,电容C31的一端接施密特电路的输入端,即F31的输入端C2,另外一端连接至公共地。施密特电路F31为反相施密特电路,要求输出脉冲P2的高电平控制快速放电开关接通、快速充电开关关断,低电平控制快速放电开关关断、快速充电开关接通;图6中,输出脉冲P2(图6中C3点)直接连接至多路模拟开关T31的数字控制端,输出脉冲P2的高电平控制多路模拟开关T31的常开开关接通、常闭开关关断,即输出脉冲P2的高电平控制快速放电开关接通、快速充电开关关断;输出脉冲P2的低电平控制多路模拟开关T31的常开开关关断、常闭开关接通,即输出脉冲P2的低电平控制快速放电开关关断、快速充电开关接通。
数字控制的多路模拟开关可以选择CD4051、CD4052、CD4053等不同型号的器件。实施例3中,T31选择数字控制的2通道模拟开关CD4053。
图7为脉冲消抖电路实施例3的按键脉冲和输出脉冲波形。图7中,P1为按键脉冲,P2为输出脉冲,当P1低电平为正常的负宽脉冲时,图6中C2点电位与脉冲输入端C4点低电平电位一致,P2为高电平,T31常开开关接通、常闭开关关断。正窄脉冲31的高电平通过充电电阻R31对电容C31充电,使C2点电位上升;由于窄脉冲31的宽度小于时间T1,C2点电位在窄脉冲31结束时仍低于施密特电路F31的上限门槛电压,因此,P2维持为高电平,T31状态维持;窄脉冲31结束,C4点重新变为低电平且通过快速放电二极管D31使电容C31快速放电,使C2点电位与C4点低电平电位一致,恢复至窄脉冲31来临前的状态,其抗干扰能力得到迅速恢复,当后面紧接有连续的正窄脉冲干扰信号时,同样能够过滤掉。正窄脉冲32、正窄脉冲33的宽度均小于时间T1,因此,当窄脉冲32、窄脉冲33中的每一个结束时,P2维持为高电平,C4点重新变为低电平且通过快速放电二极管D31使电容C31快速放电,使C2点电位与C4点低电平电位一致。
脉冲34为正常的正宽脉冲,P1在上升沿40之后维持高电平时间达到T1时,P1的高电平通过充电电阻R31对电容C31充电,使C2点电位上升达到施密特电路F31的上限门槛电压,施密特电路F31输出P2在下降沿45处从高电平变为低电平,使T31常开开关关断、常闭开关接通;C4点的高电平通过快速充电二极管D32使电容C31快速充电,使C2点电位与C4点高电平电位一致,P2维持为低电平。
负窄脉冲35的低电平通过放电电阻R32对电容C31放电,使C2点电位下降;由于窄脉冲35的宽度小于时间T2,C2点电位在窄脉冲35结束时仍高于施密特电路F31的下限门槛电压,因此,P2维持为低电平,T31状态维持;窄脉冲35结束,C4点重新变为高电平且通过快速充电二极管D32使电容C31快速充电,使C2点电位与C4点高电平电位一致,恢复至窄脉冲31来临前的状态,其抗干扰能力得到迅速恢复,当后面紧接有连续的负窄脉冲干扰信号时,同样能够过滤掉。负窄脉冲36、负窄脉冲37、负窄脉冲38的宽度均小于时间T2,因此,当窄脉冲36、窄脉冲37、窄脉冲38中的每一个结束时,P2维持为低电平,C4点重新变为高电平且通过快速充电二极管D32使电容C31快速充电,使C2点电位与C4点高电平电位一致。
P1在下降沿41之后维持低电平时间达到T2时,表示P1有一个正常的负宽脉冲,P1的低电平通过放电电阻R32对电容C31放电,使C2点电位下降达到施密特电路F31的下限门槛电压,施密特电路F31输出P2在上升沿46处从低电平变为高电平,使T31常开开关接通、常闭开关关断;C4点的低电平通过快速放电二极管D31使电容C31快速放电,使C2点电位与C4点低电平电位一致,P2维持为高电平。P1的负宽脉冲39宽度大于T2,在负宽脉冲39的上升沿42之后维持高电平时间达到T1时,P2在下降沿47处从高电平变为低电平。
脉冲消抖电路将P1信号中的窄脉冲31、窄脉冲32、窄脉冲33、窄脉冲35、窄脉冲36、窄脉冲37、窄脉冲38都过滤掉,而正宽脉冲34、负宽脉冲39能够通过,使P2信号中出现相应的、且与P1反相的负宽脉冲43和正宽脉冲44。窄脉冲31、窄脉冲32、窄脉冲33为正窄脉冲,其中窄脉冲31为干扰脉冲,窄脉冲32、窄脉冲33为连续的触点抖动脉冲。窄脉冲35、窄脉冲36、窄脉冲37、窄脉冲38为负窄脉冲,其中窄脉冲35为干扰脉冲,窄脉冲36、窄脉冲37、窄脉冲38为连续的触点抖动脉冲。
图7中,时间T1为脉冲消抖电路能够过滤的输入的最大正窄脉冲宽度,调整T1的值可以通过改变充电时间常数或者施密特电路的上限门槛电压来进行。图6中,充电时间常数为充电电阻R31与电容C31的乘积。时间T2为脉冲消抖电路能够过滤的输入的最大负窄脉冲宽度。调整T2的值可以通过改变放电时间常数或者施密特电路的下限门槛电压来进行。图6中,放电时间常数为放电电阻R32与电容C31的乘积。
图6中,多路模拟开关T31采用的是分配器接法,由数字信号C3控制按键脉冲P1分配至快速放电电路或者是快速充电电路;多路模拟开关T31也可以采用选择器接法,即按键脉冲P1同时送至快速放电电路与快速充电电路,由数字信号控制选择快速放电电路或者是快速充电电路的信号连接至施密特电路。
图6中,电容C31接公共地的一端也可以改接在脉冲消抖电路的供电电源端。
图6中,施密特电路F31也可以选择同相施密特电路。
图8所示为脉冲消抖电路实施例4,快速放电二极管、充电电阻分别为二极管D41、电阻R41,快速充电二极管、放电电阻分别为二极管D42、电阻R42,快速放电开关与快速充电开关为数字控制的多路模拟开关T41;电容为电容C41,电容C41的一端接施密特电路的输入端,即F41的输入端D2,另外一端连接至公共地。实施例4与实施例3的结构类似,不同之处在于一是多路模拟开关T41采用了选择器接法,选择器接法与分配器接法从工作原理上没有什么不同;二是施密特电路F41为同相施密特电路,输出脉冲P2与按键脉冲P1同相,输出脉冲P2(图8中D3点)直接连接至多路模拟开关T41的数字控制端,所以T41的常闭开关为快速放电开关,常开开关为快速充电开关;二极管D41、电阻R41与多路模拟开关T41的常闭开关(图8中D0)组成快速放电电路,二极管D42、电阻R42与多路模拟开关T41的常开开关(图8中D1)组成快速充电电路。
图9所示为脉冲消抖电路实施例5。实施例5中,快速放电二极管、快速放电开关分别为二极管D51、开关T51,组成了快速放电电路;快速充电二极管、快速充电开关分别为二极管D52、开关T52,组成了快速充电电路;电容为电容C51;施密特电路F51为反相施密特电路,因此,实施例5中输出脉冲P2与按键脉冲P1反相,输出脉冲P2(图9中E3点)直接连接至开关T51的电平控制端;输出脉冲P2经过反相器F52后(图9中点)连接至开关T52的电平控制端。
实施例5中,分别与快速放电二极管、快速充电二极管并联的充电电阻、放电电阻被取消,均由并联在按键脉冲端E1和施密特电路输入端E2的充放电电阻R51代替。此电路为充电电阻与放电电阻相同的特例,可以简化电路结构。
图10所示为脉冲消抖电路实施例6。实施例6中,快速放电二极管为二极管D61,快速充电二极管为二极管D62,快速放电开关与快速充电开关为数字控制的多路模拟开关T61;电容为电容C61,电容C61的一端接施密特电路的输入端,即F61的输入端F2,另外一端连接至公共地;多路模拟开关T61采用分配器接法。施密特电路F61为同相施密特电路,输出脉冲P2与按键脉冲P1同相,输出脉冲P2(图10中F3点)直接连接至多路模拟开关T61的数字控制端,所以T61的常闭开关为快速放电开关,常开开关为快速充电开关;二极管D61与多路模拟开关T41的常闭开关(图10中F0)组成快速放电电路,二极管D62与多路模拟开关T61的常开开关(图10中F1)组成快速充电电路。
实施例6中,分别与快速放电二极管、快速充电二极管并联的充电电阻、放电电阻被取消,均由并联在按键脉冲端F4和施密特电路输入端F2的充放电电阻R61代替。此电路也为充电电阻与放电电阻相同的特例,可以简化电路结构。
所述施密特电路的输入信号为电容上的电压,因此,要求施密特电路具有高输入阻抗特性。施密特电路可以选择具有高输入阻抗特性的CMOS施密特反相器CD40106、74HC14,或者是选择具有高输入阻抗特性的CMOS施密特与非门CD4093、74HC24等器件。CMOS施密特反相器或者CMOS施密特与非门的上限门槛电压、下限门槛电压均为与器件相关的固定值,因此,调整能够过滤的输入的正窄脉冲宽度、负窄脉冲宽度需要通过改变充电时间常数、放电时间常数来进行。用施密特反相器或者施密特与非门构成同相施密特电路,需要在施密特反相器或者施密特与非门后面增加一级反相器。
施密特电路还可以选择采用运算放大器来构成,采用运算放大器来构成施密特电路可以灵活地改变上限门槛电压、下限门槛电压。同样地,采用运算放大器来构成施密特电路时,需要采用具有高输入阻抗特性的结构与电路。