点阵跑马灯加三个灯每亮一次点阵也跟着亮
时间: 2023-09-28 14:09:55 浏览: 127
可以使用51单片机的IO口控制点阵和LED灯的亮灭,实现点阵跑马灯和三个灯的闪烁。在程序中可以通过循环控制点阵和LED的亮灭。
以下是一个简单的程序示例:
```c
#include <reg52.h>
sbit D1 = P1^0; // 点阵控制引脚
sbit D2 = P1^1;
sbit D3 = P1^2;
sbit D4 = P1^3;
sbit D5 = P1^4;
sbit D6 = P1^5;
sbit D7 = P1^6;
sbit D8 = P1^7;
sbit LED1 = P2^0; // LED控制引脚
sbit LED2 = P2^1;
sbit LED3 = P2^2;
void delay(unsigned int x) { // 延时函数
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main() {
while (1) {
D1 = 1; D2 = 0; D3 = 0; D4 = 0; D5 = 0; D6 = 0; D7 = 0; D8 = 0; // 第一个点亮
LED1 = 1; LED2 = 0; LED3 = 0; // 第一个灯亮
delay(500); // 延时
D1 = 0; D2 = 1; D3 = 0; D4 = 0; D5 = 0; D6 = 0; D7 = 0; D8 = 0; // 第二个点亮
LED1 = 0; LED2 = 1; LED3 = 0; // 第二个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 1; D4 = 0; D5 = 0; D6 = 0; D7 = 0; D8 = 0; // 第三个点亮
LED1 = 0; LED2 = 0; LED3 = 1; // 第三个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 0; D4 = 1; D5 = 0; D6 = 0; D7 = 0; D8 = 0; // 第四个点亮
LED1 = 1; LED2 = 0; LED3 = 0; // 第一个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 0; D4 = 0; D5 = 1; D6 = 0; D7 = 0; D8 = 0; // 第五个点亮
LED1 = 0; LED2 = 1; LED3 = 0; // 第二个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 0; D4 = 0; D5 = 0; D6 = 1; D7 = 0; D8 = 0; // 第六个点亮
LED1 = 0; LED2 = 0; LED3 = 1; // 第三个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 0; D4 = 0; D5 = 0; D6 = 0; D7 = 1; D8 = 0; // 第七个点亮
LED1 = 1; LED2 = 0; LED3 = 0; // 第一个灯亮
delay(500); // 延时
D1 = 0; D2 = 0; D3 = 0; D4 = 0; D5 = 0; D6 = 0; D7 = 0; D8 = 1; // 第八个点亮
LED1 = 0; LED2 = 1; LED3 = 0; // 第二个灯亮
delay(500); // 延时
}
}
```
在这个程序中,我们使用了51单片机的端口控制点阵和LED灯的亮灭,通过循环控制点阵和LED的亮灭实现点阵跑马灯和三个灯的闪烁。注意,程序中的延时函数可以根据实际需要进行调整,以控制点阵和LED灯的闪烁频率。
阅读全文