单片机双键控四灯的程序
时间: 2024-01-08 11:02:06 浏览: 31
下面是一个基于51单片机的双键控制四个灯的程序示例:
```c
#include <reg51.h>
#define uchar unsigned char
uchar code led_code[4] = {0x01, 0x02, 0x04, 0x08}; // 四个灯的编码
uchar key_code = 0; // 按键状态
uchar led_status = 0; // 灯的状态
void delay(uchar t) // 延时函数
{
uchar i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
while (1)
{
key_code = P2 & 0x03; // 读取P2口低两位作为按键状态
if (key_code != 0x03) // 如果有按键按下
{
delay(5); // 延时去抖
if (key_code != 0x03) // 再次检测按键状态
{
if (key_code == 0x01) // K1按下
{
led_status++;
if (led_status > 3) // 循环切换四个灯
led_status = 0;
}
else if (key_code == 0x02) // K2按下
{
led_status--;
if (led_status < 0) // 循环切换四个灯
led_status = 3;
}
}
}
P0 = ~led_code[led_status]; // 在P0口输出控制信号
}
}
```
程序中使用了P0口来控制四个灯的状态,P2口的低两位作为按键输入口。按下K1键,会循环切换四个灯的状态;按下K2键,会反向循环切换四个灯的状态。程序中加入了延时去抖的处理,防止按键抖动影响程序执行。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)