Инструменты

Схема индикации для 7 сегментного индикатора. Как работает семисегментный индикатор? Что использовалось в проекте

Схема индикации для 7 сегментного индикатора. Как работает семисегментный индикатор? Что использовалось в проекте

При таком подходе, для вывода числа с любым количеством разрядов используется всего 2 цифровых выхода Arduino.

Для примера будем выводить на индикаторы количество секунд, прошедших с момента старта работы.

Исходные компоненты

Принцип работы

Семисегментный индикатор - это просто набор обычных светодиодов в одном корпусе. Просто они выложены восьмёркой и имеют форму палочки-сегмента. Можно подключить его напрямую к Arduino, но тогда будет занято 7 контактов, а в программе будет необходимо реализовать алгоритм преобразования числа из двоичного представления в соответствующие «калькуляторному шрифту» сигналы.

Знание о том, как связать семисегментный дисплей с микроконтроллером, очень важно при проектировании встроенных систем. В таблице ниже показаны общие шаблоны дискретных цифр семисегментного дисплея. Эта простая схема иллюстрирует две вещи. Общий 7-сегментный дисплей с диагональю катода подключается к порту 1 микроконтроллера, как показано на схеме. Программная часть проекта должна выполнять следующие задачи.

  • Составьте счетчик 0-9 с заданной задержкой.
  • Преобразуйте текущий счет в цифровую схему диска.
  • Поместите текущий шаблон накопителя цифр в порт для отображения.
Все вышеперечисленные задачи выполняются программой, приведенной ниже.

Для упрощения этой задачи существует 7-сегментный драйвер. Это простая микросхема с внутренним счётчиком. У неё есть 7 выходов для подключения всех сегментов (a, b, c, d, e, f, g pins), контакт для сбрасывания счётчика в 0 (reset pin) и контакт для увеличения значения на единицу (clock pin). Значение внутреннего счётчика преобразуется в сигналы (включен / выключен) на контакты a-g так, что мы видим соответствующую арабскую цифру.

Выполнено, чтобы проверить, завершено ли подсчет. При перемещении этого шаблона в накопитель в порт 1 будет отображаться 0, что является первым счетчиком. В этой таблице определяются шаблоны цифровых символов для 7-сегментного дисплея в виде байтов. Примечание. - В строке 6 Аккумулятор увеличивается на 1 каждый раз, чтобы выбрать следующий рисунок диска.

7-сегментный дисплей с мультиплексированием

Для этого используются линии 12 и 13. Предположим, вам нужен трехзначный дисплей, подключенный к каждому 7-сегментному дисплею, имеющему 8 контактов, и поэтому общее количество 24 контактов подключено к микроконтроллеру, и останется только 8 контактов с микроконтроллером для других приложений ввода. Все эти проблемы, связанные с прямым методом, могут быть решены путем мультиплексирования.

На микросхеме есть ещё один выход, обозначенный как «÷10». Его значение всё время LOW за исключением момента переполнения, когда значение счётчика равно 9, а его увеличивают на единицу. В этом случае значением счётчика снова становится 0, но выход «÷10» становится HIGH до момента следующего инкремента. Его можно соединить с clock pin другого драйвера и таким образом получить счётчик для двузначных чисел. Продолжая эту цепочку, можно выводить сколь угодно длинные числа.

Что использовалось в проекте

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

  • Требуется меньшее количество контактов порта.
  • Потребляет меньше энергии.
  • Может быть сопряжено большее количество дисплеев.
Когда будет собрано и включено питание, схема отобразит номер «16» и посмотрим, как это делается. Это сделает первый дисплей отображаемым 1. Это заставит второй дисплей отображать 6. Это условие сохраняется в течение еще 1 мс, а затем порт 1 становится низким.

Микросхема может работать на частоте до 16 МГц, т.е. она будет фиксировать изменения на clock pin даже если они будут происходить 16 миллионов раз в секунду. На той же частоте работает Arduino, и это удобно: для вывода определённого числа достаточно сбросить счётчик в 0 и быстро инкрементировать значение по единице до заданного. Глазу это не заметно.

Этот цикл повторяется, и из-за сохранения зрения вы почувствуете это как «16». Назначение других компонентов объясняется в первом контуре. Семь сегментных дисплеев используются во многих встроенных системных и промышленных приложениях, где диапазон выходов, которые будут показаны, известен заранее. В основном 7-сегментный дисплей представляет собой единый блок, который может отображать только 1 цифру или 1 символ. Больше цифр отображается путем мультиплексирования одиночных 7-сегментных дисплеев вместе, чтобы сформировать 2-значный дисплей, 3-значный дисплей или 4-значный 7-сегментный дисплей.

Подключение

Сначала установим индикаторы и драйверы на breadboard. У всех них ноги располагаются с двух сторон, поэтому, чтобы не закоротить противоположные контакты, размещать эти компоненты необходимо над центральной канавкой breadboard’а. Канавка разделяет breadboard на 2 несоединённые между собой половины.

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

Отдельный цифровой семимерный дисплей - схема выводов

Вы можете определить сегменты дисплея с помощью следующего рисунка. Конечный результат будет отображать 0-9 на дисплее. Позволяет идентифицировать распиновку и принципиальную схему дисплея. Как вы видите, всего 10 контактов. Есть семь сегментных дисплеев, которые имеют общие катоды вместо обычных анодов. Единственное отличие обычных дисплеев катода состоит в том, что все катоды соединены вместе, и они известны как дисплеи с общим дисплеем на катоде 7.

    16 - к рельсе питания: это питание для микросхемы

    2 «disable clock» - к рельсе земли: мы его не используем

    3 «enable display» - к рельсе питания: это питание для индикатора

    8 «0V» - к рельсе земли: это общая земля

    1 «clock» - через стягивающий резистор к земле. К этому контакту мы позже подведём сигнал с Arduino. Наличие резистора полезно, чтобы избежать ложного срабатывания из-за окружающих помех пока вход ни к чему не подключен. Подходящим номиналом является 10 кОм. Когда мы соединим этот контакт с выходом Arduino, резистор не будет играть роли: сигнал притянет к земле микроконтроллер. Поэтому если вы знаете, что драйвер при работе всегда будет соединён с Arduino, можете не использовать резистор вовсе.

    Как вы можете видеть на рисунке, эти штифты представляют собой катоды сегментов светодиодов общего анодного дисплея. Чтобы включить каждый сегмент, мы должны подать на него соответствующее напряжение. Давайте просто скажем, что хотим показать на дисплее номер 3. Если вы проложите это на макете. на 7-сегментном дисплее отобразится 3 на дисплее. Мы можем манипулировать 7-сегментной проводкой, используя программное обеспечение внутри микроконтроллера.

    Этот резистор на 220 Ом используется в качестве ограничителя тока для ограничения тока, проходящего через светодиоды, и, следовательно, предотвращения любого повреждения сегментов светодиода и самого ардуино. Та же программа может быть записана в меньшем количестве строк с использованием массивов и других элементов расширенного программирования.

    15 «reset» и 5 «÷10» пока оставим неподключенными, но возьмём на заметку - нам они понадобятся в дальнейшем


Контакты 3 и 8 на индикаторе обозначены как «катод», они общие для всех сегментов, и должны быть напрямую соединены с общей землёй.

И в настройке мы настроили каждый вывод, который мы будем использовать в качестве выходов. Падение изображения показывает фактическую настройку вышеуказанной схемы на макете и окончательные результаты. Теперь мы посмотрим, как подключить 4-сегментный 7-сегментный дисплей с ардуином. Мы будем использовать другой метод управления этим четырехзначным дисплеем. Давайте посмотрим на раскладку этого четырехзначного 7-сегментного дисплея.

Как вы можете видеть в этой схеме вывода 4-значного 7-сегментного светодиодного дисплея, имеется в общей сложности 32 светодиодных сегмента. Но, как вы видите, есть только 12 контактов. Как показано на принципиальной схеме, существует 4 общих анода, а также катоды одних и тех же сегментов соединены вместе. Поэтому, если мы подключим все сегментные контакты к отрицательным и общим контактам к положительным, вы можете увидеть, что все сегменты всех четырех цифр включены. Переключаясь между четырьмя общими анодами, мы можем выбрать, какой дисплей включить.


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

Но, как вы можете видеть, мы не можем отображать четыре разных цифры одновременно на этом дисплее, так как катоды одинаковы для всех четырех цифр. Для этого мы будем использовать метод мультиплексирования. То, что делает мультиплексирование, прост - показывать по одной цифре за раз на дисплее и переключаться между дисплеями очень быстро. Предположим, нам нужно показать Сначала мы включаем сегменты, относящиеся к 1, и включаем 1-й дисплей. Затем мы отправляем сигналы, чтобы показать 2, выключите 1-й дисплей и включите 2-й дисплей.

Мы повторяем этот процесс для следующих двух чисел, и переключение между единицами отображения должно выполняться очень быстро. Обычно используется для подключения другого сдвигового регистра - каскадирования сдвиговых регистров. Все сегменты 7-сегментного дисплея подключены к выходным выводам параллельного вывода сдвигового регистра.

Соединять необходимо сопоставляя распиновку микросхемы (выходы a-g) и распиновку индикатора (входы a-g)



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

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

Повторяем процедуру для второго разряда


Теперь вспоминаем о контакте «reset»: нам необходимо соединить их вместе и притянуть к земле через стягивающий резистор. В последствии, мы подведём к ним сигнал с Arduino, чтобы он мог обнулять значение целиком в обоих драйверах.

Практические примеры применения USB-AVR

Значение резистора обычно составляет от 330 до 470 Ом. Когда все сегменты дисплея включаются одновременно, ток будет превышать этот предел 40 мА. Изображение, показанное ниже, показывает базовую схему подключения токоограничивающих резисторов и транзисторов.

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

Также подадим сигнал с «÷10» от правого драйвера на вход «clock» левого. Таким образом мы получим схему, способную отображать числа с двумя разрядами.


Стоит отметить, что «clock» левого драйвера не стоит стягивать резистором к земле, как это делалось для правого: его соединение с «÷10» само по себе сделает сигнал устойчивым, а притяжка к земле может только нарушить стабильность передачи сигнала.

Семисегментный дисплей - это наиболее распространенное устройство отображения, используемое во многих гаджетах, а также электронные приборы, такие как цифровые счетчики, цифровые часы, микроволновая печь и электрическая плита и т.д. эти дисплеи состоят из семи сегментов и собраны в структуру, такую ​​как цифра. На самом деле семисегментные дисплеи содержат около 8 сегментов, в которых для отображения точки используется дополнительный 8-й сегмент. Этот сегмент полезен при отображении не целого числа.

Эти сегменты расположены в виде 8, который показан на схеме с семью сегментами.

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

Железо подготовленно, осталось реализовать несложную программу.

Программирование

7segment.pde #define CLOCK_PIN 2 #define RESET_PIN 3 /* * Функция resetNumber обнуляет текущее значение * на счётчике */ void resetNumber() { // Для сброса на мгновение ставим контакт // reset в HIGH и возвращаем обратно в LOW digitalWrite(RESET_PIN, HIGH) ; digitalWrite(RESET_PIN, LOW) ; } /* * Функция showNumber устанавливает показания индикаторов * в заданное неотрицательное число `n` вне зависимости * от предыдущего значения */ void showNumber(int n) { // Первым делом обнуляем текущее значение resetNumber() ; // Далее быстро «прокликиваем» счётчик до нужного // значения while (n-- ) { digitalWrite(CLOCK_PIN, HIGH) ; digitalWrite(CLOCK_PIN, LOW) ; } } void setup() { pinMode(RESET_PIN, OUTPUT) ; pinMode(CLOCK_PIN, OUTPUT) ; // Обнуляем счётчик при старте, чтобы он не оказался // в случайном состоянии resetNumber() ; } void loop() { // Получаем количество секунд в неполной минуте // с момента старта и выводим его на индикаторы showNumber((millis() / 1000 ) % 60 ) ; delay(1000 ) ; }

Когда мощность передается всем сегментам, будет отображаться номер 8. Схема семисегментного дисплея сконструирована таким образом, что напряжение на разных контактах может быть применено одновременно. Точно так же вы можете сформировать комбинации для отображения цифр от 0 до Практически, семь сегментных дисплеев доступны с двумя структурами, оба типа дисплеев состоят из 10 контактов. Числовые семисегментные дисплеи также могут отображать другие символы. В любом случае общий семисегментный дисплей является только числовым. также доступны, но стоимость немного больше.

Результат

Подключаем контакт 2 с Arduino к контакту clock младшего (правого) драйвера, контакт 3 - к общему reset’у драйверов; разводим питание; включаем - работает!



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

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

Семисегментный дисплей. Пути управления









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

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

Как говорит его название, состоит из семи элементов индикации (сегментов), включающихся и выключающихся по отдельности. Включая их в разных комбинациях, из них можно составить упрощённые изображения арабских цифр.
Сегменты обозначаются буквами от 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 (управляется логическим нулем)

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

Следующие статьи:
Часть 2: Перевод двоично кода десятичного числа в код семисегментного индикатора.