关于#数码管#的问题,如何解决?

四位数码管循环显示0000 11111 2222 33334444一直到9999四个中断按键按下第一个显示F--1按下第二个显示L--2按下第三个显示b-3按下第四个r-4

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    我建议您使用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的定时器或计时器来实现。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^