你的位置:大电流电感 > 新闻动态

哪位大神帮我看看代码出了什么问题

2022-11-09 06:13:21      点击:
上一篇:[开关电源]直流DCDC驱动一个电机,求推荐开关管型号
想做一个按键控制四位数码管  按键按一下 数码管循环显示数字 再按一下数码管归零 哪位大神帮我看看代码出了什么问题 为什么总是没有数字循环显示?
int a=3;
int b=4;
int c=5;
int d=6;
int e=7;
int f=8;
int g=9;

int d1=13;
int d2=12;
int d3=11;
int d4=10;
//第四位数码管数字
int _4_num=0;
//第三位数码管数字
int _3_num=0;
//第二位数码管数字
int _2_num=0;
//第一位数码管数字
int _1_num=0;
//总的秒数,初始值为0
int total=0;
//判断按钮是否按下过
_Bool isButton=false;
//判断是否开始计时
_Bool isStart=false;

int k[10][8]={
  {0,0,0,0,0,0,1,1},//0
  {1,0,0,1,1,1,1,1},//1
  {0,0,1,0,0,1,0,1},//2
  {0,0,0,0,1,1,0,1},//3
  {1,0,0,1,1,0,0,1},//4
  {0,1,0,0,1,0,0,1},//5
  {0,1,0,0,0,0,0,1},//6
  {0,0,0,1,1,1,1,1},//7
  {0,0,0,0,0,0,0,1},//8
  {0,0,0,0,1,0,0,1}};//9

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  //初始化引脚xxxx
  for(int i=3;i<=10;i++){
    pinMode(i,OUTPUT);
  }
  pinMode(d1,OUTPUT);
  pinMode(d2,OUTPUT);
  pinMode(d3,OUTPUT);
  pinMode(d4,OUTPUT);
  //初始条件下默认显示为0
  disShuMaG(total);
  //2号引脚设为中断事件触发引脚
  //当产生高电平时触发
  //按钮接5v
  attachInterrupt(0, onChanged, CHANGE);
}

void loop() {
  //初始条件下第一次按开始计时
  //再次按下暂停
  //当已经暂停,再次按下后重新开始计时
  IF(isStart && isButton==false){
     //进行递增显示数字
     disShuMaG(total++);
  }
    Serial.println(total);

}

//这是显示函数,
//函数传入一个int类型的数,是要显示的数
//第二个int类型表示表示要显示的数码管
void display(int num, int index){
  
  for(int i=0;i<8;i++){
    digitalWrite(index, HIGH);
    digitalWrite(3+i, k[num]);
   
  }
  digitalWrite(index, LOW);
}

//将总的函数转化为对应四个数码管上显示的数字
//函数传入一个int类型的数,是要显示的数
void disShuMaG(int total){
  _1_num=total/1000;     //第一个数码管要显示的数字
  _2_num=total%1000/100; //第二个数码管要显示的数字
  _3_num=total%100/10;  //第三个数码管要显示的数字
  _4_num=total%10;     //第四个数码管要显示的数字
  //进行数字显示
  for(int i=0;i<25;i++){
//    disPlay(_1_num, d1);
//    delay(1000);
//    disPlay(_2_num, d2);
//    delay(1000);
    disPlay(_3_num, d3);
    delay(1000);
    disPlay(_4_num, d4);
    delay(1000);
  }
}

//中断函数
void onChanged(){
  Serial.println("onChanged");
  //开始计时
  if(isStart==false && isButton==false){
    isStart=true;
    return;
  }
  //暂停
  if(isStart==true && isButton ==false){
    isButton=true;
     return;
  }
  //重新开始
  if(isStart==true && isButton==true){
    isStart=false;
    isButton=false;
    total=0;
     return;
  }
}


没有人回答吗????


如果我没说错,你这个程序是复制别人的吧?


数码管的共阴共阳问题判断了吗?共阴共阳在接线上也存在些许差别


一点一点开    自己写就好了