bodu.com

电子/电气工程师博客

正文 更多文章

单片机按键去抖动程序设计思路

       单片机按键去抖动程序设计思路

                     徐丽红  王佰营

                wbymcs51.blog.bokee.net

   在单片机应用系统设计中,人机界面部分的友好程度,很大一部
分取决于键盘处理程序。在按键时按得快了没有反应,按慢了一连响
应几次,总给人紧迫感或迟钝感,不能使人满意。
用以下思路设计的键处理程序取得了满意效果。
 判断有没有键值:
  1.若有键值:
    判断是否为首次按下:
     A:若首次按下:判断是否与上次按下的键值相同
        a.若相同再判断:是否已经按下了300ms?
            1).若已经按下300ms则将此键做为连键处理。
            2).若不是连键则判断:是否按下20ms?
                1>.若确认按下20ms,得到有效键值等待弹起
                2>.  若不是按下20ms直接结束处理(ret)。
       b.若不相同则将标志清零结束处理(ret)。
     B:若不是首次按下:将键值暂存起来,标志置位结束处理。
  2.若无键值:
   判断是否有键值已被确认
    A.若有键已被确认:判断按键是否首次抬起
        a.若首次抬起:判断抬起延时时间(20ms)是否到达
            1>.若延时到则将标志处理结束处理。
            2>.若延时未到直接结束处理(ret)。
        b.若非首次抬起:直接结束处理(ret)。
    B.若没有键被确认:直接结束处理(ret)。
 具体程序实现流程图如下:(所有延时均为非阻塞式延时)

                      Lcll scan_key----为调用键扫描程序;


    简单的按键处理程序见:简单、友好的按键处理程序设计

                   请点击:--->  简单、友好的按键处理程序设计

关键词:单片机 MCS51 键盘 键处理程序

分享到:

上一篇:“车夫”教我竞争

下一篇:MCS51单片机测频率编程思路

评论 (4条) 发表评论

  • 赵磊
    赵磊 : 王老师,你的这篇文章对我启发很大,因为我刚好在写和这个相关的程序。谢谢!

    2010-07-26 10:00

  • 东北向前
    东北向前 : 俺是鼠爸爸,代表全体鼠客向你致以诚挚的问候。如果有可能请你参加下届的北京奥运会。

    2008-08-05 16:42

  • TY (游客) : 有没有简单的按键查询程序

    2007-10-31 22:14

发表评论
验证码