arduino驱动数码管3461BS控制4位数码管循环显示0-9,A-F,即第一位数码管显示1,第二位显示2循环下去
时间: 2023-10-01 10:08:20 浏览: 246
数码管循环显示0-9_Vc_
5星 · 资源好评率100%
以下是使用Arduino控制3461BS数码管循环显示0-9,A-F并且实现第一位显示1,第二位显示2的代码:
```
int digitPins[] = {2, 3, 4, 5}; // 数码管的4个引脚
int segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // 数码管的8个段的引脚
char digits[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F'}; // 数码管要显示的字符
int currentDigit = 0; // 当前显示的数码管位置
int currentNumber = 0; // 当前要显示的数字
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
currentNumber++;
if (currentNumber > 15) {
currentNumber = 0;
}
digitalWrite(digitPins[currentDigit], LOW);
showNumber(currentNumber);
digitalWrite(digitPins[currentDigit], HIGH);
currentDigit++;
if (currentDigit > 3) {
currentDigit = 0;
}
delay(100);
}
void showNumber(int number) {
for (int i = 0; i < 8; i++) {
boolean isSegmentOn = bitRead(number, i);
digitalWrite(segmentPins[i], isSegmentOn);
}
if (currentDigit == 0) {
digitalWrite(segmentPins[6], HIGH); // 第一位显示1
}
if (currentDigit == 1) {
digitalWrite(segmentPins[5], HIGH); // 第二位显示2
}
}
```
解释一下代码:
- `digitPins`数组存储数码管的4个引脚,`segmentPins`数组存储数码管的8个段的引脚。
- `digits`数组存储数码管要显示的字符,包括0-9和A-F。
- `currentDigit`变量表示当前显示的数码管位置,初始值为0。
- `currentNumber`变量表示当前要显示的数字,初始值为0。
- `setup()`函数初始化引脚为输出模式。
- `loop()`函数循环执行,每次将当前要显示的数字加一,如果超过15就回到0。然后先将当前数码管引脚设为LOW,显示当前数字,最后将当前数码管引脚设为HIGH。然后将`currentDigit`加一,如果超过3就回到0。延迟100ms。
- `showNumber()`函数根据要显示的数字点亮对应的段。如果当前是第一位数码管,则点亮小数点,显示1;如果当前是第二位数码管,则点亮小数点,显示2。
希望这个代码能够帮助你。
阅读全文