📌  相关文章
📜  检查是否可以使用七段LED来显示数字(1)

📅  最后修改于: 2023-12-03 15:10:54.336000             🧑  作者: Mango

可以使用七段LED来显示数字吗?

当我们需要在数字显示器上显示数字时,七段LED是一种常用的方法。但在开始使用之前,有必要检查该硬件是否适用于我们的需求。下面是一些方面需要关注的内容。

硬件要求
电压和电流

在选择七段LED时,我们需要确认它们的工作电压范围,并且与我们的控制器电路相匹配。如果电压过高,我们可能需要增加限流电阻来控制电流,否则LED可能会被烧毁。在连接多个LED时,需要考虑总电流是否超出驱动器的容量。

极性

七段LED的安装方向是重要的,因为它们是有极性的。如果极性有误,LED将不会亮起。最好事先确认LED的极性,并在连接时实施正确的极性保护措施。

数字/字母

七段LED可以显示数字和字母。在选择LED时,需要确定它们是否具有适当的数字或字母与我们的应用相匹配的能力。如果需要显示字母,我们需要一些支持多个字符的驱动器。

控制器硬件要求

当使用七段LED时,我们需要一个控制器来驱动它们。以下是一些要关注的事项:

IO口数目

我们需要足够的IO口来控制所有的七段LED。例如,如果要显示一个由三位数字组成的数字,则需要21个IO口。

驱动器芯片

为了方便地驱动七段LED,我们可以使用一种称为驱动器芯片的集成电路,它可以将简化我们的电路设计。不同类型的驱动器芯片可以控制不同数量的七段LED,并提供不同的接口方式。

代码

这段代码展示了如何在Arduino UNO开发板上使用数字按键和七段LED来显示用户输入的数字:

const int digitPins[] = {2, 3, 4, 5}; //引脚定义
const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12};
const int buttonPin = 13;

void setup() {
  for (int i = 0; i < sizeof(digitPins); i++) { //设置引脚为输出
    pinMode(digitPins[i], OUTPUT);
  }
  for (int i = 0; i < sizeof(segmentPins); i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  pinMode(buttonPin, INPUT_PULLUP); //添加按键输入
}

void loop() {
  int digit = 0; //定义变量
  int number = 0;
  if (digitalRead(buttonPin) == LOW) { //按键检测
    delay(10);
    if (digitalRead(buttonPin) == LOW) {
      number++;
    }
    while (digitalRead(buttonPin) == LOW) {};
  }
  if (number > 999) { //限制不超过三位数
    number = 0;
  }
  digit = number / 100; //分解数字
  digitalWrite(digitPins[0], LOW);
  digitalWrite(digitPins[1], HIGH);
  digitalWrite(digitPins[2], HIGH);
  digitalWrite(digitPins[3], HIGH);
  showDigit(segmentPins, digit); //显示数字
  delay(3);
  digit = (number / 10) % 10;
  digitalWrite(digitPins[0], HIGH);
  digitalWrite(digitPins[1], LOW);
  showDigit(segmentPins, digit);
  delay(3);
  digit = number % 10;
  digitalWrite(digitPins[1], HIGH);
  digitalWrite(digitPins[2], LOW);
  showDigit(segmentPins, digit);
  delay(3);
}

void showDigit(int pins[], int digit) { //显示数字函数
  switch (digit) {
    case 0:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], HIGH);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], LOW);
      break;
    case 1:
      digitalWrite(pins[0], LOW);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], LOW);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], LOW);
      digitalWrite(pins[6], LOW);
      break;
    case 2:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], LOW);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], HIGH);
      digitalWrite(pins[5], LOW);
      digitalWrite(pins[6], HIGH);
      break;
    case 3:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], LOW);
      digitalWrite(pins[6], HIGH);
      break;
    case 4:
      digitalWrite(pins[0], LOW);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], LOW);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], HIGH);
      break;
    case 5:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], LOW);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], HIGH);
      break;
    case 6:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], LOW);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], HIGH);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], HIGH);
      break;
    case 7:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], LOW);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], LOW);
      digitalWrite(pins[6], LOW);
      break;
    case 8:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], HIGH);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], HIGH);
      break;
    case 9:
      digitalWrite(pins[0], HIGH);
      digitalWrite(pins[1], HIGH);
      digitalWrite(pins[2], HIGH);
      digitalWrite(pins[3], HIGH);
      digitalWrite(pins[4], LOW);
      digitalWrite(pins[5], HIGH);
      digitalWrite(pins[6], HIGH);
      break;
  }
}

以上是使用数字按键和七段LED显示数字的基本代码示例,程序员可以按照实际需求进行修改和优化。