c51中对按键的处理方法

c51中对按键的处理方法

ID:33788918

大小:239.40 KB

页数:3页

时间:2019-03-01

c51中对按键的处理方法_第1页
c51中对按键的处理方法_第2页
c51中对按键的处理方法_第3页
资源描述:

《c51中对按键的处理方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2007年11月第4期吉林师范大学学报(自然科学版)JournalofJilinNormalUniversity(NaturalScienceEdition)№.4Nov.2007C51中对按键的处理方法王春武1,李 岩2,孟祥英3,尹冬梅4(1.吉林师范大学信息技术学院,吉林四平136000;2.山东临邑第一中学,山东临邑251500;3.四平德科电子有限公司,吉林四平136000;4.东北师范大学物理学院,吉林长春130024;)摘 要:单片机控制系统中大多使用按键来实现控制功能.非编码键盘中如何消除按键瞬间的抖动和响应按键

2、操作是设计者必须要考虑的问题.本文通过软件消除了按键抖动,并讨论如何实现响应一次键操作.文中还提供C51单片机的按键识别的实用例程.关键词:单片机;按键;响应;抖动中图分类号:TP368  文献标识码:A  文章编号:1000-1840-(2007)04-0086-02在单片机控制系统中,通过按键实现控制功能是MHz,编程软件为KeiluVision2[5].很常用的.对按键处理[1]的重要环节是去抖动[2],即除按下和抬起瞬间的抖动.而消除抖动后面临的更大问题就是解决按键的响应问题,包括按键的一次响应,一键多功能等.下面从两个方面

3、来进行相应的讨论.1 按键去抖问题1.1 原理阐述常用的按键由于机械触点的弹性作用,一个按键开关在闭合时或断开时不会马上稳定下来,因而在闭合和断开的瞬间都伴随着一连串的抖动,如图1.抖动时间的长短由按键的机械特性来决定,一般为5~10ms.这种抖动对人来说是感觉不到的,但图1 按键抖动voiddelay(unsignedchari){unsignedcharj;  while(--i)  {j=180;  while(--j);}}图2 触发器去除抖动对单片机来说,则是完全可以感知的,因为单片机的1.2 举例说明处理速度在微秒量

4、级.如果不对按键消除抖动则会假设有电路图如图3所示,要完成如下要求的引起程序处理的误操作.去抖动的方法有很多种,如电路控制:当按键按下时LED亮灭状态取反.使用R-S触发器等的硬件方法[3],运用不同算法的各种软件[4]方法等.硬件方法会增加成本和体积,如图2;软件方法用的比较普遍,现在常应用加固定软件延时来去抖动.具体方法就是在有按键按下时,利用软件延时10ms或稍长的时间(根据具体键的机械特性来确定)后再次检测按键是否按下,实际上是避开了按键按下时的抖动时间.实践证明,不对按键释放的抖动进行处理,也能满足设计的要求.在程序中添

5、加此函数则可以实现延时,参数i表示延时i个毫秒.应用中可以这样调用:delay图3 按键触发LED电路图(10),表示延时10ms.本例中单片机的晶振采用12收稿日期:2007-09-24  第一作者简介:王春武(1978-),男,吉林省松原市人,现为吉林师范大学信息技术学院助教,硕士.研究方向:计算机软件与应用.—86—main(){for(;;){LED=1;//初始状态LED灯灭if(!P10){delay(10);//延时10ms去抖按键仍然是按下的则执行while语句,系统会一直查询按键状态,只有按键抬起才可以退出循

6、环结构,从而可以一次响应.方法二:加入按键标志(!P10)//确认去抖后按键是否真的按下P30=!P30;//触发LED灯亮}}}bitkeymain()mark=0;//一次按键响应封锁标志2 按键响应问题{for(;;){if(!K&&!keymark)2.1 问题阐述如图3所示,主要讨论如何在单片机设计中实现对按键的一次响应问题,即每次按下键时,系统只响应一次按键处理.从程序设计的表面上看,执行LED=!{delay(1);延时10ms去抖if(!K){keymark=1;//封锁按键,直到按键抬起LED=!LED;

7、//LED状态去反}}elseif(K)LED语句即可,但实际应用中却出现LED一直处于闪keymark=0;//标志清零,为下次按键做好准备}}烁的情况,经分析发现:当程序中确定按键已被按下分析:其中keymark是位变量,只有当按键按时,会将LED的状态取反,可当主程序不断的扫描按键下且keymark=0时,程序才会继续确认是否真的时,按键一直处于按下的状态,系统会频繁的调用此语有键按下.经过延时去抖,程序中将keymark的值句,从而导致了,显然程序无法实现预期的要求.置1,然后执行其它语句,设想按键没有抬起,则

8、因为现在介绍一下本文所用的方法.keymark的值已经变为1,if(!K&&!keymark2.2 举例说明)将不会再次成立,直到当前的按键抬起,即elseif下面是实现按键一次响应问题的常用两种方法.(K)成立时keym

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。