4位LED数码管动态显示实验代码
时间: 2023-08-11 22:07:53 浏览: 125
LED数码管显示实验
以下是一个使用 Arduino 开发板实现的 4 位 LED 数码管动态显示的实验代码:
```c++
// 数码管引脚定义
const int DIGIT_1 = 2;
const int DIGIT_2 = 3;
const int DIGIT_3 = 4;
const int DIGIT_4 = 5;
// 数码管段引脚定义
const int SEG_A = 6;
const int SEG_B = 7;
const int SEG_C = 8;
const int SEG_D = 9;
const int SEG_E = 10;
const int SEG_F = 11;
const int SEG_G = 12;
const int SEG_DP = 13;
// 数码管数字编码定义
const byte DIGIT_CODE[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
// 数字显示缓存
byte digits[4] = {0, 0, 0, 0};
void setup() {
// 初始化数码管引脚
pinMode(DIGIT_1, OUTPUT);
pinMode(DIGIT_2, OUTPUT);
pinMode(DIGIT_3, OUTPUT);
pinMode(DIGIT_4, OUTPUT);
// 初始化数码管段引脚
pinMode(SEG_A, OUTPUT);
pinMode(SEG_B, OUTPUT);
pinMode(SEG_C, OUTPUT);
pinMode(SEG_D, OUTPUT);
pinMode(SEG_E, OUTPUT);
pinMode(SEG_F, OUTPUT);
pinMode(SEG_G, OUTPUT);
pinMode(SEG_DP, OUTPUT);
}
void loop() {
// 模拟动态显示
for (int i = 0; i < 4; i++) {
digitalWrite(DIGIT_1, i == 0 ? HIGH : LOW);
digitalWrite(DIGIT_2, i == 1 ? HIGH : LOW);
digitalWrite(DIGIT_3, i == 2 ? HIGH : LOW);
digitalWrite(DIGIT_4, i == 3 ? HIGH : LOW);
delay(5); // 短暂延迟,使显示效果更流畅
displayDigit(digits[i]); // 显示当前位的数字
}
}
void displayDigit(byte digit) {
// 显示数字
for (int i = 0; i < 7; i++) {
digitalWrite(i + 6, bitRead(digit, i) ? LOW : HIGH); // 设置数码管段的引脚状态
}
}
```
此代码实现了一个 4 位 LED 数码管动态显示的程序,每个数码管的数字会依次显示,形成动态效果。要在数码管上显示具体的数字,可以将需要显示的数字存储在 `digits` 数组中,然后程序会依次显示 `digits` 数组中的数字。
阅读全文