用动态数码管原理设计显示:第一屏显示年级21-c-1,显示1S,灭屏1S;第二屏显示学号的后6位,显示1S,灭屏1S。如此重复显示。
时间: 2023-09-05 18:04:16 浏览: 106
### 回答1:
这里提供一种基于Arduino的实现方法:
```
#include <TM1637Display.h>
// 定义动态数码管的引脚
#define CLK 2
#define DIO 3
// 初始化动态数码管
TM1637Display display(CLK, DIO);
// 定义要显示的内容
uint8_t grade[] = {0x3f, 0x06, 0x5b, 0x4f}; // "21-c-1"
uint8_t id[] = {0x06, 0x5b, 0x4f, 0x7c, 0x39, 0x5e}; // 后6位学号
void setup() {
// 设置动态数码管的亮度(可选)
display.setBrightness(7);
}
void loop() {
// 显示第一屏(年级)
display.setSegments(grade, 4);
delay(1000);
display.clear();
delay(1000);
// 显示第二屏(学号)
display.setSegments(id, 6);
delay(1000);
display.clear();
delay(1000);
}
```
说明:
1. 首先需要引入 `TM1637Display` 库,这是一个用于控制动态数码管的库。
2. 然后定义动态数码管的引脚,这里我选择了 2 和 3。
3. 初始化动态数码管并设置亮度。
4. 定义要显示的内容,这里我使用了两个数组分别表示年级和学号的后六位。需要注意的是,这里的数码管是共阴极的,所以需要将每个数字的对应段点亮的值取反(例如 `0x3f` 表示数码管上的 "0",但它的二进制表示中,需要将 "0" 的各个段点亮的位取反,才能得到正确的值)。
5. 在 `loop()` 函数中,先显示第一屏,然后延迟 1 秒并清空,再显示第二屏,然后延迟 1 秒并清空,如此循环往复。
6. 最后上传程序到 Arduino 上,就可以看到动态数码管按照要求不断地显示年级和学号了。
### 回答2:
要设计一个滚动显示的动态数码管,按照要求,首先需要一个计时器来控制屏幕的显示和灭屏时间。
首先来设计第一屏的显示内容。首先需要将"年级21-c-1"这个字符串转为对应的数码管显示的数字码。例如,将"年级"转为对应的数字码,将"21"转为对应的数字码,将"c"转为对应的数字码,将"-"转为对应的数字码,将"1"转为对应的数字码。然后按照转换后的数字码依次显示在数码管上,持续1秒钟,然后灭屏1秒钟。
接下来设计第二屏的显示内容。首先需要获取学号的后6位数字,将这6位数字转为对应的数字码。然后按照转换后的数字码依次显示在数码管上,持续1秒钟,然后灭屏1秒钟。
设计好上述的显示内容后,通过计时器来循环控制第一屏和第二屏的显示和灭屏时间。每1秒钟,先显示第一屏的内容持续1秒钟,然后灭屏1秒钟,然后显示第二屏的内容持续1秒钟,然后灭屏1秒钟。如此循环重复,实现滚动显示。
总结:通过利用动态数码管的原理,设计一个滚动显示的屏幕,分别显示"年级21-c-1"和学号的后6位数字,持续1秒钟,然后灭屏1秒钟。通过一个计时器循环控制两个屏幕的显示和灭屏时间,实现滚动显示的效果。
阅读全文