数码管
    数码管,又称LED数码管,是常见的用来显示数字的电子器件。通常由八段发光二极管封装在一起组成“8”字形状,外加一个小数点。数码管每一段都是一个独立的LED,通过控制相应段LED的亮灭使其组成相应数字形状来显示数字。
    数码管的8个LED并联在一起,根据公共管脚的不同,分为共阳极数码管和共阴极数码管两种。其区别就是公共管脚是LED灯的正极还是负极。
    数码管_认识数组 - 图1

    如上图,数码管8个段分别命名为A,B,C,D,E,F,G,DP,其封装共10个引脚,其中上下方正中间的是公共极,其他引脚分别对应8个LED的另一端。
    数码管_认识数组 - 图2
    数码管_认识数组 - 图3
    /*
    NixieTube
    控制共阴极数码管显示数字0到9
    */

    //设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
    int pin_a = 7;
    int pin_b = 6;
    int pin_c = 5;
    int pin_d = 10;
    int pin_e = 11;
    int pin_f = 8;
    int pin_g = 9;
    int pin_p = 4;

    //根据共阴极数码管段码表定义0~9显示的各段开关状态
    int numTable[10][8] = {
    //1为点亮,0为关闭
    //a b c d e f g dp
    {1, 1, 1, 1, 1, 1, 0, 0}, //0
    {0, 1, 1, 0, 0, 0, 0, 0}, //1
    {1, 1, 0, 1, 1, 0, 1, 0}, //2
    {1, 1, 1, 1, 0, 0, 1, 0}, //3
    {0, 1, 1, 0, 0, 1, 1, 0}, //4
    {1, 0, 1, 1, 0, 1, 1, 0}, //5
    {1, 0, 1, 1, 1, 1, 1, 0}, //6
    {1, 1, 1, 0, 0, 0, 0, 0}, //7
    {1, 1, 1, 1, 1, 1, 1, 0}, //8
    {1, 1, 1, 1, 0, 1, 1, 0}, //9
    };


    void setup()
    {
    for (int i = 4; i <= 11; i++)
    {
    pinMode(i, OUTPUT); //设置4~11引脚为输出模式
    }
    }

    void loop()
    {
    for (int i = 0; i < 10; i++)//以此显示数字0到9
    {
    digitalWrite(pin_a, numTable[i][0]); //设置a 引脚的电平
    digitalWrite(pin_b, numTable[i][1]); //设置b 引脚的电平
    digitalWrite(pin_c, numTable[i][2]); //设置c 引脚的电平
    digitalWrite(pin_d, numTable[i][3]); //设置d 引脚的电平
    digitalWrite(pin_e, numTable[i][4]); //设置e 引脚的电平
    digitalWrite(pin_f, numTable[i][5]); //设置f 引脚的电平
    digitalWrite(pin_g, numTable[i][6]); //设置g 引脚的电平
    digitalWrite(pin_p, numTable[i][7]); //设置dp引脚的电平
    delay(200);
    }

    }
    程序中定义了一个二位数组用来存储0到9的段码显示。然后在loop中通过for()循环遍历显示0到9,每个数字分别读取对应的段码表来控制相应段LED的亮灭。
    根据使用场所和需求的不同,LED被封装成不同类型的数码管,但其基本原理都是相同的,都需要控制每一个LED的亮灭最终拼凑成需要显示的数字、字母甚至是汉字。