arduino 接8段数码管实验

9/23/2023 10:17:18 PM
549
0

一、物料

  1. 8段数码管x1
  2. 1k电阻x8
  3. 杜邦线若干

二、接线

  1. 数码管的abcdefg.dp 分别依次接入到开发板针脚4-11上
  2. 数码管的另外两个针脚接开发板的vcc 或者 GND

三、源码

    

/*
      1个8段数码管
      abcdefg,dp 分别接入 针脚4-11
      晶体管每个输入脚接1k电阻限流
    */
    int bgin = 4;
    int end = 11;
    void setup() {
      for (int pin = bgin; pin <= end; pin++) {  // 设置数字引脚2~9为输出模式
        pinMode(pin, OUTPUT);
        digitalWrite(pin, HIGH);
      }
    }
    void loop() {
      // 显示数字0
      int n0[8] = { 0, 0, 0, 0, 0, 0, 1, 1 };
      //数字引脚2~9依次按数组n0[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n0[pin - 4]);
      }
      delay(500);
      // 显示数字1
      int n1[8] = { 1, 0, 0, 1, 1, 1, 1, 1 };
      // 数字引脚2~9依次按数组n1[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n1[pin - 4]);
      }
      delay(500);
      // 显示数字2
      int n2[8] = { 0, 0, 1, 0, 0, 1, 0, 1 };
      // 数字引脚2~9依次按数组n2[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n2[pin - 4]);
      }
      delay(500);
      // 显示数字3
      int n3[8] = { 0, 0, 0, 0, 1, 1, 0, 1 };
      // 数字引脚2~9依次按数组n3[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n3[pin - 4]);
      }
      delay(500);
      // 显示数字4
      int n4[8] = { 1, 0, 0, 1, 1, 0, 0, 1 };
      // 数字引脚2~9依次按数组n4[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n4[pin - 4]);
      }
      delay(500);
      // 显示数字5
      int n5[8] = { 0, 1, 0, 0, 1, 0, 0, 1 };
      // 数字引脚2~9依次按数组n5[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n5[pin - 4]);
      }
      delay(500);
      // 显示数字6
      int n6[8] = { 0, 1, 0, 0, 0, 0, 0, 1 };
      // 数字引脚2~9依次按数组n6[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n6[pin - 4]);
      }
      delay(500);
      // 显示数字7
      int n7[8] = { 0, 0, 0, 1, 1, 1, 1, 1 };
      // 数字引脚2~9依次按数组n7[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n7[pin - 4]);
      }
      delay(500);
      // 显示数字8
      int n8[8] = { 0, 0, 0, 0, 0, 0, 0, 1 };
      // 数字引脚2~9依次按数组n8[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n8[pin - 4]);
      }
      delay(500);
      // 显示数字9
      int n9[8] = { 0, 0, 0, 0, 1, 0, 0, 1 };
      // 数字引脚2~9依次按数组n9[8]中的数据显示
      for (int pin = bgin; pin <= end; pin++) {
        digitalWrite(pin, n9[pin - 4]);
      }
      delay(500);
    }

 

数码管其实就是一个前面介绍的led的组合体,这个组合体包含8个led,所以也称之为八段数码管

共阳数码管,它们公共端接5V,那在代码中,控制另一端的数字引脚为LOW,这样才能让数码管点亮。如果是共阴数码管,公共端接GND,在代码中中,控制另一端数字引脚为HIGH,才让数码管点亮。

所以,共阴共阳只是在代码上要稍作修改。我们这里选用的是共阳数码管。硬件有了了解,我们来看看软件部分

四、效果展示

https://www.bilibili.com/video/BV1Cu4y1z7AH/?vd_source=d376895319c957786764c8b037083c6e

全部评论



提问