Arduino 数码管两位数计数程序 - C++ 代码示例
以下是一个参考程序,使用 Arduino 和七段数码管实现两位数计数程序,从 00 到 99 循环显示数字。
const int SEG_A = 2;
const int SEG_B = 3;
const int SEG_C = 4;
const int SEG_D = 5;
const int SEG_E = 6;
const int SEG_F = 7;
const int SEG_G = 8;
const int DIGIT_1 = 9;
const int DIGIT_2 = 10;
const byte SEGMENTS[] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b1100110, // 4
0b1101101, // 5
0b1111101, // 6
0b0000111, // 7
0b1111111, // 8
0b1101111 // 9
};
void setup() {
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(DIGIT_1, OUTPUT);
pinMode(DIGIT_2, OUTPUT);
}
void loop() {
for (int i = 0; i < 100; i++) {
displayNumber(i);
delay(500);
}
}
void displayNumber(int number) {
int digit1 = number / 10;
int digit2 = number % 10;
displayDigit(DIGIT_1, digit1);
delay(5);
displayDigit(DIGIT_2, digit2);
delay(5);
}
void displayDigit(int digitPin, int digit) {
byte segments = SEGMENTS[digit];
digitalWrite(digitPin, LOW);
digitalWrite(SEG_A, bitRead(segments, 0));
digitalWrite(SEG_B, bitRead(segments, 1));
digitalWrite(SEG_C, bitRead(segments, 2));
digitalWrite(SEG_D, bitRead(segments, 3));
digitalWrite(SEG_E, bitRead(segments, 4));
digitalWrite(SEG_F, bitRead(segments, 5));
digitalWrite(SEG_G, bitRead(segments, 6));
digitalWrite(digitPin, HIGH);
}
该程序使用 displayNumber 函数显示两位数,并使用 displayDigit 函数显示单个数字的数码管。在 loop 函数中,程序循环显示从 0 到 99 的数字。在 setup 函数中,程序将所有引脚设置为输出模式。
请注意,由于数码管的闪烁问题,我们需要在每个数码管上设置一个短暂的延迟,以防止一个数字的数码管闪烁到下一个数字的数码管上。在这个程序中,我们使用了一个 5 毫秒的延迟。
原文地址: https://www.cveoy.top/t/topic/m3Ym 著作权归作者所有。请勿转载和采集!