单片机花式流水灯简单C语言代码
时间: 2024-09-15 14:07:57 浏览: 98
单片机花式流水灯通常使用74HC595移位寄存器配合LED矩阵来实现,这里是一个简单的C语言示例,假设我们用ATmega328P作为控制芯片,比如Arduino Uno平台:
```c
#include <avr/io.h>
#include <util/delay.h>
// 定义74HC595端口引脚
#define DATA_PIN 9 // 数据线连接到数字IO口
#define SH_CPIN 10 // 脉冲串行化控制线
#define RST_PIN 11 // 清零控制线
void setBit(int bit, int pin) {
DDRB |= (1 << pin); // 设置pin为输出
PORTB = (PORTB & ~(1 << pin)) | (bit << pin); // 设置或清除bit
}
void shiftOut(int dataPin, int clockPin, int latchPin, char bits, char value) {
for (int i = bits; i > 0; i--) {
if (value & (1 << (bits - i))) { // 当i为1时,点亮对应位
setBit(1 << clockPin, dataPin);
} else {
setBit(0, dataPin);
}
setBit(1, latchPin); // 发送数据
_delay_us(10); // 等待足够的时间
setBit(0, latchPin); // 撤销发送
}
}
void main() {
DDRC |= (1 << SH_CPIN); // 将SH_CPIN设置为输出
DDRD |= (1 << RST_PIN); // 将RST_PIN设置为输出
// 初始化595和LEDs
shiftOut(DATA_PIN, SH_CPIN, RST_PIN, 8, 0b00000000); // 清空寄存器
while (true) {
// 示例:从左向右扫描,每次循环改变一位
for (int i = 0; i < 8; i++) {
shiftOut(DATA_PIN, SH_CPIN, RST_PIN, 8, i); // 逐位扫描
_delay_ms(50); // 灯亮一段时间
}
// 反向扫描
for (int i = 7; i >= 0; i--) {
shiftOut(DATA_PIN, SH_CPIN, RST_PIN, 8, i); // 逐位扫描反向
_delay_ms(50);
}
}
}
阅读全文
相关推荐


















