Семисегментный индикатор таблица истинности. Семисегментный индикатор: программирование

Семисегментный индикатор: программирование работы

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

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

Давайте еще раз посмотрим на схему подключения семисегментного индикатора к микроконтроллеру:

На этой схеме выводы порта PB0…..PB7 подключены к выводам индикатора в определенной последовательности. Выводу PB0 соответствует сегмент «А» и далее соответственно по порядковому номеру вывода порта и по алфавиту выводов индикатора, при этом десятичная точка «dp» подсоединена к выводу порта PB7 . Сейчас и далее мы будем рассматривать схемы подключения для индикаторов с общим катодом, а при необходимости я буду вставлять дополнения для индикатора с общим анодом.

Для того, чтобы высветить определенную цифру на индикаторе, необходимо на соответствующих выводах порта микроконтроллера установить логическую единицу

На рисунке выше, черные цифры от 0 до 7 — выводы порта, зеленные латинские буквы — выводы светодиодного индикатора, красные нули — логические уровни на выходах порта (в данном случае логический уровень «0»). Для того, чтобы, к примеру, высветить на индикаторе цифру «4» и зажечь десятичную точку нам необходимо подать логическую 1 на выводы индикатора B, C, F, G и dp, что соответствует подачи логической единицы на выводы порта 1,2,5,6 и 7:

Поэтому, первое что нам необходимо сделать, это определить соответствие каждой десятичной цифре двоичного числа, которое надо выдавать на выход порта микроконтроллера для зажигания соответствующих сегментов индикатора.
Для «четверки» мы уже определили такую комбинацию = 1110 0110, что соответствует шестнадцатиричному числу 66h, определяем и для остальных цифр:

Операция, которую мы проделали, называется переводом двоичного кода десятичного числа в код семисегментного индикатора .

Данная таблица дана для семисегментных индикаторов с общим катодом (сегмент индикатора зажигается логическим уровнем «1»). Для индикаторов с общим анодом (сегмент индикатора зажигается логическим уровнем «0») двоичные коды необходимо проинвертировать (поменять 0 на 1, и наоборот) и заново вычислить соответствующие значения в шестнадцатиричной системе.

Программирование одноразрядного семисегментного индикатора

Использование в конструкции одноразрядного индикатора может потребоваться в разных случаях. К примеру, собираем кодовый замок и есть необходимость высвечивать цифру соответствующую нажатой кнопки, или в охранной сигнализации высвечивать номер сработавшего датчика. Так что сфера применения одноразрядных индикаторов приличная.
Организацию вывода цифр на одноразрядный индикатор мы оформим в виде подпрограммы: «Вывод информации на одноразрядный семисегментный светодиодный индикатор» , так, чтобы затем эту подпрограмму с минимальными изменениями можно было использовать в любой программе.

Алгоритм подпрограммы:

1. Инициализация индикатора (подпрограмма)
— настройка порта, к которому подключен индикатор на вывод информации
— запись кодов семисегментного индикатора, соответствующих десятичным цифрам в определенные ячейки памяти
Данная подпрограмма должна вызываться отдельно из основной программы
2. Вход в основную подпрограмму
3. Основная часть
— считываем текущую цифру
— определяем какой код семисегментного индикатора соответствует текущей десятичной цифре
— записываем определенный код индикатора в порт микроконтроллера
4. Выход из подпрограммы

Для оформления программы в виде подпрограммы нам необходимо проделать ряд действий:
1. Присваиваем имя подпрограмме инициализации индикатора — Ini_Indiкator_1 (к примеру)
2. Присваиваем имя основной подпрограмме — Indicator_1
3. Присваиваем имена переменным SRAM в которых будут храниться коды семисегментного индикатора, к примеру:
D0 (для цифры 0, и так далее), D1, D2, D3, D4, D5, D6, D7, D8, D9
— присваиваем имя переменной в которой будет хранится адрес ячейки памяти (D0) с кодом первой цифры (0) — D0_9
4. Присваиваем имя переменной, в которой будет хранится текущая цифра, которую необходимо вывести на индикатор. В эту переменную основная программа будет записывать вычисленные данные (цифры), которые мы выводим на индикатор — Data (к примеру).

Вот как, к примеру, в Algorithm Builder (остальные примеры тоже для этой программы), объявляются имена переменных в памяти программ (ОЗУ, SRAM):

В графе «Name» перечислены все имена переменных. В графе «Adress» запись «@D0_9» означает, что в переменной D0_9 хранится адрес первой переменной (D0)

Подпрограмма инициализации индикатора (подпрограмма вызывается из основной программы до обращения к подпрограмме вывода информации на индикатор):

А теперь давайте посмотрим основную часть программы и расшифруем ее:

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

Работа подпрограммы:
— Содержимое переменной Data записывается в рабочий регистр R20 , теперь в регистре число 6 (рабочий регистр может быть любой)
— Допустим, первая переменная с кодом цифры 0 у нас находится в ячейки памяти по адресу 100 . На самом деле мы не знаем адреса ячеек памяти где хранятся значения D0…D9 , но они точно следуют друг за другом. Поэтому была назначена переменная D0_9 , в которой, как мы назначили, хранится адрес ячейки памяти D0 (в данный момент адрес =100 ).
— Следующей командой:
@D0_9 —> Y мы загружаем в двойной регистр Y адрес переменной D0 и получаем, что в регистре Y записалось число — 100 .
— Следующей командой:
Y + R20 мы складываем число 100 с числом 6 , результат = 106 при этом сохраняется в двойном регистре Y .
— Следующей командой:
[Y] —> R20 мы записываем содержимое ячейки памяти, расположенной по адресу, который записан в двойном регистре Y (106) , а по этому адресу у нас расположена ячейка памяти переменной D6 . Теперь в рабочем регистре R20 записано число 7Dh код семисегментного индикатора для вывода цифры 6 .
— Следующей командой:
R20 —> PortB мы выводим содержимое R20 в порт PB высвечиваем цифру 6
— Возвращаемся из подпрограммы

Для отображения десятичных и шестнадцатеричных цифр часто используется семисегментный индикатор. Изображение семисегментного индикатора и название его сегментов приведено на рисунке 3.

Рисунок 3.3 Изображение семисегментного индикатора и название его сегментов.

Для изображения на таком индикаторе цифры 0 достаточно зажечь сегменты a, b, c, d, e, f. Для изображения цифры "1" зажигают сегменты b и c. Точно таким же образом можно получить изображения всех остальных десятичных или шестнадцатеричных цифр. Все комбинации таких изображений получили название семисегментного кода.

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

Таблица 3.2. Таблица истинности семисегментного декодера.

Входы Выходы
a b c d e f g

В соответствии с принципами построения схемы по произвольной таблицы истинности, получим принципиальную схему семисегментного дешифратора (декодера), реализующего таблицу истинности, приведённую в таблице 2. На этот раз не будем подробно расписывать процесс разработки схемы. Полученная принципиальная схема семисегментного дешифратора приведена на рисунке 3.4.


Рисунок 3.4. Принципиальная схема семисегментного дешифратора (декодера).

Для облегчения понимания принципов работы схемы на выходе логических элементов "И" показаны номера строк таблицы истинности, реализуемые ими.

Например, на выходе сегмента a логическая единица появится только при подаче на вход комбинации двоичных сигналов 0001 (1) и 0100 (4). Это осуществляется объединением соответствующий цепей элементом "2ИЛИ". На выходе сегмента b логическая единица появится только при подаче на вход комбинации двоичных сигналов 0101 (5) и 0110 (6), и так далее.

В настоящее время семисегментные дешифраторы выпускаются в виде отдельных микросхем или используются в виде готовых блоков составе других микросхем. Условно-графическое обозначение микросхемы семисегментного дешифратора приведено на рисунке 3.5.

Наверняка вы уже видели индикаторы - "восьмёрки". Это и есть семисегментный светодиодный индикатор, который служит для отображения цифр от 0 до 9, а также децимальной точки (DP - Decimal point) или запятой.

Конструктивно такое изделие представляет собой сборку светодиодов. Каждый светодиод сборки засвечивает свой знакосегмент.

В зависимости от модели сборка может состоять из 1 - 4 семисегментных групп. Например, индикатор АЛС333Б1 состоит из одной семисегментной группы, которая способна отображать всего лишь одну цифру от 0 до 9.

А вот светодиодный индикатор KEM-5162AS уже имеет две семисегментных группы. Он является двухразрядным. Далее на фото показаны разные светодиодные семисегментные индикаторы.

Также существуют индикаторы с 4-мя семисегментными группами - четырёхразрядные (на фото - FYQ-5641BSR-11). Их можно использовать в самодельных электронных часах.

Как обозначаются семисегментные индикаторы на схемах?

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

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

Особенности семисегментных индикаторов.

Несмотря на кажущуюся простоту этой детали и у неё есть особенности.

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

Вот, например, цоколёвка уже знакомого нам 4-ёх разрядного индикатора FYQ-5641BSR-11 .

Как видим, аноды у светодиодов каждой цифры объединены и выведены на отдельный вывод. Катоды же у светодиодов, которые принадлежат к знакосегменту (например, G ), соединены вместе. От того, какую схему соединений имеет индикатор (с общим анодом или катодом) зависит очень многое. Если взглянуть на принципиальные схемы приборов с применением семисегментных индикаторов, то станет ясно, почему это так важно.

Кроме небольших индикаторов есть большие и даже очень большие. Их можно увидеть в общественных местах, обычно в виде настенных часов, термометров, информеров.

Чтобы увеличить размеры цифр на табло и одновременно сохранить достаточную яркость каждого сегмента, используется несколько светодиодов, включенных последовательно. Вот пример такого индикатора - он умещается на ладони. Это FYS-23011-BUB-21 .

Один его сегмент состоит из 4 светодиодов, включенных последовательно.

Чтобы засветить один из сегментов (A, B, C, D, E, F или G), нужно подать на него напряжение в 11,2 вольта (2,8V на каждый светодиод). Можно и меньше, например, 10V, но яркость тоже уменьшится. Исключение составляет децимальная точка (DP), её сегмент состоит из двух светодиодов. Для неё нужно всего 5 - 5,6 вольт.

Также в природе встречаются двухцветные индикаторы. В них встраиваются, например, красные и зелёные светодиоды. Получается, что в корпус встроено как бы два индикатора, но со светодиодами разного цвета свечения. Если подать напряжение на обе цепи светодиодов, то можно получить жёлтый цвет свечения сегментов. Вот схема соединений одного из таких двухцветных индикаторов (SBA-15-11EGWA).

Если коммутировать выводы 1 (RED ) и 5 (GREEN ) на "+" питания через ключевые транзисторы, то можно менять цвет свечения отображаемых чисел с красного на зелёный. А если же одновременно подключить выводы 1 и 5, то цвет cвечения будет оранжевым. Вот так можно баловаться с индикаторами .

Управление семисегментными индикаторами.

Для управления семисегментными индикаторами в цифровых устройствах используют регистры сдвига и дешифраторы. Например, широко распространённый дешифратор для управления индикаторами серии АЛС333 и АЛС324 - микросхема К514ИД2 или К176ИД2 . Вот пример .

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

Для управления большими семисегментными индикаторами, такими как, FYS-23011-BUB-21 применяются специализированные драйверы, например, микросхема MBI5026 .

Что внутри семисегментного индикатора?

Ну и немного вкусненького. Любой электронщик не был бы таковым, если бы не интересовался "внутренностями" радиодеталей. Вот что внутри индикатора АЛС324Б1.

Чёрные квадратики на основании - это кристаллы светодиодов. Тут же можно разглядеть золотые перемычки, которые соединяют кристалл с одним из выводов. К сожалению, этот индикатор уже работать не будет, так как были оборваны как раз эти самые перемычки . Но зато мы можем посмотреть, что скрывается за декоративной панелькой табло.

Отчет о лабораторной работе

Тема: Исследование Работы дешифраторов

Цель: Исследовать работу шифраторов и дешифраторов

Оборудование: ПК, программное обеспечение: ОС Windows

Ход Работы

1. Исследовал работу Дешифратора на логических элементах

2. Преобразователь кода для семисегментного индикатора.

3. Дешифратор для 7-сегментного индикатора на микросхеме.

1.Дешифраторы
Я использовал простейшие логические элементы, которые можно сконструировать более сложные устройства, реализующие соответствующие функции. Такими устройствами являются, например, шифраторы и дешифраторы.

Дещифраторы, назваемые также кодерами, могут осуществлять преобразование десятичных чисел (позиционный код) в двоичную систему счисления. Шифратор работает следующим образом: шифратор имеет n входов, в текущий момент времени только на один из которых подается сигнал (это вход будет активным); по номеру активного входа на выходах дешифратора формируется двоичных код, соответствующей позиции активного входа. Например, если активным был пятый вход, то на выходах будет комбинация (за исключением старших нулей): 5 10 =101 2 .

3. Дешифратор на логических элементах

Трехвходовый дешифратор на логических элементах «И» и «НЕ».



4. Преобразователь кода для семисегментного индикатора.

Дешифраторы и дисплейные дишеифраторы/формирователи формируют цифровые коды для семисегментного индикатора, и затем обеспечивают пеердачу кода на формирователь или непосредственно на дисплей. В семисегментном индикаторе десятичных цифр каждый сегмент (их семь) представляет собой отдельный светоизлучающий элемент (используется также буквенная идентификация сегментов, соответственно от a до g). Светящееся изображение цифр или знаков получается при подаче напряжения на определенные сегменты:
Такой преобразователь кода должен удовлетворять таблице истинности, приведенной ниже:


Дешифратор для 7-сегментного индикатора на логических элементах.

Дешифратор для 7-сегментного индикатора на микросхеме.

Данный дешифратор преобразует двоично-десятичный код (binary-decimal code), подаваемый на входы A,B,C,D, в код управления 7-сегментным индикатором. Двоично-десятичный код представляет собой упорядоченный по разрадам набор двоичных чисел, в котором разрядам приписаны следующие «веса» в порядке уменьшения старшинства. D – 8, С – 4, В – 2, A – 1. Поэтому данный код называют также кодом 8-4-2-1. Фактически в этом коде записаны десятичные числа от 0 до 15 во входных переменных таблицы истинности:



Дешифратор кода для 7-сегментного индикатора на микросхеме 7448

Вывод: Исследовал работу шифраторов и дешифраторов

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

Шифраторы, назваемые также кодерами, могут осуществлять преобразование десятичных чисел (позиционный код) в двоичную систему счисления. Шифратор работает следующим образом: шифратор имеет n входов, в текущий момент времени только на один из которых подается сигнал (это вход будет активным); по номеру активного входа на выходах дешифратора формируется двоичных код, соответствующей позиции активного входа. Например, если активным был пятый вход, то на выходах будет комбинация (за исключением старших нулей): 5 10 =101 2 .
Дешифратор или декодер выполняет обратную по отношению к шифрованию операцию, т.е. преобразует двоичный код в десятичный. Входы дешифратора служат для подачи двоичных числе, а выходы последовательно нумеруются десятичными числами. При подаче на входы двоичного числа выходной сигнал появляется на выходе, который имеет номер соответствующего десятичного числа.
Существует два типа дешифраторов: логические дешифраторы и дисплейные дешифраторы/формирователи. Логические дешифраторы представляют собой схемы средней интеграции (микросхемы, имеющие с своем составе до 100 ЛЭ), управялемые адресом. Они выбирают и приводят в активное состояние конкретный выход определяемыый адресом. Дешифраторы применяются в структурах выборки адреса запоминающих устройства, разуплотнения маршрутизации данных и т.п.

Дешифраторы, как и шифраторы преобразуют один код на своем входе в другой код, который и подают на выход. Одним из частных случаев использование дешифратора является его совместная работа с семисегментным индикатором. Обычно дешифратор преобразует двоичное число в сигнал на одном из своих выходов, но для этого конкретного случая используются специальные дешифраторы, которые преобразуют двоичный код на своем входе в код семисегментного индикатора на выходе. Работу данного типа приборов рассмотрим на примере микросхемы К514ИД2 .

Данная микросхема имеет четыре входа D1-D4, и семь выходов: a, b, c, d, e, f, g, для подключения к соответствующим сегментам семисегментного индикатора. Вывод R - разрешение работы, для того, что бы дешифратор реагировал на сигналы на своих входах, на выводе R должен быть высокий логический уровень.

Следует особо отметить, что питание подается на 14 выход микросхемы К514ИД2, общий провод 6. Питание осуществляется от стабилизированного источника питания напряжением 5В.

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

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

Опыт показал, что применение в лабораторных работах выпускаемых промышленностью семисегментных индикаторов неоправданно из-за того, что такие индикаторы обладают недостаточной «студентоустойчивостью», при неправильном подключении они быстро выходят из строя. Поэтому были разработаны модули, имитирующие работу семисегментных индикаторов на базе светодиодов АЛ307Б . По этой причине цифры на индикаторе выглядят несколько непривычно, но общий принцип работы семисегментного индикатора уяснить вполне можно.

Видео

Литература

  1. https://kiloom.ru/spravochnik-radiodetalej/microsxema/k514id2-kr514id2.html
  2. http://ru.pc-history.com/mikrosxema-k514id2.html
  3. https://eandc.ru/pdf/mikroskhema/k514id2.pdf
  4. Ямпольский В.С. Основы автоматики и электронно-вычислительной техники - М. Просвещение, 1991
  5. http://сайт/publ/nachinajushhim/multivibrator_na_ehlementakh_i_ne/5-1-0-1366
  6. http://сайт/publ/nachinajushhim/schetchik_na_mikroskheme/5-1-0-1372
  7. http://сайт/publ/nachinajushhim/samodelnye_moduli_dlja_izuchenija_mikroskhem/5-1-0-1352