企业博客网bokee.net www.bokee.net http://wbymcs51.blog.bokee.net/  单片机按键去抖动程序设计思路 打印此页

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

http://wbymcs51.blog.bokee.net    2007-3-1

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

                     徐丽红  王佰营

                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 键盘 键处理程序