arduino 四位共阴极数码管倒数显示错误,如何解决?

四个位都显示8,闪烁十几下之后又同时显示一下0,然后3、4位偶尔显示0,一直无法显示正确数字
检查线路连接没有问题,每个位可单独从9显示到0,但是一起显示就老是8或者0

img

代码:

//a~h 2~9
//com1~4 10~13
char f[10][8]={
{1,1,1,1,1,1,0,0},
{0,0,0,0,1,1,0,0},
{1,1,0,1,1,0,1,0},
{1,1,1,1,0,0,1,0},
{0,1,1,0,0,1,1,0},
{1,0,1,1,0,1,1,0},
{1,0,1,1,1,1,1,0},
{1,1,1,0,0,1,0,0},
{1,1,1,1,1,1,1,0},
{1,1,1,1,0,1,1,0}
};
char fcom[4][4]={
{0,1,1,1},
{1,0,1,1},
{1,1,0,1},
{1,1,1,0}
};

void setup() {
  int i;
  for(i=2;i<=9;i++){
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }
  for(i=10;i<=13;i++){
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }

}

void loop() {
  void num(int t);
  int i,j,k,l,p,c[4]={0};
  for(i=9876;i>=0;i--){
    c[0]=i/1000;
    c[1]=(i/100)%10;
    c[2]=(i%100)/10;
    c[3]=i%10;
    //视觉暂留
    for(l=1;l<=125;l++){
      for(j=0;j<=3;j++){
        for(p=0;p<=3;p++){     //设定阴极;
          pinMode(p+10,fcom[j][p]);
        }
        num(c[j]);
      }
    }
    
    //归零
    for(k=2;k<=9;k++){
      digitalWrite(k,LOW);
    }
    for(k=10;k<=13;k++){
      digitalWrite(k,LOW);
    }
    delay(300);
  }
  

}

void num(int t){
  int x;
  for(x=0;x<=7;x++){
    digitalWrite(x+2,f[t][x]);
  }
  delay(2);
}

检查了很多遍代码也没发现是哪里的问题,请求帮助!!

  • 这篇博客: 基于Arduino的智能小车-代码部分中的 定义相关模块引脚:(注:这里只是粘贴了部分代码) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • int sp1=8;//定义舵机接口数字接口8
    int pulsewidth;//定义脉宽变量
    int v;
    int val1;
    int myangle1;
    const int IN_A1=4;
    const int IN_A2=5;
    const int IN_B1=6;