八位数码管长按键显示从9999~99999999
时间: 2024-02-20 17:58:41 浏览: 31
可以使用一个长按键来控制数码管的显示范围。下面是一个简单的示例程序,可以实现从 9999 到 99999999 的数字循环显示:
```
#include "8_digit_display.h"
// 定义长按键引脚
#define LONG_PRESS_BUTTON 2
// 定义长按键按下的时间阈值
#define LONG_PRESS_THRESHOLD 1000
// 当前显示的数字
int currentNumber = 9999;
// 记录长按键按下的时间
unsigned long buttonPressTime = 0;
void setup() {
// 初始化数码管引脚
pinMode(DIGIT_1, OUTPUT);
pinMode(DIGIT_2, OUTPUT);
pinMode(DIGIT_3, OUTPUT);
pinMode(DIGIT_4, OUTPUT);
pinMode(DIGIT_5, OUTPUT);
pinMode(DIGIT_6, OUTPUT);
pinMode(DIGIT_7, OUTPUT);
pinMode(DIGIT_8, OUTPUT);
pinMode(SEGMENT_A, OUTPUT);
pinMode(SEGMENT_B, OUTPUT);
pinMode(SEGMENT_C, OUTPUT);
pinMode(SEGMENT_D, OUTPUT);
pinMode(SEGMENT_E, OUTPUT);
pinMode(SEGMENT_F, OUTPUT);
pinMode(SEGMENT_G, OUTPUT);
pinMode(SEGMENT_DP, OUTPUT);
// 初始化长按键引脚
pinMode(LONG_PRESS_BUTTON, INPUT_PULLUP);
}
void loop() {
// 检测长按键是否按下
if (digitalRead(LONG_PRESS_BUTTON) == LOW) {
// 记录按下的时间
buttonPressTime = millis();
// 等待按键释放
while (digitalRead(LONG_PRESS_BUTTON) == LOW) {
delay(10);
}
}
// 检测长按键是否释放,并且按下时间超过阈值
if (digitalRead(LONG_PRESS_BUTTON) == HIGH && millis() - buttonPressTime > LONG_PRESS_THRESHOLD) {
// 重置显示的数字
currentNumber = 9999;
}
// 显示当前数字
displayNumber(currentNumber);
// 更新数字
currentNumber++;
if (currentNumber > 99999999) {
currentNumber = 9999;
}
// 稍微延时一下
delay(100);
}
```
该程序中使用一个长按键(连接到引脚 2)来控制数码管的显示范围。当长按键按下并且按下时间超过 1 秒时,程序会将当前显示的数字重置为 9999。在循环中,程序会不断更新显示的数字,并通过 `displayNumber()` 函数来显示数码管。注意,该程序使用了之前提到的 `8_digit_display.h` 头文件。
阅读全文