// 定义74HC595芯片引脚
const int dataPin = 2; // DS(串行数据输入)
const int latchPin = 3; // ST_CP(锁存器时钟信号)
const int clockPin = 4; // SH_CP(移位寄存器时钟信号)
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
// 控制LED显示
Digi_show(1);
delay(1000);
Digi_show(2);
delay(1000);
Digi_show(3);
delay(1000);
Digi_show(4);
delay(1000);
Digi_show(5);
delay(1000);
Digi_show(6);
delay(1000);
Digi_show(7);
delay(1000);
Digi_show(8);
delay(1000);
Digi_show(9);
delay(1000);
Digi_show(0);
delay(1000);
}
void Digi_show(int t)
{
switch(t)
{
case 0 : displayPattern(0b10000000); break;
case 1 : displayPattern(0b11110011); break;
case 2 : displayPattern(0b01001000); break;
case 3 : displayPattern(0b01100000); break;
case 4 : displayPattern(0b00110010); break;
case 5 : displayPattern(0b00100100); break;
case 6 : displayPattern(0b00000100); break;
case 7 : displayPattern(0b11110000); break;
case 8 : displayPattern(0b00000000); break;
case 9 : displayPattern(0b00100000); break;
default: break;
}
}
// 发送数据到74HC595芯片
void shiftOutData(byte data) {
digitalWrite(latchPin, LOW); // 保持锁存器时钟信号为低电平
// 循环发送8位数据,最高位先发送
for (int i = 7; i >= 0; i--) {
digitalWrite(clockPin, LOW); // 移位寄存器时钟信号置为低电平
// 发送数据位
digitalWrite(dataPin, bitRead(data, i));
digitalWrite(clockPin, HIGH); // 移位寄存器时钟信号置为高电平
}
digitalWrite(latchPin, HIGH); // 锁存数据到输出引脚
}
// 显示LED灯亮灭模式
void displayPattern(byte pattern) {
shiftOutData(pattern); // 发送模式数据到74HC595芯片
}