两位数码管的动态扫描(十位和个位用if语句)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5411|回复: 2

两位数码管的动态扫描(十位和个位用if语句)

[复制链接]
发表于 2016-11-24 22:17 | 显示全部楼层 |阅读模式
int a=2;//定义数字接口2 连接a 段数码管
int b=3;// 定义数字接口3 连接b 段数码管
int c=4;// 定义数字接口4 连接c 段数码管
int d=5;// 定义数字接口5 连接d 段数码管
int e=6;// 定义数字接口6 连接e 段数码管
int f=7;// 定义数字接口7 连接f 段数码管
int g=8;// 定义数字接口8 连接g 段数码管
int dp=9;// 定义数字接口9 连接dp 段数码管
int leftCOM=10;// 定义数字接口10
int rightCOM=11;// 定义数字接口11
int m=0;
int t=0;

void digital_0(void) //显示数字0
{
unsigned char i;
digitalWrite(g,HIGH);
digitalWrite(dp,HIGH);
for(i=2;i<=7;i++)
digitalWrite(i,LOW);
}
void digital_1(void) //显示数字1
{
unsigned char i;
digitalWrite(b,LOW);//给数字接口3 引脚高电平,点亮b段
digitalWrite(c,LOW);//点亮c 段
for(i=5;i<=9;i++)//熄灭其余段
digitalWrite(i,HIGH);
digitalWrite(a,HIGH);
}
void digital_2(void) //显示数字2
{
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(g,LOW);
digitalWrite(c,HIGH);
digitalWrite(f,HIGH);
digitalWrite(dp,HIGH);
}
void digital_3(void) //显示数字3
{
  unsigned char i;
for( i=2;i<=5;i++)//熄灭其余段
digitalWrite(i,LOW);
digitalWrite(g,LOW);
digitalWrite(f,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void digital_4(void) //显示数字4
{
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(a,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void digital_5(void) //显示数字5
{
digitalWrite(a, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b,HIGH);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);

}
void digital_6(void) //显示数字6
{
unsigned char i;
for(i=4;i<=8;i++)
digitalWrite(i,LOW);
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(dp,HIGH);
}
void digital_7(void) //显示数字7
{
unsigned char i;
for(i=2;i<=4;i++)
digitalWrite(i,LOW);
for(i=5;i<=9;i++)
digitalWrite(i,HIGH);
}
void digital_8(void) //显示数字8
{
for( int i=2;i<=8;i++)
digitalWrite(i,LOW);
digitalWrite(dp,HIGH);
}
void digital_9(void) //显示数字9
{
unsigned char i;
for(i=2;i<=5;i++)
digitalWrite(i,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(e,HIGH);
digitalWrite(dp,HIGH);
}
void setup()
{
int i;//定义变量
for(i=2;i<=11;i++)
pinMode(i,OUTPUT);//设置2~11 引脚为输出模式
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
}

void loop() {
  digitalWrite(leftCOM,HIGH);
  digitalWrite(rightCOM,LOW);
m++;                               //十位的数字显示 2,1,0的十位
   if(m<1000)
    {
      display2();
    } else if(m<2000){
      display1();
       } else if(m<3000){
      display0();
      }else if(m<4000){
      m=1;
      }
   delay(2);  
digitalWrite(leftCOM,LOW);   //个位的数字显示
digitalWrite(rightCOM,HIGH);
t++;
   if(t<100)
    {
       display9();
    }else if(t<200){
      display8();
      }else if(t<300){
       display7();
      }else if(t<450){
        display6();
      }else if(t<500){
        display5();
      }else if(t<600){
       display4();
      }else if(t<700){
      display3();
      }else if(t<800){
      display2();
      }else if(t<900){
       display1();
      }else if(t<1000){
        display0();
      }else if(t<1100){
        t=0;     
      }


}   


void display9(){                        //显示数字9带延时
  digital_9();
  delay(2);
}
void display8(){                       //显示数字8带延时
  digital_8();
  delay(2);
}
void display7(){                      //显示数字7带延时
  digital_7();
  delay(2);
}
void display6(){                     // 显示数字6带延时
digital_6();
delay(2);
}
void display5(){                     //显示数字5带延时
  digital_5();
  delay(2);
  }
void display4(){                    //显示数字4带延时
  digital_4();
  delay(2);
  }
void display3(){                   //显示数字3带延时
  digital_3();
  delay(2);
  }
void display2(){                   //显示数字2带延时
digital_2();
  delay(2);
  }
void display1(){                  //显示数字1带延时
digital_1();
  delay(2);
  }
void display0(){                 //显示数字0带延时
digital_0();
  delay(2);
  }


发表于 2016-12-15 18:30 | 显示全部楼层
嗯,数字的编写,可以尝试使用二进制数数组来代替,这样,可以减少程序的编写量
发表于 2016-12-15 18:45 | 显示全部楼层
楼上说得有道理  看起来不是很烦的功能  有着很烦的代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 04:28 , Processed in 0.300539 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表