Что такое 7-сегментный дисплей?
7-сегментный дисплей — это электронный компонент, состоящий из 7 отдельных светодиодов, расположенных в определенном порядке для отображения цифр (0–9) и некоторых букв. Эти светодиоды обозначены буквами a, b, c, d, e, f, g, а дисплей обычно включает в себя дополнительную десятичную запятую (dp).


В соответствии с различными комбинациями и сочетаниями существует 128 вариантов (арабские цифры и символы) для 7-сегментного дисплея.
Распиновка 7-сегментного дисплея
Распиновка 7-сегментного дисплея зависит от его типа, который в основном делится на две категории: с общим анодом и с общим катодом.

Конфигурация выводов
Ниже приведен пример распределения выводов для типичного 7-сегментного дисплея (обратите внимание, что фактическое распределение выводов может отличаться в зависимости от производителя и модели):
Общий анод:
Все аноды (положительные) 7-сегментного дисплея соединены между собой, и когда катод опускается, соответствующий светодиод загорается.

- g, f, a, b, e, d, c, dp: это контакты сегментов, соответствующие семи сегментам и десятичной запятой соответственно.
- COM: общий анодный контакт, подключенный к VCC.
Общий катод:
Все катоды (отрицательные) 7-сегментного дисплея соединены между собой, и когда анод (положительный) подтягивается вверх, соответствующий светодиод загорается.

Аналогично, выводы сегментов (g, f, a, b, e, d, c, dp) соответствуют сегментам и десятичной запятой, но вывод общего катода (COM) подключен к GND.
Подключение 7-сегментного дисплея
Для работы 7-сегментного дисплея отдельные сегменты (a, b, c, d, e, f, g, dp) должны быть подключены к определенным выходам микроконтроллера. Например, для 7-сегментного дисплея с общим катодом отрицательный конец каждого сегмента подключается к общему выводу заземления, а положительный конец каждого сегмента подключается к разным выходам микроконтроллера.
Базовая настройка проводки
- 7-сегментный дисплей имеет 8 выводов (7 для сегментов и 1 для десятичной точки).
- Каждый вывод, соответствующий сегменту (от a до g), подключен к микроконтроллеру.
- Для конфигурации с общим катодом подключите вывод общего катода к земле.
Пример подключения к Arduino
При подключении 7-сегментного дисплея к Arduino сегментные выводы обычно подключаются к разным цифровым выводам на плате Arduino. Например, в конфигурации с общим анодом сегментные выводы могут быть подключены следующим образом:
- a — вывод 7 Arduino
- b — контакт Arduino 8
- c — контакт Arduino 4
- d — контакт Arduino 3
- e — контакт Arduino 2
- f — контакт 6 Arduino
- g — контакт 5 Arduino
- COM — контакт 9 Arduino (подключен к VCC)
В этой конфигурации для подсветки определенного сегмента соответствующий контакт Arduino устанавливается в положение LOW, а общий анодный контакт остается в положении HIGH.
Как управлять 7-сегментным дисплеем
Ключом к управлению 7-сегментным дисплеем является подача правильного напряжения на отдельные сегменты для формирования желаемого числа или символа.
Отображение чисел
Чтобы отобразить число, микроконтроллер должен включить соответствующие сегменты. Например:
- Для отображения 0 должны светиться сегменты a, b, c, d, e и f, а сегмент g должен оставаться выключенным.

Необходимые компоненты
Подобно светодиодной матрице, этот проект потребует значительного количества проводов и резисторов. Поскольку каждый светодиод нуждается в собственном резисторе для предотвращения перегорания, убедитесь, что у вас есть достаточное количество резисторов. Для всего проекта вам понадобятся следующие компоненты:
- Arduino Uno
- Arduino IDE
- Семисегментный дисплей
- Электрические провода
- 8 резисторов 220 Ом
- Макетная плата
- USB-кабель
Пример кода для отображения чисел
int pin_a = 7, pin_b= 6, pin_c = 5, pin_d = 10, pin_e = 11, pin_f = 8, pin_g = 9, pin_p = 4;
// Segment data for digits 0-9
int numTable[10][8] = {
{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);
}
}
void loop(){
for (int i = 0; i < 10; i++){
digitalWrite(pin_a, numTable[i][0]);
digitalWrite(pin_b, numTable[i][1]);
digitalWrite(pin_c, numTable[i][2]);
digitalWrite(pin_d, numTable[i][3]);
digitalWrite(pin_e, numTable[i][4]);
digitalWrite(pin_f, numTable[i][5]);
digitalWrite(pin_g, numTable[i][6]);
digitalWrite(pin_p, numTable[i][7]);
delay(1000);
}
}
В этом примере массив numTable хранит данные, необходимые для включения соответствующих сегментов для каждой цифры.
Многозначные 7-сегментные дисплеи Проекты
Для многозначных дисплеев самым простым способом управления несколькими 7-сегментными дисплеями является мультиплексирование, другой способ — библиотека Arduino.
Техника мультиплексирования
При мультиплексировании несколько дисплеев используют один и тот же набор управляющих выводов, и каждый дисплей включается последовательно. Это происходит настолько быстро, что человеческий глаз воспринимает все цифры как светящиеся одновременно.
Пример кода для мультиплексирования 7-сегментных дисплеев
const int digitPins[3] = {2, 3, 4}; // Digit selection pins
const int segmentPins[8] = {6, 7, 8, 9, 10, 11, 12, 13}; // Segment pins
int numTable[10][8] = { {0, 0, 0, 0, 0, 0, 1, 1}, {1, 0, 0, 1, 1, 1, 1, 1}, ... };
void setup(){
for (int i = 2; i <= 4; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
for (int i = 6; i <= 13; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
}
}
void loop(){
for (int i = 0; i < 10; i++){
for (int j = 0; j < 3; j++) {
showdigit(i, j);
}
delay(500);
}
}
void showdigit(int num, int digit){
digitalWrite(digitPins[digit], HIGH);
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], numTable[num][i]);
}
delay(500);
digitalWrite(digitPins[digit], LOW);
}
Использование библиотек для управления 7-сегментными дисплеями
Для удобства доступны библиотеки, такие как SevSeg, которые упрощают управление 7-сегментными дисплеями. Эта библиотека полезна для управления многозначными дисплеями, поскольку она абстрагирует большую часть сложной схемы подключения и логики управления.
Мы можем найти и установить SevSeg через меню Arduino: Tools >> Manage Libraries (Инструменты >> Управление библиотеками).

Пример кода с использованием библиотеки SevSeg
#include "SevSeg.h"
SevSeg sevseg;
void setup() {
sevseg.begin(COMMON_CATHODE, 3, digitPins, segmentPins);
}
void loop() {
int readValue = analogRead(A0);
int showValue = map(readValue, 0, 1023, 0, 999);
sevseg.setNumber(showValue, 3);
sevseg.refreshDisplay();
}
Применение 7-сегментных дисплеев
Благодаря своей простоте, удобству использования и низкой стоимости, 7-сегментный дисплей широко используется в различных приложениях, таких как:
- Электронные часы: отображение времени и даты;
- Калькуляторы: отображение результатов вычислений;
- Бытовая техника: дисплеи для таких продуктов, как микроволновые печи, кондиционеры и стиральные машины;
- Приборные панели автомобилей: отображение информации, такой как скорость и пробег;
- Промышленное оборудование: отображение показаний таких устройств, как регуляторы температуры и манометры;
- Лабораторные приборы: отображение экспериментальных данных и результатов;
- Потребительская электроника: дисплей регулировки громкости на аудиооборудовании.
Заключение
7-сегментные дисплеи — это универсальные компоненты, которые позволяют легко отображать числовые данные. Понимание их подключения, методов управления и применения может значительно улучшить функциональность ваших проектов, от простых часов до сложных дисплеев. Независимо от того, используете ли вы мультиплексирование, библиотеки или сдвиговые регистры, существует множество способов эффективного управления 7-сегментными дисплеями, каждый из которых подходит для различных требований проекта.



