单片机流水灯循环代码
时间: 2024-09-18 13:06:03 浏览: 82
单片机 流水灯源代码
单片机流水灯是一种常见的电子小项目,它通过轮流点亮一组LED灯,形成动感的效果。下面是一个简单的8个LED灯的单片机流水灯循环示例,假设我们使用的是ATmega328P微控制器(如Arduino Uno),并连接了P0端口作为输出:
```c
#include <avr/io.h>
#define LED_PINS P0 // 把所有LED接到P0口
void delay_ms(unsigned int ms) {
unsigned long start = micros();
while (micros() - start < ms * 1000);
}
void lightLED(int led_num) {
DDRB |= 1 << led_num; // 设置对应位为输出
PORTB |= 1 << led_num; // 开启LED
delay_ms(500); // 灯亮500毫秒
PORTB &= ~(1 << led_num); // 关闭LED
}
int main(void) {
for (int i = 0; i < 8; ++i) { // 循环8次点亮每个LED
lightLED(i);
lightLED((i + 1) % 8); // 使用模运算确保灯依次点亮下一盏
}
while (1); // 无限循环,除非外部中断才会退出
}
```
阅读全文