四个独立按键控制八个灯形成四组流水灯的52单片机的源代码
时间: 2023-12-14 20:39:50 浏览: 99
单片机c语言源程序(51定时器 八个按键控制八个LED 单按键控制数码管加1 点亮P0口所有LED 流水灯暗点流动 流水灯亮点流动 闪烁P0口所有LED 数码管动态扫描加1 数码管动态扫描显示 数组流水灯 双按键控制数码管加减1)
5星 · 资源好评率100%
以下是使用C语言编写的52单片机控制4个按键和8个LED形成4组流水灯的程序:
```c
#include <reg52.h>
sbit key1 = P3^0; // 按键1
sbit key2 = P3^1; // 按键2
sbit key3 = P3^2; // 按键3
sbit key4 = P3^3; // 按键4
sbit led1 = P1^0; // LED1
sbit led2 = P1^1; // LED2
sbit led3 = P1^2; // LED3
sbit led4 = P1^3; // LED4
sbit led5 = P1^4; // LED5
sbit led6 = P1^5; // LED6
sbit led7 = P1^6; // LED7
sbit led8 = P1^7; // LED8
void delay(unsigned int xms)
{
unsigned int i, j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
if(key1 == 0) // 按键1按下
{
led1 = 1;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
delay(500);
}
else if(key2 == 0) // 按键2按下
{
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
delay(500);
}
else if(key3 == 0) // 按键3按下
{
led1 = 0;
led2 = 0;
led3 = 1;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
delay(500);
}
else if(key4 == 0) // 按键4按下
{
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 1;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
delay(500);
}
else // 没有按键按下,形成4组流水灯
{
led1 = 1;
delay(100);
led2 = 1;
delay(100);
led3 = 1;
delay(100);
led4 = 1;
delay(100);
led5 = 1;
delay(100);
led6 = 1;
delay(100);
led7 = 1;
delay(100);
led8 = 1;
delay(100);
led8 = 0;
delay(100);
led7 = 0;
delay(100);
led6 = 0;
delay(100);
led5 = 0;
delay(100);
led4 = 0;
delay(100);
led3 = 0;
delay(100);
led2 = 0;
delay(100);
led1 = 0;
delay(100);
}
}
}
```
在程序中,使用了 `sbit` 关键字定义了单片机的4个按键和8个LED的引脚。接着定义了一个延时函数 `delay`,用于控制LED灯的闪烁速度。
在主函数中,通过判断按键状态来控制LED的亮灭,如果没有按键按下,则形成4组流水灯,即每个LED灯逐个点亮,并延时一段时间后逐个熄灭。程序将不断循环执行,实现LED的灯效。
阅读全文