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

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

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

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

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

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

img

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

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

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

5条回答 默认 最新

  • CodeBytes 2023-02-03 20: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 口,

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月7日
  • 修改了问题 2月4日
  • 创建了问题 2月3日