极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18754|回复: 6

数码管动态扫描

[复制链接]
发表于 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[8]={7,13,12,10,11,6,9,8};//a,b,c,d,e,f,g,dp
const byte digits9[8] = { 0,0,0,0,1,0,0,1 }; // = 9
const byte digits8[8] = { 0,0,0,0,0,0,0,1 }; // = 8
const byte digits7[8] = { 0,0,0,1,1,1,1,1 }; // = 7
const byte digits6[8] = { 0,1,0,0,0,0,0,1 }; // = 6
const byte digits5[8] = { 0,1,0,0,1,0,0,1 }; // = 5
const byte digits4[8] = { 1,0,0,1,1,0,0,1 }; // = 4
const byte digits3[8] = { 0,0,0,0,1,1,0,1 }; // = 3
const byte digits2[8] = { 0,0,1,0,0,1,0,1 }; // = 2
const byte digits1[8] = { 1,0,0,1,1,1,1,1 };// = 1
const byte digits0[8] = { 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[k],digits9[k]);
  delay(2);
}
void display8(){                       //显示数字8
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits8[k]);
  delay(2);
}
void display7(){                      //显示数字7
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits7[k]);
  delay(2);
}
void display6(){                     // 显示数字6
for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits6[k]);
  delay(2);
}
void display5(){                     //显示数字5
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits5[k]);
  delay(2);
  }
void display4(){                    //显示数字4
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits4[k]);
  delay(2);
  }
void display3(){                   //显示数字3
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits3[k]);
  delay(2);
  }
void display2(){                   //显示数字2
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits2[k]);
  delay(2);
  }
void display1(){                  //显示数字1
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits1[k]);
  delay(2);
  }
void display0(){                 //显示数字0
  for(int k=0;k<8;k++)
  digitalWrite(pins[k],digits0[k]);
  delay(2);
  }
回复

使用道具 举报

 楼主| 发表于 2016-11-6 21:33:43 | 显示全部楼层
我感觉代码有点繁琐,求高人指点
回复 支持 反对

使用道具 举报

发表于 2016-11-7 07:31:05 | 显示全部楼层
不是一般的繁琐
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-7 13:57:14 | 显示全部楼层
你有没有简单的方法,给我看看代码啊{:2_25:}
回复 支持 反对

使用道具 举报

发表于 2016-11-7 21:11:26 | 显示全部楼层
我对Arduino不熟

一般都是进行位操作的

显示一个数字就定义一个函数,这也是绝了,你不会用参数吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-8 22:37:58 | 显示全部楼层
ianon 发表于 2016-11-7 21:11
我对Arduino不熟

一般都是进行位操作的

我初学,我就会 这个死方法
回复 支持 反对

使用道具 举报

发表于 2016-12-14 19:35:20 | 显示全部楼层
const byte pins[8]={7,13,12,10,11,6,9,8}; //a,b,c,d,e,f,g,dp
定义二维数组
digits[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 displayDigit(int i){                        //显示数字i
  for(int k=0;k<8;k++)
       digitalWrite(pins[k],digits[i][k]);
  delay(2);
}

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

供参考
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 09:43 , Processed in 0.065961 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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