51单片机LED灯从两头向内流动代码
时间: 2024-11-25 11:22:18 浏览: 27
在51单片机上控制LED灯的流水灯效果,通常会利用P0口或者其他I/O口作为数据线,通过逐位改变数据线的状态,让LED灯依次点亮,形成从一端到另一端的流动效果。这里给出一个基本的8个LED的C语言示例代码:
```c
#include <reg52.h>
sbit LED_PORT = P0^0; // 定义LED连接的IO口和位
unsigned char delay_time = 100; // 设置延时时间
void delay(unsigned int time) {
for(int i = 0; i < time; i++);
}
void flow_light() {
unsigned char index = 0;
while(1) {
// 开始从左往右流动
for(index = 0; index <= 7; index++) {
LED_PORT = 1 << index; // 点亮当前LED
delay(delay_time); // 延迟
}
// 等待所有LED关闭后再反向流动
delay(4*delay_time); // 全部LED关闭后的延时
// 从右往左流动
for(index = 7; index >= 0; index--) {
LED_PORT = 1 << index; // 点亮当前LED
delay(delay_time);
}
}
}
int main(void) {
flow_light();
return 0;
}
```
阅读全文