4 сегментный индикатор. Arduino и четырехразрядный семисегментный индикатор

На этот раз, в статье будет рассмотрен один из интереснейших модулей, а именно - многоразрядный семисегментный индикатор на базе микросхемы MAX7219. Почему многоразрядный? Ответ прост - количество разрядов это и есть количество цифр, которое может отобразить модуль. Например, на фото ниже, показаны три вида многоразрядных индикаторов, слева направо - 4-х разрядный, 6-ти разрядный, 8-ми разрядный. Причем первый является 4-х разрядным индикатором часового типа. Отличие индикатора часового типа от обычного в том, что у него есть знак двоеточия, тогда как у обычного любого индикатора этот знак заменяется точкой внизу, рядом с цифрой.

В этой статье, рассматриваемые модули работают на базе микросхемы MAX7219 . Эта микросхема является драйвером для светодиодных семисегментных индикаторов, а также LED матриц 8х8, и мы не будем рассматривать принципиальные схемы подключения этого драйвера. Просто за основу взят готовый модуль, будут приведены примеры подключения к плате Arduino UNO и разобрана работа с функциями библиотеки LedControl . Кстати, как уже было сказано - LED матрицы 8х8 тоже работают на базе драйвера MAX7219 , и кому интересно то добро пожаловать в статьи:

Итак, начнем... Думаю что про многоразрядность было дано хорошее описание, а вот почему семисегментный? Ответ тоже не так уж и сложен - потому что для формирования символа или отображения цифры используется семь светодиодов, проиндексированных буквами A, B, C, D, E, F, G, таблица ниже показывает как это обозначено:

Как видно из таблицы, есть также и восьмой светодиод - DP. Полностью закодировать символ или цифру можно в 1 байте, устанавливая или сбрасывая определенный бит, как это показано с примером кодирования символа J. В примере установлены биты B, C, D, E , что позволяет отобразить заданный символ на семисегментном индикаторе.

От теории к практике - подключим 8-ми разрядный модуль к плате Arduino Uno по указанной ниже схеме:

Для отображения символов используется несколько функций из подключаемой библиотеки LedControl.h. Разберем каждую из этих функций по порядку, начнем с функции setDigit().

Прототип объявления функции для отображения числа и передаваемые функции аргументы:

setDigit(int addr, int digit, byte value, boolean dp);

Где -

i nt addr - адрес модуля на шине SPI 0 SPI начинается с нуля)

int digit - 0 , 7

byte value - значение(число от 0 до 9) которое нужно отобразить в разряде номер которого указан в параметре int digit

boolean dp - int digit . Если параметр равен true то точка отобразится, если false то точка не отобразится.

Прототип объявления функции для отображения символа и передаваемые функции аргументы:

setChar(int addr, int digit, char value, boolean dp);

i nt addr - адрес модуля на шине SPI для которого вызывается функция, если модуль один - то этот параметр равен 0 (по умолчанию адресация устройств на шине SPI начинается с нуля)

int digit - порядковый номер разряда в модуле индикации, по умолчанию для многоразрядных индикаторов нумерация разрядов начинается с крайнего правого разряда, соответственно номер крайнего правого разряда равен 0 , а номер крайнего левого разряда в нашем случае равен 7

char value - символ, который должен отобразиться в разряде номер которого задан параметром int digit

boolean dp - этот параметр отвечает за отображение точки у разряда номер которого указан в параметре int digit . Если параметр равен true то точка отобразится, если false то точка не отобразится.

Отдельным моментом стоит упомянуть, что функция setChar() может отобразить только ограниченный набор символов, таких как:

  • 0 1 2 3 4 5 6 7 8 9 цифра отображается как символ
  • A a
  • B b
  • С с символ отобразится в нижнем регистре
  • D d символ отобразится в нижнем регистре
  • E e символ отобразится в верхнем регистре
  • F f символ отобразится в верхнем регистре
  • H h символ отобразится в нижнем регистре
  • L l символ отобразится в верхнем регистре
  • P p символ отобразится в верхнем регистре
  • - знак "минус"
  • . , отображение точки
  • _ символ подчеркивания
  • <Пробел> установить символ пробела

В тестовом скетче можно поставить задачу такого плана:

  1. Отобразить поочередно цифры от 1 до 8 без точки
  2. Заполнить цифрами от 1 до 8 все разряды модуля индикации, плюс отобразить все точки указаных разрядов
  3. Отрисовать поразрядно массив с заранее закодированными в двоичном коде символами, в результате должно получиться "Arduino rules!!!"

Из-за ограниченного набора символов функция setChar() не подходит для тестового скетча, так как она не сможет нормально отрисовать фразу указанную в пункте 3. Вместо этой функции мы будем использовать функцию setRow() . Итак... функция setRow() уже была нами испытана в в статьях про изучение Led матриц 8х8, давайте вновь опишем прототип вызова и параметры данной функции.

Прототип объявления функции setRow() и передаваемые функции аргументы:

setRow(int addr, int row, byte value);

i nt addr - адрес модуля на шине SPI для которого вызывается функция, если модуль один - то этот параметр равен 0 (по умолчанию адресация устройств на шине SPI начинается с нуля)

int row - порядковый номер разряда в модуле индикации, по умолчанию для многоразрядных индикаторов нумерация разрядов начинается с крайнего правого разряда, соответственно номер крайнего правого разряда равен 0 , а номер крайнего левого разряда в нашем случае равен 7

byte value - значение в двоичном формате(пример B00000000, также возможна альтернатива в десятичном и шестнадцатиричном), которым закодирован необходимый символ. Таблица кодирования символов поможет правильно закодировать нужный символ.

Ну и в завершение статьи тестовый скетч и видео, как это работает:

#include "LedControl.h" /* * Подключаем библиотеку LedControl.h * и создаём объект класса LedControl * при этом, 7-ми сегметный дисплей с драйвером MAX72xx * должен быть подключен к плате Arduino следующим образом: * Arduino -> Display Module MAX72xx * Arduino -> Display Module MAX72xx * Arduino -> Display Module MAX72xx * Arduino -> Display Module MAX72xx * Arduino -> Display Module MAX72xx * */ LedControl lc = LedControl(12, 11, 10, 1); //Массив с закодированными символами, //Фраза "Arduino ruLES!!!" byte ar = { B01110111, //A B00000101, //r B00111101, //d B00011100, //u B00010000, //i B00010101, //n B00011101, //o B00000101, //r B00011100, //u B00001100, //l B01001111, //E B01011011, //S B10110000, //! B10110000, //! B10110000 //! }; void setup() { //Устройство(7-ми сегментный дисплей) выводим из спящего режима lc.shutdown(0, false); //Установить яркость дисплея на 8 //Всего возможных режимов яркости от 0 до 15 lc.setIntensity(0,8); //Очистить дисплей lc.clearDisplay(0); } void loop() { //Простейший перебор чисел от 1 до 8 по разрядам for(int i = 0, j = 7; i < 8, j >= 0; i++, j--) { lc.setDigit(0, j, byte(i + 1), false); delay(400); lc.clearDisplay(0); } //Перебор чисел без очистки экрана for(int i = 0, j = 7; i < 8, j >= 0; i++, j--) { lc.setDigit(0, j, byte(i + 1), true); delay(400); } lc.clearDisplay(0); //Отрисовка фразы "Arduino ruLES!!!" int n = 0; for(int i = 0; i < 2; i ++) { for(int j = 7; j >= 0; j --) { if(n > 6 && !(i % 2)) { continue; } else { lc.setRow(0, j, ar[n]); delay(400); n ++; } } lc.clearDisplay(0); } delay(400); lc.clearDisplay(0); }


Пожалуйста, включите javascript для работы комментариев.

По просьбе трудящихся решил я рассказать о замечательной вещи под названием 7-ми сегментный светодиодный индикатор. Для начала что это такое. Вот такая вот штука. Это один разряд, так же бывают двух разрядные, трех и четырех разрядные. Видел еще шести разрядные. После каждого разряда стоит десятичная точка. Если разрядов четыре, то чаще всего после второго разряда можно встретить двоеточие для индикации секунд, при выводе времени. Разобравшись с железками давайте перейдем к изучению схемы. Что вообще такое динамическая индикация и зачем она нужна. Так-как индикатор 7-ми сегментный, то для отображения цифры используется всего 7 сегментов. Обозначаются они всегда латинскими буквами A, B, C, D, E, F, G и DP Смотрим картинку. Под каждым сегментом расположен светодиод. Все светодиоды одним концом объеденены. Либо анодами либо катодами, а противоположные концы выведены наружу. Легко заметить что для отображения цифры необходимо использовать 8 выводов. Один общий и семь для сегментов. Если это касается одного разряда, то тут думать не о чем, просто вешаем все на один порт. А если разрядов четыре? Восемь помножим на четыре будет тридцать два. О... Да над таким индикатором 32 мега будет одна корпеть. Так дело не пойдет. Есть два решения. Наша с вами динамическая индикация либо статическая. Что бы дальше разбираться, давайте посмотрим схему включения индикатора.

Данная схема подразумевает динамическую индикацию. Да что я все динамическая да статическая. В чем разница?. Статическая индикация - это когда мы задали каждому разряду по своей цифре и она постоянно горит, а динамическая - это когда мы выводим цифру в первый разряд, потом его гасим и выводим во второй разряд, потом его гасим и выводим в третий разряд и так далее пока не закончатся разряды. После последнего разряда переходим опять к первому и так по кругу. Если это делать медленно то можно будет лицезреть цифровую бегущую строку, а если увеличить скорость к примеру до 50 Гц, то уже мерцания глаз не увидит. Вот таким образом и работает динамическая индикация. Давайте теперь разберем схему. Слева МК ATmega8 за ней на порту D висит микросхема 74ALS373. Зачем она нужна? Дело в том что индикатор это просто 8 светодиодов собранных в некую матрицу. То есть индикатор можно представить в виде линейки из 8 светодиодов. А как известно светодиоды кушают по отношению к МК ого го сколько. Конечно не возбраняется подключение напрямую, но лучше поставить между МК и индикатором какой-нибудь ретранслятор. Вот для этих целей я и решил использовать 8-и разрядный буфер с защелкой. Почему именно его. С учетом того что индикатор я использую с общим анодом, то есть для задачи цифры активный уровень 0, то можно было бы смело использовать микросхему ULN2003A(7 транзисторных сборок по схеме Дарлингтона) и не париться с буфером, но... Но в том что ULN2003A имеет на борту только NPN транзисторы и я могу использовать индикатор только с общим анодом, а если нужно поставить с общим катодом? Вот тут и поможет буфер, так как что я туда напишу, то и будет на выходе. Хочешь 0, хочешь 1. Управляющие ножки подключены в режиме транслятора. То есть буфер выводит на выход тоже самое что и на входе. Аля псевдо гальваническая развязка. За буфером следуют токоограничивающие резисторы. Помним, это светодиоды и без резисторов сгорят. Номинал резисторов нужно подбирать чуть меньше чем допустимо. Дело в том что динамическая индикация выводит символы с некой частотой и она с родни ШИМу, то есть чем выше частота, тем выше так сказать контрастность. И при максимально комфортной контрастности цифры будут светить чуть тускнее. По этому резисторы нужно брать чуть меньшего номинала. Я использовал 360Ом только потому что у меня такие были в наличии. Далее после резисторов наш индикатор. С другой стороны, где аноды, я подключил первые четыре разряда порта С. Так, со схемой вроде разобрались. Теперь давайте обсудим алгоритм программы. Для того чтобы поочередно включать разряды индикатора, напишем отдельную функцию и будем ее бесконечно вызывать в основном теле программы. Конкретнее, функция будет получать число от 0 до 9999, рабирать его на разряды и потом выводить каждый разряд на своем месте. Если число имеет количество разрядов меньше 4, то пустышки слева будем заполнять нулями. Ровняемся по правому краю. Бегать по разрядам будем слева направо. Чтобы было видно какие-нибудь действия, то мы используя прерывания от счетчика, раз в секунду будем увеличивать выводимое число на единицу. Так задача поставлена, к бою. #define F_CPU 7372800UL // Частота кварца #include #include #include volatile unsigned int test = 9980; // Переменная для вывода на индикатор ISR(TIMER1_COMPA_vect) // Обработчик прерывания по совпадению таймера 1 { test++; // Увеличить выводимое число if(test > 9999) test = 0; // Если вышел за пределы четырех разрядов, обнулить TCNT1H=0x00; // Сброс регистра TCNT1L=0x00; // счета } void dig_out(int num); // Объявление функции вывода на индикатор int main(void) { DDRC = 0x0F; // Настройка портов DDRD = 0xFF; // для работы с индикатором Порт С для разрядов, Порт D для цифр TCCR1A=0x00; // Настройка таймера TCCR1B=0x04; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x70; OCR1AL=0x80; TIMSK=0x10; sei(); // Разрешение прерываний while(1) { dig_out(test); //Постоянно вызываем функцию вывода текущего числа } } void dig_out(int num) // Функция для вывода на индикатор 4-х разрядов { unsigned char i = 0; // Переменная счетчика unsigned char raz = 1; // Номер разряда unsigned char dig_num = {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; // Коды цифр для индикатора с общим анодом unsigned char dig = {0, 0, 0, 0}; // Массив для значения разряда if(num { dig =0; dig =0; dig =0; } if(num // Для заполнения нулями левых разрядов { dig =0; dig =0; } if(num // Для заполнения нулями левых разрядов { dig =0; } while(num > 999) // Получение количества тысяч { dig++; num -= 1000; } while(num > 99) // Получение количества сотен { dig++; num -= 100; } while(num > 9) // Получение числа десятков { dig++; num -= 10; } dig = num; // Получения количества единиц while(raz // Крутимся пока не заполним все 4 разряда { PORTC = raz; // Выбираем разряд PORTD = dig_num]; // Выводим цифру raz = raz// Сдвигаемся на следующий разряд i++; // Увеличиваем индекс следующей цифры _delay_ms(1); // Задержка 1 мс } } Вот и весь код. Расписывать его не буду так как он имеет комментарии к каждой строке. Ниже можно скачать архив с проектом под AtmelStudio6.2 Если все же возникнут вопросы, то милости просим на форум. Ну и для самых привередливых ниже видео все этой балалайки))).

Подключение семисегментного индикатора к Arduino – это прекрасный проект начального уровня, позволяющий познакомиться с платой Arduino поближе. Но довольно просто осуществляется. Поэтому мы несколько усложним задачу и подключим четырехразрядный семисегментный индикатор.



В данном случае будем использовать модуль четырехзначного светодиодного индикатора с общим катодом.


Каждый сегмент в модуле индикатора мультиплексирован, то есть он разделяет одну анодную точку соединения с другими сегментами своего разряда. И каждый из четырех разрядов в модуле имеет собственную точку подключения с общим катодом. Это позволяет каждую цифру включать или выключать независимо. Кроме того, такой метод мультиплексирования позволяет микроконтроллеру использовать только одиннадцать или двенадцать выводов вместо тридцати двух.



Светодиодные сегменты индикатора требуют подключения токоограничивающих резисторов при питании от 5 В на логическом выводе. Значение резистора обычно берется между 330 и 470 Ом. Также рекомендуется использование транзисторов для обеспечения дополнительного тока, поскольку каждый вывод микроконтроллера может выдавать максимум 40 мА. Если включить все сегменты разряда (цифра 8), то потребляемый ток превысит этот предел. На рисунке ниже показана схема подключения четырехразрядного семисегментного индикатора с применением транзисторов токоограничивающих резисторов.



Далее приведены схемы подключения индикатора к выводам Arduino. Здесь использованы биполярные npn-транзисторы BC547. Потенциометр 10 КОм, подключенный ко входу платы A0 позволяет изменять отображаемое на индикаторе значение от 0 до 1023.




На плате Arduino цифровые выходы D2-D8 в данном случае предназначены для управления сегментами от «a» до «g», а цифровые выходы D9-D12 используются для управления разрядами от D0 до D3. Следует заметить, что в данном примере точка не используется, но в скетче, приведенном ниже, есть возможность ее задействовать. Вывод D13 платы Arduino зарезервирован для управления сегментом точки.



Ниже представлен код, который позволяет управлять четырехразрядным сегментным индикатором с помощью платы Arduino. В нем в массиве numeral задаются коды чисел от 0 до 9 в двоичной форме. Данный скетч поддерживает как индикаторы с общим катодом (по умолчанию), так и индикаторы с общим анодом (для этого нужно раскомментировать одну строчку в конце скетча).


// биты, представляющие сегменты с A по G (и точки), для чисел 0-9 const int numeral = { //ABCDEFG /dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9 }; // выводы для точки и каждого сегмента // DP,G,F,E,D,C,B,A const int segmentPins = { 13,8,7,6,5,4,3,2 }; const int nbrDigits= 4; // количество разрядов светодиодного индикатора //разряды 0 1 2 3 const int digitPins = { 9,10,11,12 }; void setup() { for(int i=0; i < 8; i++) { pinMode(segmentPins[i], OUTPUT); // устанавливаем выводы для сегментов и точки на выход } for(int i=0; i < nbrDigits; i++) { pinMode(digitPins[i], OUTPUT); } } void loop() { int value = analogRead(0); showNumber(value); } void showNumber(int number) { if(number == 0) { showDigit(0, nbrDigits-1) ; // отображаем 0 в правом разряде } else { // отображаем значение, соответствующее каждой цифре // крайняя левая цифра 0, правая на единицу меньше, чем число позиций for(int digit = nbrDigits-1; digit >= 0; digit--) { if(number > 0) { showDigit(number % 10, digit) ; number = number / 10; } } } } // Отображаем заданное число на данном разряде 7-сегментного индикатора void showDigit(int number, int digit) { digitalWrite(digitPins, HIGH); for(int segment = 1; segment < 8; segment++) { boolean isBitSet = bitRead(numeral, segment); // isBitSet будет истинным, если данный бит будет 1 // isBitSet = ! isBitSet; // опционально // раскомментируйте опциональную строчку выше для индикатора с общим анодом digitalWrite(segmentPins, isBitSet); } delay(5); digitalWrite(digitPins, LOW); }


Схема подключения одноразрядного семисегментного индикатора
Схема подключения многоразрядного семисегментного индикатора

Устройство отображения цифровой информации. Это - наиболее простая реализация индикатора, который может отображать арабские цифры. Для отображения букв используются более сложные многосегментные и матричные индикаторы.

Как говорит его название, состоит из семи элементов индикации (сегментов), включающихся и выключающихся по отдельности. Включая их в разных комбинациях, из них можно составить упрощённые изображения арабских цифр.
Сегменты обозначаются буквами от A до G; восьмой сегмент - десятичная точка (decimal point, DP), предназначенная для отображения дробных чисел.
Изредка на семисегментном индикаторе отображают буквы.

Бывают разных цветов, обычно это белый, красный, зеленый, желтый и голубой цвета. Кроме того, они могут быть разных размеров.

Также, светодиодный индикатор может быть одноразрядным (как на рисунке выше) и многоразрядным. В основном в практике используются одно-, двух-, трех- и четырехразрядные светодиодные индикаторы:

Кроме десяти цифр, семисегментные индикаторы способны отображать буквы. Но лишь немногие из букв имеют интуитивно понятное семисегментное представление.
В латинице : заглавные A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, строчные a, b, c, d, e, g, h, i, n, o, q, r, t, u.
В кириллице : А, Б, В, Г, г, Е, и, Н, О, о, П, п, Р, С, с, У, Ч, Ы (два разряда), Ь, Э/З.
Поэтому семисегментные индикаторы используют только для отображения простейших сообщений.

Всего семисегментный светодиодный индикатор может отобразить 128 символов:

В обычном светодиодном индикаторе девять выводов: один идёт к катодам всех сегментов, а остальные восемь - к аноду каждого из сегментов. Эта схема называется «схема с общим катодом» , существуют также схемы с общим анодом (тогда все наоборот). Часто делают не один, а два общих вывода на разных концах цоколя - это упрощает разводку, не увеличивая габаритов. Есть еще, так называемые «универсальные», но я лично с такими не сталкивался. Кроме того существуют индикаторы со встроенным сдвиговым регистром, благодаря чему намного уменьшается количество задействованных выводов портов микроконтроллера, но они намного дороже и в практике применяются редко. А так как необъятное не объять, то такие индикаторы мы пока рассматривать не будем (а ведь есть еще индикаторы с гораздо большим количеством сегментов, матричные).

Многоразрядные светодиодные индикаторы часто работают по динамическому принципу: выводы одноимённых сегментов всех разрядов соединены вместе. Чтобы выводить информацию на такой индикатор, управляющая микросхема должна циклически подавать ток на общие выводы всех разрядов, в то время как на выводы сегментов ток подаётся в зависимости от того, зажжён ли данный сегмент в данном разряде.

Подключение одноразрядного семисегментного индикатора к микроконтроллеру

На схеме ниже, показано как подключается одноразрядный семисегментный индикатор к микроконтроллеру.
При этом следует учитывать, что если индикатор с ОБЩИМ КАТОДОМ , то его общий вывод подключается к «земле» , а зажигание сегментов происходит подачей логической единицы на вывод порта.
Если индикатор с ОБЩИМ АНОДОМ , то на его общий провод подают «плюс» напряжения, а зажигание сегментов происходит переводом вывода порта в состояние логического нуля .

Осуществление индикации в одноразрядном светодиодном индикаторе осуществляется подачей на выводы порта микроконтроллера двоичного кода соответствующей цифры соответствующего логического уровня (для индикаторов с ОК — логические единицы, для индикаторов с ОА — логические нули).

Токоограничительные резисторы могут присутствовать в схеме, а могут и не присутствовать. Все зависит от напряжения питания, которое подается на индикатор и технических характеристик индикаторов. Если, к примеру, напряжение подаваемое на сегменты равно 5 вольтам, а они рассчитаны на рабочее напряжение 2 вольта, то токоограничительные резисторы ставить необходимо (чтобы ограничить ток через них для повышенного напряжении питания и не сжечь не только индикатор, но и порт микроконтроллера).
Рассчитать номинал токоограничительных резисторов очень легко, по формуле дедушки Ома .
К примеру, характеристики индикатора следующие (берем из даташита):
— рабочее напряжение — 2 вольта
— рабочий ток — 10 мА (=0,01 А)
— напряжение питания 5 вольт
Формула для расчета:
R= U/I (все значения в этой формуле должны быть в Омах, Вольтах и Амперах)
R= (напряжение питания — рабочее напряжение)/рабочий ток
R= (5-2)/0.01 = 300 Ом

Схема подключения многоразрядного семисегментного светодиодного индикатора в основном та-же, что и при подключении одноразрядного индикатора. Единственное, добавляются управляющие транзисторы в катодах (анодах) индикаторов:

На схеме не показано, но между базами транзисторов и выводами порта микроконтроллера необходимо включать резисторы, сопротивление которых зависит от типа транзистора (номиналы резисторов рассчитываются, но можно и попробовать применить резисторы номиналом 5-10 кОм).

Осуществление индикации разрядами осуществляется динамическим путем:
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 1 разряда, затем подается логический уровень на управляющий транзистор первого разряда
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 2 разряда, затем подается логический уровень на управляющий транзистор второго разряда
— выставляется двоичный код соответствующей цифры на выходах порта РВ для 3 разряда, затем подается логический уровень на управляющий транзистор третьего разряда
— итак по кругу
При этом надо учитывать:
— для индикаторов с ОК применяется управляющий транзистор структуры NPN (управляется логической единицей)
— для индикатора с ОА — транзистор структуры PNP (управляется логическим нулем)

Существуют такие параметры, для которых было бы удобнее выдавать объективную информацию, чем просто индикацию. Например, температура воздуха на улице или время на будильнике. Да, все это можно было бы сделать на светящихся лампочках или светодиодах. Один градус – один горящий светодиод или лампочка и тд. Но считать эти светлячки – ну уж нет! Но, как говорится, самые простые решения – самые надежные. Поэтому, долго не думая, разработчики взяли простые светодиодные полосы и расставили их в нужном порядке.

В начале двадцатого века с появлением электронных ламп появились первые газоразрядные индикаторы

С помощью таких индикаторов можно было вывести цифровую информацию в арабских цифрах. Раньше именно на таких лампах делали различную индикацию для приборов и других электронных устройств. В настоящее время газоразрядные элементы почти уже нигде не применяются. Но ретро – это всегда модно, поэтому, многие радиолюбители собирают для себя и своих близких прекрасные часы на газоразрядных индикаторах .


Минус газоразрядных ламп – кушают много электроэнергии. Про долговечность можно и поспорить. У нас в университете до сих пор в лабораторных кабинетах эксплуатируются частотомеры на газоразрядных индикаторах.

Семисегментные индикаторы

С появлением светодиодов ситуация кардинально изменилась в лучшую сторону. Светодиоды сами по себе потребляют маленький ток. Если расставить их в нужном положении, то можно высвечивать абсолютно любую информацию. Для того, чтобы высветить все арабские цифры, достаточно всего семь светящихся светодиодных полос – сегментов, выставленных определенным образом:

Почти ко всем таким семисегментным индикаторам добавляют также и восьмой сегмент – точку, для того, чтобы можно было показать целое и дробное значение какого-либо параметра

По идее у нас получается восьми сегментный индикатор, но по-старинке его также называют семисегментным.

Что получается в итоге? Каждая полоска на семисегментном индикаторе засвечивается светодиодом или группой светодиодов. В результате, засветив определенные сегменты, мы можем вывести цифру от 0 и до 9, а также буквы и символы.

Виды и обозначение на схеме

Существуют одноразрядные, двухразрядные, трехразрядные и четырехразрядные семисегментные индикаторы. Более четырех разрядов я не встречал.

На схемах семисегментный индикатор выглядит примерно вот так:

В действительности же, помимо основных выводов, каждый семисегментный индикатор также имеет общий вывод с общим анодом (ОА) или общим катодом (ОК)

Внутренняя схема семисегментного индикатора с общим анодом будет выглядеть вот так:


а с общим катодом вот так:


Если семисегментный индикатор у нас с общим анодом (ОА), то в схеме мы должны на этот вывод подавать “плюс” питания, а если с общим катодом (ОК) – то “минус” или землю.

Как проверить семисегментный индикатор

У нас имеются в наличии вот такие индикаторы:


Для того, чтобы проверить современный семисегментный индикатор, нам достаточно мультиметра с функцией прозвонки диодов. Для начала ищем общий вывод – это может быть или ОА или ОК. Здесь только методом тыка. Ну а далее проверяем работоспособность остальных сегментов индикатора по схемам выше.

Как вы видите ниже на фото, у нас загорелся проверяемый сегмент. Таким же образом проверяем и другие сегменты. Если все сегменты горят, то такой индикатор целый и его можно использовать в своих разработках.


Иногда напряжения на мультиметре не хватает для проверки сегмента. Поэтому, берем блок питания , и выставляем на нем 5 Вольт. Чтобы ограничить ток через сегмент, проверяем через резистор на 1-2 Килоома.


Таким же образом проверяем индикатор от китайского приемника


В схемах семисегментные индикаторы соединяются с резисторами на каждом выводе

В нашем современном мире семисегментные индикаторы заменяются жидко-кристаллическими индикаторами, которые могут высвечивать абсолютно любую информацию

но для того, чтобы их использовать, нужны определенные навыки в схемотехнике таких устройств. Поэтому, семисегментные индикаторы до сих пор находят применение, благодаря дешевизне и простоте использования.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: