51 单片机:按键控制灯亮灭和闪烁
扫描二维码
随时随地手机看文章
要求:
上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快,
再按一下灯灭...。
如此循环。
为此,编程如下。
//----------------------------------------------
#include
unsigned char n = 0;
sbit key = P3^4;
sbit led = P0^0;
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j < 500; j++);
}
void readkey(void)
{
unsigned char i, j;
if(!key) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //延时消抖
if(!key) {
while(!key); //等待按键释放
n++;
n %= 4; //n = 0~3
}
}
}
main()
{
while(1) {
switch(n) {
case 0: led = 1; readkey(); break; //熄灭
case 1: led = 0; readkey(); break; //长亮
case 2: delay(); readkey(); //慢速闪烁
case 3: delay(); readkey(); led = ~led; //快速闪烁
}
}
}
//----------------------------------------------
本程序经过了实践验证,可以满足题目的要求。