原创 【小雨的成长】按键的基本应用

2009-4-17 16:19 1832 6 6 分类: MCU/ 嵌入式

呵呵。。。现在小雨我基本上使用C写程序了。。。虽然写的不好。。但是还马马虎虎啦。!!


 


    今天我们写了按键的程序,一个按键控制LED的亮灭!


 


小雨觉得,有扎实的基本功相当于成功了一半。。我就来说说今天我写的这个按键程序吧。。


 


 


   首先,我来说说按键在控制时要注意的地方。说到按键控制,最主要的就是去抖动问题。去抖动可以分为硬件方法和软件方法。


硬件就是,加个电容将这些抖动滤掉。软件方法,就是通过延时避开这一部分抖动。


 


   那抖动一般在什么时刻出现呢?


抖动一般在刚按下去和松开的时候出现。所以我们一般去抖动的过程是:读到按键被按下去,延时一段时间,再判断按键是否真的按下,真的按下,就执行相应操作。  在松开后也会延时一段时间。


 


好。。。下面我们来将程序。。。


/* **************************************
程序要求:
    通过一个按键控制4个LED按BCD码的方式显式.!


作者:hnrain
时间:2008/12/28
*******************************************/


#include "reg51.h"
#define uchar unsigned char
#define uint  unsigned int


sbit button="P1"^0;



void delay(uint z)         //延时子程序
{
  uint n;
      for(n=0;n<z;n++);
}


 


main()
{
   uchar count;
   while(1)
       {


           if(!button)    //判断是否有按键按下。有按键按下执行后面的语句。
     {
         delay(10000);          //延时去抖动
         if(!button)      //再次判断时候真的有按键按下
         {
             count++;
             if(count>15)count=0;
           }
      while(!button);    //等待按键松开
       delay(10000);     //松开后再延时。
    }
   P0 =~count;
  }
}


 


这个程序,不是很难。。我只是想通过这个列子让大家熟悉,了解按键去抖动过程。。


    有什么讲的不对的地方希望大家指出。。。。


 


这是我的程序和仿真

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条