51单片机3个按键控制8个led开关与亮暗的代码
时间: 2024-05-01 18:20:16 浏览: 21
以下是51单片机3个按键控制8个LED开关与亮暗的代码,其中使用了延时函数和按键消抖:
```c
#include <reg52.h>
typedef unsigned char uint8;
sbit LED1 = P1^0; // 定义8个LED引脚
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
sbit KEY1 = P3^0; // 定义3个按键引脚
sbit KEY2 = P3^1;
sbit KEY3 = P3^2;
void delay(uint8 t) // 延时函数
{
uint8 i, j;
for (i = t; i > 0; i--) {
for (j = 110; j > 0; j--);
}
}
uint8 keyScan() // 按键扫描函数
{
if (KEY1 == 0) {
delay(5);
if (KEY1 == 0) {
while (KEY1 == 0);
return 1;
}
} else if (KEY2 == 0) {
delay(5);
if (KEY2 == 0) {
while (KEY2 == 0);
return 2;
}
} else if (KEY3 == 0) {
delay(5);
if (KEY3 == 0) {
while (KEY3 == 0);
return 3;
}
}
return 0;
}
void main()
{
uint8 state = 0; // 状态标志位,0表示灭,1表示亮,2表示闪烁
uint8 key = 0; // 按键值
while (1) {
key = keyScan(); // 扫描按键
switch (key) {
case 1: // 按键1控制8个LED的状态
if (state == 0) {
state = 1;
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 1;
} else if (state == 1) {
state = 0;
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0;
}
break;
case 2: // 按键2控制8个LED的亮暗
if (state != 2) {
state = 2;
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 1;
} else {
state = 1;
}
break;
case 3: // 按键3控制8个LED的闪烁
if (state != 2) {
state = 2;
while (KEY3 == 1) { // 按键3松开后退出闪烁
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 0;
delay(50);
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = LED8 = 1;
delay(50);
}
state = 0;
}
break;
default:
break;
}
}
}
```
在上述代码中,按键1控制8个LED的状态,按键2控制8个LED的亮暗,按键3控制8个LED的闪烁。按键消抖使用了5ms的延时函数,LED闪烁使用了50ms的延时函数。可以根据实际需求调整延时时间。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)