lxz 发表于 2016-11-6 21:32:42

数码管动态扫描

int a=7;
int b=13;
int c=12;
int d=10;
int e=11;
int f=6;
int g=9;
int dp=8;
int led_1=2;
int led_2=3;
const byte pins={7,13,12,10,11,6,9,8};//a,b,c,d,e,f,g,dp
const byte digits9 = { 0,0,0,0,1,0,0,1 }; // = 9
const byte digits8 = { 0,0,0,0,0,0,0,1 }; // = 8
const byte digits7 = { 0,0,0,1,1,1,1,1 }; // = 7
const byte digits6 = { 0,1,0,0,0,0,0,1 }; // = 6
const byte digits5 = { 0,1,0,0,1,0,0,1 }; // = 5
const byte digits4 = { 1,0,0,1,1,0,0,1 }; // = 4
const byte digits3 = { 0,0,0,0,1,1,0,1 }; // = 3
const byte digits2 = { 0,0,1,0,0,1,0,1 }; // = 2
const byte digits1 = { 1,0,0,1,1,1,1,1 };// = 1
const byte digits0 = { 0,0,0,0,0,0,1,1 }; // = 0

void setup()
{
    pinMode(a, OUTPUT);   
    pinMode(b, OUTPUT);
    pinMode(c, OUTPUT);
    pinMode(d, OUTPUT);
    pinMode(e, OUTPUT);
    pinMode(f, OUTPUT);
    pinMode(g, OUTPUT);
    pinMode(led_1, OUTPUT);
    pinMode(led_2, OUTPUT);
}
int i=0;
int j=0;
int t=0;

void loop()
{
digitalWrite(led_1,1);
digitalWrite(led_2,0);
t++;                              //十位的数字显示
    if(t<1000)
    {
      display9();
    }else if(t<2000){
      display8();
      }else if(t<3000){
      display7();
      }else if(t<4000){
      display6();
      }else if(t<5000){
      display5();
      }else if(t<6000){
      display4();
      }else if(t<7000){
      display3();
      }else if(t<8000){
      display2();
      }else if(t<9000){
      display1();
      }else if(t<10000){
      display0();
      }else if(t<110000){
      t=0;   
      }
delay(10);
digitalWrite(led_1,0);         //个位的数字显示
digitalWrite(led_2,1);
j++;
    if(j<100)
    {
       display9();
    }else if(j<100){
      display8();
      }else if(j<300){
       display7();
      }else if(j<400){
      display6();
      }else if(j<500){
      display5();
      }else if(j<600){
       display4();
      }else if(j<700){
      display3();
      }else if(j<800){
      display2();
      }else if(j<900){
      display1();
      }else if(j<1000){
      display0();
      }else if(j<1100){
      j=0;   
      }
}
void display9(){                        //显示数字9
for(int k=0;k<8;k++)
digitalWrite(pins,digits9);
delay(2);
}
void display8(){                     //显示数字8
for(int k=0;k<8;k++)
digitalWrite(pins,digits8);
delay(2);
}
void display7(){                      //显示数字7
for(int k=0;k<8;k++)
digitalWrite(pins,digits7);
delay(2);
}
void display6(){                     // 显示数字6
for(int k=0;k<8;k++)
digitalWrite(pins,digits6);
delay(2);
}
void display5(){                     //显示数字5
for(int k=0;k<8;k++)
digitalWrite(pins,digits5);
delay(2);
}
void display4(){                  //显示数字4
for(int k=0;k<8;k++)
digitalWrite(pins,digits4);
delay(2);
}
void display3(){                   //显示数字3
for(int k=0;k<8;k++)
digitalWrite(pins,digits3);
delay(2);
}
void display2(){                   //显示数字2
for(int k=0;k<8;k++)
digitalWrite(pins,digits2);
delay(2);
}
void display1(){                  //显示数字1
for(int k=0;k<8;k++)
digitalWrite(pins,digits1);
delay(2);
}
void display0(){               //显示数字0
for(int k=0;k<8;k++)
digitalWrite(pins,digits0);
delay(2);
}

lxz 发表于 2016-11-6 21:33:43

我感觉代码有点繁琐,求高人指点

ianon 发表于 2016-11-7 07:31:05

不是一般的繁琐:dizzy::dizzy::dizzy:

lxz 发表于 2016-11-7 13:57:14

你有没有简单的方法,给我看看代码啊{:2_25:}

ianon 发表于 2016-11-7 21:11:26

我对Arduino不熟

一般都是进行位操作的

显示一个数字就定义一个函数,这也是绝了,你不会用参数吗?

lxz 发表于 2016-11-8 22:37:58

ianon 发表于 2016-11-7 21:11
我对Arduino不熟

一般都是进行位操作的


我初学,我就会 这个死方法:$

ianon 发表于 2016-12-14 19:35:20

const byte pins={7,13,12,10,11,6,9,8}; //a,b,c,d,e,f,g,dp
定义二维数组
digits = {
    { 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 displayDigit(int i){                        //显示数字i
for(int k=0;k<8;k++)
       digitalWrite(pins,digits);
delay(2);
}

void setup() {
for(int k=0;k<8;k++)
       pinMode(pins, OUTPUT);   
}

供参考
页: [1]
查看完整版本: 数码管动态扫描