8个独立按键控制四位一体数码管的程序
时间: 2024-01-21 14:18:54 浏览: 87
下面是一个使用8个独立按键控制四位一体数码管的基本程序,你可以根据需要进行修改和优化:
```
#include <Arduino.h>
const int button1 = 2; // 按钮1连接到数字引脚2
const int button2 = 3; // 按钮2连接到数字引脚3
const int button3 = 4; // 按钮3连接到数字引脚4
const int button4 = 5; // 按钮4连接到数字引脚5
const int button5 = 6; // 按钮5连接到数字引脚6
const int button6 = 7; // 按钮6连接到数字引脚7
const int button7 = 8; // 按钮7连接到数字引脚8
const int button8 = 9; // 按钮8连接到数字引脚9
const int segmentA = A0; // 数码管A段连接到模拟引脚A0
const int segmentB = A1; // 数码管B段连接到模拟引脚A1
const int segmentC = A2; // 数码管C段连接到模拟引脚A2
const int segmentD = A3; // 数码管D段连接到模拟引脚A3
const int segmentE = A4; // 数码管E段连接到模拟引脚A4
const int segmentF = A5; // 数码管F段连接到模拟引脚A5
const int segmentG = 10; // 数码管G段连接到数字引脚10
const int digit1 = 11; // 数码管第一位连接到数字引脚11
const int digit2 = 12; // 数码管第二位连接到数字引脚12
const int digit3 = 13; // 数码管第三位连接到数字引脚13
const int digit4 = A6; // 数码管第四位连接到模拟引脚A6
// 数码管显示数字数组
const 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
};
// 数码管显示位数组
const int digits[4] = {digit1, digit2, digit3, digit4};
void setup() {
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
pinMode(button4, INPUT_PULLUP);
pinMode(button5, INPUT_PULLUP);
pinMode(button6, INPUT_PULLUP);
pinMode(button7, INPUT_PULLUP);
pinMode(button8, INPUT_PULLUP);
pinMode(segmentA, OUTPUT);
pinMode(segmentB, OUTPUT);
pinMode(segmentC, OUTPUT);
pinMode(segmentD, OUTPUT);
pinMode(segmentE, OUTPUT);
pinMode(segmentF, OUTPUT);
pinMode(segmentG, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
}
void loop() {
int number = 0;
if (!digitalRead(button1)) {
number = 1;
} else if (!digitalRead(button2)) {
number = 2;
} else if (!digitalRead(button3)) {
number = 3;
} else if (!digitalRead(button4)) {
number = 4;
} else if (!digitalRead(button5)) {
number = 5;
} else if (!digitalRead(button6)) {
number = 6;
} else if (!digitalRead(button7)) {
number = 7;
} else if (!digitalRead(button8)) {
number = 8;
}
// 显示数字
for (int i = 0; i < 4; i++) {
digitalWrite(digits[i], LOW); // 关闭所有位
digitalWrite(segmentA, numbers[number][0]);
digitalWrite(segmentB, numbers[number][1]);
digitalWrite(segmentC, numbers[number][2]);
digitalWrite(segmentD, numbers[number][3]);
digitalWrite(segmentE, numbers[number][4]);
digitalWrite(segmentF, numbers[number][5]);
digitalWrite(segmentG, numbers[number][6]);
digitalWrite(digits[i], HIGH); // 打开当前位
delay(10);
}
}
```
这个程序使用8个独立的按钮控制数码管显示数字,按下不同的按钮可以显示0到7之间的数字。在程序中,我们使用了一个二维数组来存储每个数字在数码管中的显示方式,然后使用数字位数组来控制数码管的每一位,通过循环依次显示每一位的数字。
阅读全文