2301_76393938 2023-02-03 11:41 采纳率: 0%
浏览 195
已结题

编写程序,用4位共阳数码管动态显示“1234”这4个字符

问题遇到的现象和发生背景

编写程序,用4位共阳数码管动态显示“1234”这4个字符

遇到的现象和发生背景,请写出第一个错误信息

我自己敲得程序用不了,急着交,来不及修改,想要程序能用在这个电路里

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

所用的代码能够用到这个仿真电路里用的

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

5条回答 默认 最新

  • CodeBytes 2023-02-03 12:09
    关注

    “该回答引用ChatGPT”
    可参考下面的方法,如果可行还请 点击 “采纳”,感谢支持!

    #include <reg52.h>
    
    sbit DIG1 = P2^0;
    sbit DIG2 = P2^1;
    sbit DIG3 = P2^2;
    sbit DIG4 = P2^3;
    
    unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f,
                                  0x66, 0x6d, 0x7d, 0x07,
                                  0x7f, 0x6f, 0x77, 0x7c,
                                  0x39, 0x5e, 0x79, 0x71};
    unsigned char num[4] = {1, 2, 3, 4};
    
    void delay(unsigned int t)
    {
        while (t--);
    }
    
    void main()
    {
        unsigned char i, j;
        while (1)
        {
            for (i = 0; i < 4; i++)
            {
                switch (i)
                {
                    case 0: DIG1 = 0; DIG2 = 1; DIG3 = 1; DIG4 = 1; break;
                    case 1: DIG1 = 1; DIG2 = 0; DIG3 = 1; DIG4 = 1; break;
                    case 2: DIG1 = 1; DIG2 = 1; DIG3 = 0; DIG4 = 1; break;
                    case 3: DIG1 = 1; DIG2 = 1; DIG3 = 1; DIG4 = 0; break;
                }
                P0 = table[num[i]];
                delay(1000);
            }
        }
    }
    
    
    

    代码中,我们首先定义了 4 位数码管的控制引脚,并声明了一个存储数字字母编码的数组 table 和一个存储要显示的数字的数组 num。

    然后,在 main 函数中,我们使用一个循环来遍历 num 数组中的数字,在循环内部,我们使用一个 switch 语句来控制单独激活当前数字对应的数码管。最后,我们将该数字的编码写入 P0 口,

    展开全部

    评论
  • 阳光宅男xxb 2023-02-03 12:38
    关注

    c语言一位共阳数码管编程,实现,共阳四位数码管滚动显示1234的程序,这里帮您找到一些资料,可能对你有所帮助:
    https://blog.csdn.net/weixin_39717704/article/details/117154338
    https://blog.csdn.net/weixin_30827827/article/details/117185462

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-03 14:12
    关注
    评论
  • 哇小侠 2023-02-03 16:31
    关注

    如果使用树莓派或Arduino等单片机来编写程序,则可以实现。

    在编写代码前,需要了解数码管的驱动原理,并安装对应的库文件。

    以Arduino为例,实现方法如下:

    定义数码管驱动芯片、数码管端口以及控制管脚。
    定义4个数码管,并分别接入控制管脚。
    定义字符“1234”对应的数字。
    使用for循环,每次循环控制一个数码管显示一位字符,并延时一段时间。
    重复循环,实现动态显示“1234”的效果。
    以下是Arduino代码的示例:

    #include <LedControl.h>
    
    int dataPin=12;
    int clkPin=11;
    int csPin=10;
    
    LedControl lc=LedControl(dataPin,clkPin,csPin,1);
    
    void setup() {
      lc.shutdown(0,false);
      lc.setIntensity(0,8);
      lc.clearDisplay(0);
    }
    
    void loop() {
      for(int i=0;i<=3;i++)
      {
        lc.setDigit(0,i,i+1,false);
        delay(500);
      }
    }
    
    

    这是一个简单的代码示例,实际应用中可以根据需要进行修改。

    展开全部

    评论
  • Eliot5566 2023-02-03 12:29
    关注

    可以嘗試運行以下代碼
    以下是一个简单的例子,您可以使用它作为参考。请注意,这只是一个模拟
    该回答引用ChatGPT,如果有帮助到您请点个采纳

    
    #include <reg51.h>
    #include <intrins.h>
    
    sbit dig1 = P1^0;
    sbit dig2 = P1^1;
    sbit dig3 = P1^2;
    sbit dig4 = P1^3;
    
    unsigned char code table[] = {
      0x3f, 0x06, 0x5b, 0x4f,
      0x66, 0x6d, 0x7d, 0x07,
      0x7f, 0x6f, 0x77, 0x7c,
      0x39, 0x5e, 0x79, 0x71
    };
    
    void delay_ms(unsigned int t)
    {
      while (t--)
      {
        _nop_();
        _nop_();
        _nop_();
        _nop_();
      }
    }
    
    void display(unsigned char num, unsigned char pos)
    {
      switch (pos)
      {
        case 1:
          dig1 = 0;
          P0 = table[num];
          dig1 = 1;
          break;
        case 2:
          dig2 = 0;
          P0 = table[num];
          dig2 = 1;
          break;
        case 3:
          dig3 = 0;
          P0 = table[num];
          dig3 = 1;
          break;
        case 4:
          dig4 = 0;
          P0 = table[num];
          dig4 = 1;
          break;
        default:
          break;
      }
    }
    
    void main()
    {
      unsigned char i;
      while (1)
      {
        for (i = 0; i < 4; i++)
        {
          display(i, i + 1);
          delay_ms(5);
        }
      }
    }
    
    

    展开全部

    评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月6日
  • 修改了问题 2月4日
  • 创建了问题 2月3日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部