在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作。系统设计中如果开关脉冲是作为外部中断触发信号或要对开关脉冲进行计数时,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑在键数较少时,可采用硬件去抖:而当键数较多时,采用软件去抖
⚫ 在触点抖动期间检测按键的通与断状态,可能导致 判断出错,即按键一次按下或释放被错误地认为是 多次操作。系统设计中如果开关脉冲是作为外部中 断触发信号或要对开关脉冲进行计数时,这种情况 是不允许出现的。 ⚫ 为了克服按键触点机械抖动所致的检测误判,必须 采取去抖动措施,可从硬件、软件两方面予以考虑。 在键数较少时,可采用硬件去抖;而当键数较多时, 采用软件去抖
在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路如下图所示是一种由R-S触发器构成的去抖动电路,当触发器翻转时,触点抖动不会对其产生任何影响。键盘输出经双稳态电路之后变为规范的矩形方波。1kQ+5VOUAGN41kQUB
⚫ 在硬件上可采用在键输出端加R-S触发器(双 稳态触发器)或单稳态触发器构成去抖动电路, 如下图所示是一种由R-S触发器构成的去抖动 电路,当触发器翻转时,触点抖动不会对其 产生任何影响。键盘输出经双稳态电路之后 变为规范的矩形方波。 1 2 UA 3 4 5 UB 6 S GN D +5V Q a b 1k 1k
软件上采取的措施是在检测到有按键按下时执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态:同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而消除抖动的影响
▪ 软件上采取的措施是在检测到有按键按下时, 执行一个10ms左右(具体时间应视所使用的按 键进行调整)的延时程序,再确认该键电平是 否仍保持闭合状态电平,若仍保持闭合状态 电平,则确认该键处于闭合状态;同理,在 检测到该键释放后,也应采用相同的步骤进 行确认,从而消除抖动的影响
5.1.2独立式键盘应用实例【例1】监视某开关S,用发光二极管LED显示开关状态,如果开关闭合,LED亮:如果开关断开,LED灭。解:设计电路图如下图所示。开关接P1.1,当开关断开时P1.1为+5V,对应数字量为1”;开关闭合时,P1.1为OV对应数字量为“0”,这样就可以用JB指令对开关状态进行检测。P1.0输出“1”,LED亮。当P1.0输出“0”,LED两端电压相等,熄灭。参考程序如下:ORGOOOOHCLRP1.0使发光二极管灭P1.1NEXT:SETB先对P1.1写"1JBP1.1,L1开关断开,跳至L1SETBP1.0:开关合上,发光二极管亮SJMPNEXTP1.0CLRL1:R:开关断开,发光二极管灭SJMPNEXTEND
5.1.2 独立式键盘应用实例 【例1】 监视某开关S,用发光二极管LED显示开关状态,如果 开关闭合,LED亮;如果开关断开,LED灭。 解:设计电路图如下图所示。开关接P1.1,当开关断开时, P1.1为+5V,对应数字量为“1”;开关闭合时,P1.1为0V, 对应数字量为“0”,这样就可以用JB指令对开关状态进行检 测。P1.0输出“1” ,LED亮。当P1.0输出“0” ,LED两端电压 相等,熄灭。 参考程序如下: ORG 0000H CLR P1.0 ; 使发光二极管灭 NEXT: SETB P1.1 ; 先对P1.1写"1" JB P1.1, L1 ; 开关断开,跳至L1 SETB P1.0 ; 开关合上,发光二极管亮 SJMP NEXT L1 : CLR P1.0 ; 开关断开,发光二极管灭 SJMP NEXT END
开关监视控制电路图LEDUIA47092P10P0OVeeC289S51P11P01enP12P02Vcc74LS04-P13P035P14P046P15P054.7k2P16P06SP17P0713INT1P20美12INTOP21GNDP22X115X2T1P2314TOP2412MHzP2531EAVPVecP26P2730pF30pFX119X1x218X2GND9机VecORESETRXDHTXD1710μFRDALE/P16WRPSEN
开关监视控制电路图