基于C语言的抗干扰消抖按键程序设计
作者:印健健
来源:《数字技术与应用》2015年第08期
摘要:文章从程序流程图设计与分析、电路设计、抗干扰消抖按键程序设计等方面,全面阐述了C语言抗干扰消抖按键程序设计的原理和方法,对抗干扰消抖按键的设计具有重要的参考价值。软件消抖是以高低电平变化为识别依据的,在某些工业干扰比较严重的场所,即使没有操作按键,强烈的工业干扰也有可能串入单片机的按键控制引脚,造成该引脚高低电平的变化,导致单片机的错误控制,所以按键消抖程序中插入抗干扰程序是很有必要的。 关键词:C语言 抗干扰消抖按键 程序设计
中图分类号:TP710 文献标识码:A 文章编号:1007-9416(2015)08-0000-00
众所周知,由于机械结构特点,轻触式机械按键在单片机控制电路中并不是按人们理想的模式工作的,如按键按下立即变低电位,按键释放立即变高电位(见图1-理想波形),实际是按键按下后需经多次高低电平振荡后才变成稳定的低电平,按键释放后需经多次高低电平振荡后才变成稳定的高电平(见图1-实际波形),这个高低电平的振荡我们称之为抖动,抖动过程一般为5~10ms ,设计时为保险起见,我们默认其为10ms。由于抖动的存在,虽然按键按下释放只操作了一次,但实际上相当于按键按下释放操作了多次,如果是由单片机控制的按键加1计数电路,不经消除抖动(消抖)处理,按键每按下释放操作一次,数码管显示的数会跳跃式加显示(加多次),消抖可通过硬件和软件两种方法,硬件消抖会增加元器件、成本、电路板体积,而软件消抖只需编写消抖程序即可。软件消抖是以高低电平变化为识别依据的,在某些工业干扰比较严重的场所,即使没有操作按键,强烈的工业干扰也有可能串入单片机的按键控制引脚,造成该引脚高低电平的变化,导致单片机的错误控制,不言而喻,这在某些控制操作场所后果是非常严重的,所以按键消抖程序中插入抗干扰程序是很有必要的。下面就以单片机控制的按键加1计数电路为例,阐述C语言抗干扰消抖按键程序设计的原理和方法。 1 程序流程图设计与分析(见图2)
按键是否真的人为按下分两次判断,第一次是初步判断,即SW1等于0可能是真的人为按下也可能是由干扰信号所致,延时10ms(按下抖动期a-b)后再次判断,如果SW1仍等于0,说明按键确实是人为按下了,如果SW1不等于0,说明是由干扰信号所致。按键是否真的人为释放也分两次判断,第一次也是初步判断,即SW1等于0,进入原地等待期(b-c) ,如果SW1不等于0可能是真的人为释放了也可能是由干扰信号所致,延时10ms(释放抖动期c-d)后再次判断,如果SW1仍不等于0,说明按键确实是人为释放了,如果SW1等于0,说明是由干扰信号所致。 4 结语
龙源期刊网 http://www.qikan.com.cn
上述加1电路设计成按键按下释放后数字在数码管上更新显示,只要把执行功能程序段的指令位置稍作调整,即可改成按键按下后数字在数码管上更新显示。程序略作修改也可将加1电路也可改成减1电路,读者不妨一试。 参考文献:
[1] 主编 王伟民.新概念51单片机C语言实践教程.2014.2 [2] 主编 闫玉德,俞虹.MCS-51单片机原理与应用(C语言版). 收稿日期:2015-07-23
作者简介:印健健(1964一),男,汉族,江苏人,本科,高级讲师,研究方向:应用电子,从事工作:教学与科研。
因篇幅问题不能全部显示,请点此查看更多更全内容