16个 LED 从中间到两端,接着从两端到中间依次亮两个灯,再到从上到下依次点亮。循环反复显示这三种状态。单片机代码
时间: 2024-03-17 15:46:49 浏览: 12
以下是一份基于51单片机的C语言代码实现:
```
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
sbit LED5 = P0^4;
sbit LED6 = P0^5;
sbit LED7 = P0^6;
sbit LED8 = P0^7;
sbit LED9 = P2^0;
sbit LED10 = P2^1;
sbit LED11 = P2^2;
sbit LED12 = P2^3;
sbit LED13 = P2^4;
sbit LED14 = P2^5;
sbit LED15 = P2^6;
sbit LED16 = P2^7;
void Delay(uint t) { //延时函数
uint i;
while (t--)
for (i = 0; i < 110; i++);
}
void main() {
while (1) {
//从中间到两端亮灯
LED8 = 1;
Delay(100);
LED7 = 1;
Delay(100);
LED9 = 1;
Delay(100);
LED6 = 1;
Delay(100);
LED10 = 1;
Delay(100);
LED5 = 1;
Delay(100);
LED11 = 1;
Delay(100);
LED4 = 1;
Delay(100);
LED12 = 1;
Delay(100);
LED3 = 1;
Delay(100);
LED13 = 1;
Delay(100);
LED2 = 1;
Delay(100);
LED14 = 1;
Delay(100);
LED1 = 1;
Delay(100);
LED15 = 1;
Delay(100);
LED16 = 1;
Delay(100);
//从两端到中间依次亮两个灯
LED16 = 0;
Delay(100);
LED1 = 0;
Delay(100);
LED15 = 0;
Delay(100);
LED2 = 0;
Delay(100);
LED14 = 0;
Delay(100);
LED3 = 0;
Delay(100);
LED13 = 0;
Delay(100);
LED4 = 0;
Delay(100);
LED12 = 0;
Delay(100);
LED5 = 0;
Delay(100);
LED11 = 0;
Delay(100);
LED6 = 0;
Delay(100);
LED10 = 0;
Delay(100);
LED7 = 0;
Delay(100);
LED9 = 0;
Delay(100);
LED8 = 0;
Delay(100);
LED7 = 1;
LED9 = 1;
Delay(100);
LED6 = 1;
LED10 = 1;
Delay(100);
LED5 = 1;
LED11 = 1;
Delay(100);
LED4 = 1;
LED12 = 1;
Delay(100);
LED3 = 1;
LED13 = 1;
Delay(100);
LED2 = 1;
LED14 = 1;
Delay(100);
//从上到下依次点亮
LED1 = 1;
LED16 = 1;
Delay(100);
LED2 = 1;
LED15 = 1;
Delay(100);
LED3 = 1;
LED14 = 1;
Delay(100);
LED4 = 1;
LED13 = 1;
Delay(100);
LED5 = 1;
LED12 = 1;
Delay(100);
LED6 = 1;
LED11 = 1;
Delay(100);
LED7 = 1;
LED10 = 1;
Delay(100);
LED8 = 1;
LED9 = 1;
Delay(100);
//灭掉所有LED灯
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LED7 = 0;
LED8 = 0;
LED9 = 0;
LED10 = 0;
LED11 = 0;
LED12 = 0;
LED13 = 0;
LED14 = 0;
LED15 = 0;
LED16 = 0;
Delay(100);
}
}
```
在该代码中,我们使用了16个IO口分别连接到了16个LED灯。在 `main()` 函数中,通过控制每个IO口的输出电平来控制LED灯的亮灭。在每个状态之间都添加了一个短暂的延时,以便让LED灯的亮灭更加明显。循环执行这三种状态的显示,直到程序被停止。