2.编程实现8个7段数码管左移轮流显示数字0-9,A-F。
时间: 2024-03-18 20:42:02 浏览: 64
8255_ASM8255_4321_
5星 · 资源好评率100%
以下是用Arduino编写的代码实现8个7段数码管左移轮流显示数字0-9,A-F。
```
int a[8] = {2, 3, 4, 5, 6, 7, 8, 9}; //定义8个引脚,分别连接到数码管的a-g、dp段
int b[16][8] = { //定义一个16行8列的数组,表示0-F在数码管上点亮的位置
{1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 0, 1, 1, 0, 1, 0},
{1, 1, 1, 1, 0, 0, 1, 0},
{0, 1, 1, 0, 0, 1, 1, 0},
{1, 0, 1, 1, 0, 1, 1, 0},
{1, 0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 0, 1, 1, 0},
{1, 1, 1, 0, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0},
{1, 0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 0, 1, 0},
{1, 0, 0, 1, 1, 1, 1, 0},
{1, 0, 0, 0, 1, 1, 1, 0}
};
int digit = 0; //当前显示的数字,范围是0-15
int pin = 0; //当前点亮的引脚,范围是0-7
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(a[i], OUTPUT); //将8个引脚设置为输出模式
}
}
void loop() {
for (int i = 0; i < 8; i++) {
digitalWrite(a[i], b[digit][(pin + i) % 8]); //点亮当前数字的对应引脚
}
delay(2); //等待2毫秒
digitalWrite(a[pin], LOW); //关闭当前点亮的引脚
pin = (pin + 1) % 8; //更新当前点亮的引脚
if (pin == 0) {
digit = (digit + 1) % 16; //更新当前显示的数字
}
}
```
该代码中,定义了8个引脚分别连接到数码管的a-g、dp段,以及一个16行8列的数组,表示0-F在数码管上点亮的位置。在循环中,先点亮当前数字的对应引脚,然后等待2毫秒,关闭当前点亮的引脚,更新当前点亮的引脚,如果所有引脚都点亮过一次,就更新当前显示的数字。这样就可以实现8个7段数码管左移轮流显示数字0-9,A-F了。
阅读全文