Arduino nano在一个数码管显示数字程序
时间: 2024-05-05 15:01:34 浏览: 137
下面是一个简单的Arduino Nano程序,可以将数字显示在四位数码管上:
```C++
int digitPins[] = {2, 3, 4, 5}; // 数码管引脚
int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; // 数码管段引脚
// 数字对应的段码
byte numbers[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
// 显示数字0-9
for (int i = 0; i < 10; i++) {
displayNumber(i);
delay(1000);
}
}
void displayNumber(int number) {
// 分离数字的每一位
int thousands = number / 1000;
int hundreds = (number / 100) % 10;
int tens = (number / 10) % 10;
int ones = number % 10;
// 数码管显示每一位
digitalWrite(digitPins[0], LOW);
displayDigit(thousands);
delay(1);
digitalWrite(digitPins[0], HIGH);
digitalWrite(digitPins[1], LOW);
displayDigit(hundreds);
delay(1);
digitalWrite(digitPins[1], HIGH);
digitalWrite(digitPins[2], LOW);
displayDigit(tens);
delay(1);
digitalWrite(digitPins[2], HIGH);
digitalWrite(digitPins[3], LOW);
displayDigit(ones);
delay(1);
digitalWrite(digitPins[3], HIGH);
}
void displayDigit(int digit) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], numbers[digit][i]);
}
}
```
这个程序中,`digitPins` 数组定义了数码管的引脚,`segmentPins` 数组定义了各个段的引脚。`numbers` 数组定义了数字对应的段码。`setup()` 函数将引脚设置为输出模式。`loop()` 函数循环显示数字0-9,每个数字显示1秒。
`displayNumber()` 函数将一个四位数字分离成千位、百位、十位和个位,然后调用 `displayDigit()` 函数分别显示每一位。`displayDigit()` 函数根据 `numbers` 数组将数字转换成段码,然后将对应的引脚输出高电平或低电平,以显示数字。
阅读全文