Arduino之4位数码管实验(简单秒表)

2025-11-07 14:54:22

Arduino 4位数码管(简单秒表)实验。包含了4位共阴极和共阳极数码管实验的代码。

Arduino之4位数码管实验(简单秒表)

工具/原料

Arduino UNO开发板1块

220欧电阻8个

面包线若干

4位共阴极数码管1个、4位共阳极数码管1个

5v电源1块或电源线1根

面包板1块

电路连线方法

前篇经验对于数码管的管脚做了详细的介绍。如有需要,可参考本人经验:http://jingyan.baidu.com/article/1709ad80bfc8e84634c4f011.html

详细的接线对应图如下表,简单清晰明了。

Arduino之4位数码管实验(简单秒表)

4位共阴极数码管实验代码

int a=1;

int b=2;

int c=3;

int d=4;

int e=5;

int f=6;

int g=7;

int p=8;

int d4=9;

int d3=10;

int d2=11;

int d1=12;

long n=0;

int x=100;

int del=55;

void setup()

{

  pinMode(a,OUTPUT);

  pinMode(b,OUTPUT);

  pinMode(c,OUTPUT);

  pinMode(d,OUTPUT);

  pinMode(e,OUTPUT);

  pinMode(f,OUTPUT);

  pinMode(g,OUTPUT);

  pinMode(p,OUTPUT);

  pinMode(d4,OUTPUT);

  pinMode(d3,OUTPUT);

  pinMode(d2,OUTPUT);

  pinMode(d1,OUTPUT);

}

void loop()

{

  clearLEDs();

  pickDigit(1);

  pickNumber((n/x/1000)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(2);

  pickNumber((n/x/100)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(3);

  dispDec(3);

  pickNumber((n/x/10)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(4);

  pickNumber(n/x%10);

  delayMicroseconds(del);  

  n++;

 if(digitalRead(13)==LOW)

 {

   n=0;

 }

}

void pickDigit(int x)

{

  digitalWrite(d1,HIGH);

  digitalWrite(d2,HIGH);

  digitalWrite(d3,HIGH);

  digitalWrite(d4,HIGH);

  

  switch(x)

  {

    case 1:

      digitalWrite(d1,LOW);

      break;

    case 2:

      digitalWrite(d2,LOW);

      break;

    case 3:

      digitalWrite(d3,LOW);

      break;

    default:

      digitalWrite(d4,LOW);

      break;

  }

}

void pickNumber(int x)

{

  switch(x)

  {

    default:

      zero();

      break;

    case 1:

      one();

      break;

    case 2:

      two();

      break;

    case 3:

      three();

      break;

    case 4:

      four();

      break;

    case 5:

      five();

      break;

    case 6:

      six();

      break;

    case 7:

      seven();

      break;

    case 8:

      eight();

      break;

    case 9:

      nine();

      break;

  }

}

void dispDec(int x)

{

  digitalWrite(p,HIGH);

}

void clearLEDs()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

  digitalWrite(p,LOW);

}

void zero()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,LOW);

}

void one()

{

  digitalWrite(a,LOW);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void two()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,LOW);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,LOW);

  digitalWrite(g,HIGH);

}

void three()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,HIGH);

}

void four()

{

  digitalWrite(a,LOW);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void five()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,LOW);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,LOW);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void six()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void seven()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void eight()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void nine()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,HIGH);

  digitalWrite(d,HIGH);

  digitalWrite(e,LOW);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);  

}

设置引脚工作方式,in为输入,out为输出。

Arduino之4位数码管实验(简单秒表)

共阴极条件下,设置循环条件。

Arduino之4位数码管实验(简单秒表)

数码管显示数字“0”.

Arduino之4位数码管实验(简单秒表)

数码管显示数字“1”.

Arduino之4位数码管实验(简单秒表)

4位共阳极数码管实验代码

int a=1;

int b=2;

int c=3;

int d=4;

int e=5;

int f=6;

int g=7;

int p=8;

int d4=9;

int d3=10;

int d2=11;

int d1=12;

long n=0;

int x=100;

int del=55;

void setup()

{

  pinMode(a,OUTPUT);

  pinMode(b,OUTPUT);

  pinMode(c,OUTPUT);

  pinMode(d,OUTPUT);

  pinMode(e,OUTPUT);

  pinMode(f,OUTPUT);

  pinMode(g,OUTPUT);

  pinMode(p,OUTPUT);

  pinMode(d4,OUTPUT);

  pinMode(d3,OUTPUT);

  pinMode(d2,OUTPUT);

  pinMode(d1,OUTPUT);

}

void loop()

{

  clearLEDs();

  pickDigit(1);

  pickNumber((n/x/1000)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(2);

  pickNumber((n/x/100)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(3);

  dispDec(3);

  pickNumber((n/x/10)%10);

  delayMicroseconds(del);

  

  clearLEDs();

  pickDigit(4);

  pickNumber(n/x%10);

  delayMicroseconds(del);  

  n++;

 if(digitalRead(13)==HIGH)

 {

   n=0;

 }

}

void pickDigit(int x)

{

  digitalWrite(d1,LOW);

  digitalWrite(d2,LOW);

  digitalWrite(d3,LOW);

  digitalWrite(d4,LOW);

  

  switch(x)

  {

    case 1:

      digitalWrite(d1,HIGH);

      break;

    case 2:

      digitalWrite(d2,HIGH);

      break;

    case 3:

      digitalWrite(d3,HIGH);

      break;

    default:

      digitalWrite(d4,HIGH);

      break;

  }

}

void pickNumber(int x)

{

  switch(x)

  {

    default:

      zero();

      break;

    case 1:

      one();

      break;

    case 2:

      two();

      break;

    case 3:

      three();

      break;

    case 4:

      four();

      break;

    case 5:

      five();

      break;

    case 6:

      six();

      break;

    case 7:

      seven();

      break;

    case 8:

      eight();

      break;

    case 9:

      nine();

      break;

  }

}

void dispDec(int x)

{

  digitalWrite(p,LOW);

}

void clearLEDs()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,,HIGH);

  digitalWrite(c,,HIGH);

  digitalWrite(d,,HIGH);

  digitalWrite(e,,HIGH);

  digitalWrite(f,,HIGH);

  digitalWrite(g,,HIGH);

  digitalWrite(p,,HIGH);

}

void zero()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,HIGH);

}

void one()

{

  digitalWrite(a,HIGH);

    digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void two()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void three()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,LOW);

}

void four()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void five()

{

  digitalWrite(a,LOW);

  digitalWrite(b,HIGH);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,HIGH);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void six()

{

  digitalWrite(a,HIGH);

  digitalWrite(b,HIGH);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void seven()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,HIGH);

  digitalWrite(e,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(g,HIGH);

}

void eight()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

}

void nine()

{

  digitalWrite(a,LOW);

  digitalWrite(b,LOW);

  digitalWrite(c,LOW);

  digitalWrite(d,LOW);

  digitalWrite(e,HIGH);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);  

}

器材

Arduino之4位数码管实验(简单秒表)

编程界面

Arduino之4位数码管实验(简单秒表)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢