呵呵。。。现在小雨我基本上使用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;
}
}
这个程序,不是很难。。我只是想通过这个列子让大家熟悉,了解按键去抖动过程。。
有什么讲的不对的地方希望大家指出。。。。
这是我的程序和仿真。
文章评论(0条评论)
登录后参与讨论