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

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

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

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

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

img

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

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

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

“该回答引用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 口,

可以嘗試運行以下代碼
以下是一个简单的例子,您可以使用它作为参考。请注意,这只是一个模拟
该回答引用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);
    }
  }
}

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

如果使用树莓派或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);
  }
}

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