四位数码管循环显示0000 11111 2222 33334444一直到9999四个中断按键按下第一个显示F--1按下第二个显示L--2按下第三个显示b-3按下第四个r-4
不知道你这个问题是否已经解决, 如果还没有解决的话:我建议您使用Arduino来解决这个问题。首先,您需要连接四位数码管和四个中断按键到您的Arduino板上。接下来,您可以编写一个循环,来逐个显示0000、1111、2222、3333、4444这些数字。您需要使用Arduino的延时函数来控制数码管的显示时间。
接着,您需要编写中断服务函数来响应四个中断按键。中断服务函数可以使用Arduino的attachInterrupt()函数来注册到相应的GPIO口上。当按键被按下时,中断服务函数将会被调用。在中断服务函数中,您可以检测哪个按键被按下,并根据按键来设置数码管要显示的数字。
以下是一个简单的代码示例:
#include <Wire.h>
#include <TM1637.h>
// 定义数码管控制口
#define CLK 2
#define DIO 3
// 初始化数码管对象
TM1637 tm1637(CLK, DIO);
// 定义中断按键口
#define KEY_1 4
#define KEY_2 5
#define KEY_3 6
#define KEY_4 7
// 定义中断服务函数
void key1_isr() {
// 设置数码管显示F--1
int data[4] = {0x0f, 0x08, 0x08, 0x38};
tm1637.display(data);
}
void key2_isr() {
// 设置数码管显示L--2
int data[4] = {0x3f, 0x30, 0x30, 0x0e};
tm1637.display(data);
}
void key3_isr() {
// 设置数码管显示b-3
int data[4] = {0x33, 0x3f, 0x38, 0x38};
tm1637.display(data);
}
void key4_isr() {
// 设置数码管显示r-4
int data[4] = {0x30, 0x3c, 0x0e, 0x3c};
tm1637.display(data);
}
void setup() {
// 初始化数码管
tm1637.init();
// 注册中断函数
attachInterrupt(digitalPinToInterrupt(KEY_1), key1_isr, FALLING);
attachInterrupt(digitalPinToInterrupt(KEY_2), key2_isr, FALLING);
attachInterrupt(digitalPinToInterrupt(KEY_3), key3_isr, FALLING);
attachInterrupt(digitalPinToInterrupt(KEY_4), key4_isr, FALLING);
}
void loop() {
// 循环显示0000、1111、2222、3333、4444
for(int i=0; i<5; i++) {
int data[4] = {i, i, i, i};
tm1637.display(data);
delay(1000);
}
}
在这个示例代码中,我们使用了TM1637库来控制数码管的显示,使用了Arduino的attachInterrupt()函数来注册中断服务函数,并在循环中逐个显示0000、1111、2222、3333、4444。
当中断按键被按下时,相应的中断服务函数将会被调用,来设置数码管要显示的数字。请注意,中断服务函数中应该避免使用delay()函数,因为它会阻塞整个程序的执行。如果您需要进行延时操作,请使用Arduino的定时器或计时器来实现。