Arduino 七段数码管显示方法一

我们要做什么

    我们需要让七段数码管显示数字0到9,而且不需要额外的IC,只使用Arduino+七段数码管(共阴极)+七个330欧电阻+一些跳线

本例用到byte数据类型和位操作运算,请参考下文:

arduino Byte数据类型和按位运算

数码管连接图及电路图

Arduino 七段数码管显示方法一

七段数码管引脚图

Arduino 七段数码管显示方法一

电路图

代码如下:

int pins[]={10,9,8,7,6,5,4,3 };

byte number[] ={

  //ABCDEFG /dp

  B11111100,  // 0

  B01100000,  // 1

  B11011010,  // 2

  B11110010,  // 3

  B01100110,  // 4

  B10110110,  // 5

  B10111110,  // 6

  B11100000,  // 7

  B11111110,  // 8

  B11110110,  // 9

};


void display(int num)

{

  for(int i=0;

i<8;

i++)

   {

     
digitalWrite(pins[i],bitRead(number[num],i));

   
}

}

void setup()

{

  for(int i=0;

i<8;

i++)

   {

      pinMode(pins[i],OUTPUT);

   
}

}


void loop()

{

  for(int i=0;

i<10;

i++){

  display(i);

 
delay(1000);

 
}

}

|

    这里的小数点默认是没有点亮的,如果需要点亮小数点的话,只需要,使用函数bitWrite(numer[num],0,1)就好了。

代码如下:

int pins[]={10,9,8,7,6,5,4,3 };

byte number[] ={

  //ABCDEFG /dp

  B11111100,  // 0

  B01100000,  // 1

  B11011010,  // 2

  B11110010,  // 3

  B01100110,  // 4

  B10110110,  // 5

  B10111110,  // 6

  B11100000,  // 7

  B11111110,  // 8

  B11110110,  // 9

};


void display(int num,bool dot)

{

  if(dot==true)

 {

    bitWrite(number[num],0,1);

   
}

    else

   {

      bitWrite(number[num],0,0);

     
}

  for(int i=0;

i<8;

i++)

   {      

     
digitalWrite(pins[i],bitRead(number[num],i));

   
}

}

void setup()

{

  for(int i=0;

i<8;

i++)

   {

      pinMode(pins[i],OUTPUT);

   
}

}


void loop()

{

  for(int i=0;

i<10;

i++){

  display(i,1);

 
delay(1000);

 
}

    for(int i=0;

i<10;

i++){

  display(i,0);

 
delay(1000);

 
}

}

|