数码管显示按键次数程序
时间: 2023-10-04 18:13:22 浏览: 59
以下是一个使用数码管显示按键次数的示例程序,使用Arduino开发板编写:
```c
int buttonPin = 2; // 按钮输入引脚
int count = 0; // 计数器
int digitPins[] = {3, 4, 5, 6}; // 数码管数字引脚
int segmentPins[] = {7, 8, 9, 10, 11, 12, 13}; // 数码管段引脚
int digits[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() {
pinMode(buttonPin, INPUT);
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], LOW);
}
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], HIGH);
}
}
void loop() {
if (digitalRead(buttonPin) == HIGH) { // 按钮被按下
count++; // 计数器加1
if (count > 9999) { // 计数器达到最大值
count = 0; // 重新计数
}
}
displayNumber(count); // 显示计数器的值
delay(100); // 延时100毫秒
}
void displayNumber(int number) {
int digitsToDisplay[4]; // 存储每个数码管要显示的数字
// 将数字拆分为每位数字
digitsToDisplay[0] = number % 10; // 个位
digitsToDisplay[1] = (number / 10) % 10; // 十位
digitsToDisplay[2] = (number / 100) % 10; // 百位
digitsToDisplay[3] = (number / 1000) % 10; // 千位
// 循环显示每个数码管上的数字
for (int i = 0; i < 4; i++) {
// 显示当前位的数字
for (int j = 0; j < 7; j++) {
digitalWrite(segmentPins[j], digits[digitsToDisplay[i]][j]);
}
// 打开当前位的数码管
digitalWrite(digitPins[i], HIGH);
// 等待一段时间
delay(1);
// 关闭当前位的数码管
digitalWrite(digitPins[i], LOW);
}
}
```
该程序使用一个按钮作为计数器的触发器,每次按下按钮计数器加1,并通过数码管显示计数器的值。程序将数字拆分为每个数码管要显示的数字,并使用一个循环依次显示每个数码管上的数字。显示每个数字时,程序会打开当前位的数码管并显示该位的数字,然后关闭当前位的数码管,等待一段时间后再显示下一位数字。
阅读全文