Что понимают под понятием семисегментный код
Перейти к содержимому

Что понимают под понятием семисегментный код

  • автор:

Семисегментный дешифратор, использующий как прямые, так и инверсные выходы BCD-счётчика

«Двоичные часы» успели и войти в моду, и выйти из неё, и снова стал актуальным перевод двоично-десятичного кода в более удобный для считывания человеком позиционный или семисегментный. Автор выбрал второе.

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

Но здесь дешифратор предназначен для подключения к этому счётчику, у которого и так уже есть и прямые, и инверсные выходы, отчего дополнительные инверторы в дешифраторе становятся не нужны. Выходы Q0 — Q3 и Q0′ — Q3′ счётчика подключаются, соответственно, к входам B0 — B3 и B0′ — B3′ дешифратора. Формирователь сигнала для каждого из сегментов состоит из:

  • одного или нескольких диодных «И»
  • диодного «ИЛИ» (если требуется)
  • транзисторного ключа, управляющего светодиодом сегмента (индикатор должен быть с общим катодом).

К ключам обязательно надо добавить резисторы в цепях базы и нагрузки. Автором применён индикатор с такой цоколёвкой:

В таком виде дешифратор может отображать на индикаторе только символы 0 — 9. Но применённый совместно с ним счётчик можно переводить переключателем из двоично-десятичного в двоичный режим. Добавив в дешифратор дополнительные диоды, можно отображать также символы A — F. Или дефис, L, C, G, E и пробел, если вы предпочитаете их.

  • Схемотехника
  • DIY или Сделай сам
  • Электроника для начинающих

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

Пояснение причин и обсуждение — на странице Википедия:К объединению/18 сентября 2012.
Обсуждение длится одну неделю (или дольше, если оно идёт медленно).
Дата начала обсуждения — 2012-09-18.
Если обсуждение не требуется (очевидный случай), используйте другие шаблоны.
Не удаляйте шаблон до подведения итога обсуждения.

Семисегментный светодиодный индикатор с десятичной запятой

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

Концепция и внешний вид

Таблица, отображающая все 128 вариантов состояния сегментов

Обозначение сегментов индикатора

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

Цифры, 6, 7 и 9 имеют по два разных представления на семисегментном индикаторе. В ранних калькуляторах Casio и Электроника цифра 0 отображалась в нижней половине индикатора.

Сегменты обозначаются буквами от A до G; восьмой сегмент — десятичная точка ( decimal point, DP ), предназначенная для отображения дробных чисел.

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

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

История

Чертёж из патента Вуда

Сегментный индикатор был запатентован в 1910 году ( U.S. Patent 974 943 ) Фрэнком Вудом. Эта реализация была восьмисегментной — был дополнительный косой сегмент для отображения четвёрки. Патент был практически забыт — вплоть до 1960-х годов радиолюбителям приходилось применять для отображения цифр знаковые индикаторы тлеющего разряда или просто десять лампочек.

В 1970 году американская компания RCA выпустила семисегментную лампу накаливания «Нумитрон» [1] .

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

Реализации

Ранний индикатор с семью нитями накала

Механическое 7-сегментное табло для отображения цен на бензин

Большинство одноразрядных семисегментных индикаторов устроены на светодиодах, хотя существуют и альтернативы — лампы тлеющего разряда, электровакуумные индикаторы (катодолюминесцентные, накаливаемые), лампы накаливания, жидкие кристаллы и т. д. На больших табло наподобие цен на бензин всё ещё применяются механические индикаторы, или блинкерные индикаторы, переключающиеся с помощью электромагнитов.

В обычном светодиодном индикаторе девять выводов: один идёт к катодам всех сегментов, и остальные восемь — к аноду каждого из сегментов. Эта схема называется «схема с общим катодом», существуют также схемы с общим анодом. Часто делают не один, а два общих вывода на разных концах цоколя — это упрощает разводку, не увеличивая габаритов.

Многоразрядные индикаторы часто работают по динамическому принципу: выводы одноимённых сегментов всех разрядов соединены вместе. Чтобы выводить информацию на такой индикатор, управляющая микросхема должна циклически подавать ток на общие выводы всех разрядов, в то время как на выводы сегментов ток подаётся в зависимости от того, зажжён ли данный сегмент в данном разряде. Таким образом, чтобы получить десятиразрядный экран микрокалькулятора, нужны всего восемнадцать выводов (8 анодов и 10 катодов) — а не 81. Сходным образом сканируется клавиатура калькулятора.

Существуют специальные микросхемы семисегментных дешифраторов, переводящие четырёхбитный код в его семисегментное представление. К примеру, отечественные (КР)514ид1 для индикаторов с общим катодом или (КР)514ид2 с общим анодом. Иногда дешифраторы встраивают прямо в индикатор. В настоящее время, в связи с широким распространением однокристальных микроконтроллеров с GPIO, семисегментные светодиодные индикаторы подключаются напрямую к выводам микроконтроллера.

Часто на ценниках применяются закрашиваемые фломастером сегменты. Также встречаются трафареты в виде семисегментных индикаторов для изображения цен или телефонных номеров.

Отображение букв

Кроме десяти цифр, семисегментные индикаторы способны отображать буквы. Но лишь немногие из букв имеют интуитивно понятное семисегментное представление.

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

On
Off
Track

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

В массовой культуре

  • Инопланетянин из фильма «Хищник» носил устройство с индикаторами, похожими на семисегментные, но предназначенными для отображения инопланетных цифр, естественно имеющими другое расположение сегментов.
  • Машина времени в фильме «Назад в будущее» имела табло из четырех семисегментных индикаторов с цветами, соответствующими цветам ламп из фильма «Машина времени».

См. также

  • Девятисегментный индикатор
  • Еггогология
  • Матричный индикатор

Примечания

Литература

  • Батушев В. А. Электронные приборы: Учебник для вузов. — 2-е, перераб. и доп. — М .: Высшая школа, 1980. — С. 302-303. — 383 с.
Семисегментный индикатор на Викискладе ?

Вы можете улучшить статью, внеся более точные указания на источники.

На органических светодиодах (OLED) (Гибкий • Активная матрица • Фосфоресцирующий) • SED • FED • Ферроэлектрический (FLD) • На интерферометрическом модуляторе (IMOD) • Электролюминисцентная технология тонкоплёночного диэлектрика (TDEL) • Нанокристаллический • На квантовых точках (QDLED) • На мультиплексном оптическом затворе (TMOS) • Оптический пиксельный (TPD) • Жидкокристаллический лазер (LCL) • Лазерный фосфорный (LPD) • На органических светотранзисторах (OLET) • ClearBlack

Электромеханический (Блинкерное табло • Перекидное табло) • Матричный индикатор • Семисегментный индикатор • Электронная бумага • Гибкий экран • Матрица ламп накаливания • Газоразрядный индикатор

Изображение в свободном пространстве • Телевизионные технологии с большим экраном • Телевидение высокой чёткости • Изображение с высоким динамическим диапазоном (HDRI) • Сенсорный экран • Образцы дисплеев • Сравнение дисплейных технологий

Пассивные твердотельные Резистор · Переменный резистор · Подстроечный резистор · Варистор · Конденсатор · Переменный конденсатор · Подстроечный конденсатор · Катушка индуктивности · Кварцевый резонатор · Предохранитель · Самовосстанавливающийся предохранитель · Трансформатор
Активные твердотельные Диод · Светодиод · Фотодиод · Полупроводниковый лазер · Диод Шоттки · Стабилитрон · Стабистор · Варикап · Вариконд · Диодный мост · Лавинно-пролётный диод · Туннельный диод · Диод Ганна
Транзистор · Биполярный транзистор · Полевой транзистор · КМОП-транзистор · Однопереходный транзистор · Фототранзистор · Составной транзистор · Баллистический транзистор
Интегральная схема · Цифровая интегральная схема · Аналоговая интегральная схема
Тиристор · Симистор · Динистор · Мемристор
Пассивные вакуумные Бареттер
Активные вакуумные и газоразрядные Электронная лампа · Электровакуумный диод · Триод · Тетрод · Пентод · Гексод · Гептод · Пентагрид · Октод · Нонод · Механотрон · Клистрон · Магнетрон · Амплитрон · Платинотрон · Электронно-лучевая трубка · Лампа бегущей волны
Устройства отображения Электронно-лучевая трубка · ЖК-дисплей · Светодиод · Газоразрядный индикатор · Вакуумно-люминесцентный индикатор · Флажковый индикатор · Семисегментный индикатор
Акустические устройства и датчики Микрофон · Громкоговоритель · Тензорезистор
Термоэлектрические устройства Термистор · Термопара · Элемент Пельтье
  • Устройства отображения информации
  • Светодиоды

Wikimedia Foundation . 2010 .

  • Витвинин
  • Питер Левис Кингстон Вентц Третий/Temp

Полезное

Смотреть что такое «Семисегментный индикатор» в других словарях:

  • семисегментный индикатор — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN seven segment display … Справочник технического переводчика
  • Газоразрядный индикатор — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей … Википедия
  • Матричный индикатор — Принцип формирования изображения, используемый в матричных индикаторах Мáтричный индикáтор разновидность знакосинтезирующего индикатора, в котором элементы индикации сгруппированы по строкам и столбцам. Матричный индикатор предназначен для… … Википедия
  • Электронный индикатор — Светодиодный индикатор (компьютерная модель) Электрóнный индикáтор (лат. indicator указатель) это электронное показ … Википедия
  • Дискретный шкальный индикатор — … Википедия
  • Цифровой индикатор — Цифровой индикатор прибор для отображения значения числовой величины в цифровом виде. Имеют фиксированный набор элементов отображения (сегментов), расположенных как произвольно, так и сгруппированных по несколько цифр. Принцип действия … Википедия
  • Девятисегментный индикатор — Эту страницу предлагается объединить с Семисегментный индикатор. Пояснение причин и обсуждение на стра … Википедия
  • Вакуумно-люминесцентный индикатор — Вакуумно лиминесцентный индикатор Вакуумно люминесцентный индикатор (ВЛИ), или катодолюминесцентный индикатор (КЛИ) (vacuum fluorescent display (VF … Википедия
  • Электронное устройство — Эта статья должна быть полностью переписана. На странице обсуждения могут быть пояснения … Википедия
  • Дисплей — У этого термина существуют и другие значения, см. Дисплей (значения). Монохромный дисплей телефона … Википедия
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Введение

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

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

Динамическое управление (динамическая индикация) подразумевает поочередное зажигание разрядов индикатора с частотой, не воспринимаемой человеческим глазом. Схема подключения индикатора в этом случае на порядок экономичнее благодаря тому, что одинаковые сегменты разрядов индикатора объединены.

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

Рассмотрим простейший случай управления индикатором – вывод одной цифры. Схема для наших экспериментов приведена ниже.

Чтобы зажечь на индикаторе какую-то цифру нужно настроить порты, к которым подключен индикатор, в режим выхода, “открыть” транзистор (в данном случае подать на базу “единицу”) и установить в порту микроконтроллера её код.
В зависимости от того, куда подключены сегменты индикатора – коды могут быть разные. Для нашего случая коды цифр будут выглядеть так.

unsigned char number[] =
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
>;

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

Пример 1. Вывод цифр от 0 до 9
#include
#include

unsigned char number[] =
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
>;

unsigned char count = 0;
int main( void )
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff;

//вывод, к которому подкл. катод
PORTD |= (1 <<0);
DDRD |= (1<<0);

while (1) PORTB = number[count];
count++;
if (count == 10) count = 0;
__delay_cycles (8000000);
>
return 0;
>
Эта программа каждую секунду выводит значение переменной count на семисегментный индикатор. Индикация в данном случае — статическая.

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

Пример2. Вывод цифр от 0 до 99
#include
#include

unsigned char number[] =
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
>;

unsigned char
count = 0;

//числа для вывода на индикатор
unsigned char data1 = 2;
unsigned char data2 = 5;

int main( void )
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff;

//порт, к которому подкл. катод
PORTD = 0;
DDRD = (1<<1)|(1<<0);

while (1)

//выводим в порт код цифры
//и зажигаем следующий разряд
if (count == 0) PORTB = number[data2];
PORTD |= (1 <<1);
>
if (count == 1) PORTB = number[data1];
PORTD |= (1 <<0);
>

count++;
if (count == 2) count = 0;

//частота смены разрядов будет 100 Гц при кварце 8МГц
__delay_cycles (800000);
>
return 0;
>
Эта программа просто выводит любое поразрядно заданное число от 0 до 99.
Частота смены разрядов семисегментного индикатора задается с помощью программной задержки __delay_cycles(). Это не самое удачное решение, потому что добавление каких-нибудь других задач в цикл while будет мешать выводу на индикатор. Давайте организуем смену разрядов индикатора с помощью аппаратного таймера/счетчика Т0

Пример3. Вывод цифр от 0 до 99. Смена разрядов выполняется в прерывании таймера
#include
#include

unsigned char number[] =
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
>;

//числа для вывода на индикатор
volatile unsigned char data1 = 0;
volatile unsigned char data2 = 0;

int main( void )
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff;

//порт, к которому подкл. катод
PORTD = 0;
DDRD |= (1<<1)|(1<<0);

//инициализация таймера Т0
//частота прерываний 100Гц при кварце 8МГц
TIMSK = (1 <TCCR0 = (1 <TCNT0 = 0xb2;

__enable_interrupt ();
while (1) //программный счетчик секунд
data1++;
if (data1 == 10) data1 = 0;
data2++;
if (data2 == 10) data2 = 0;
>
__delay_cycles (8000000);
>
return 0;
>

//прерывания таймера Т0 — вывод на индикатор
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Ovf( void )
static unsigned char count = 0;
TCNT0 = 0xb2;

//выводим в порт код цифры
//и зажигаем следующий разряд
if (count == 0) PORTB = number[data2];
PORTD |= (1 <<1);
>
if (count == 1) PORTB = number[data1];
PORTD |= (1 <<0);
>

count++;
if (count == 2) count = 0;
>
Переменные data1, data2 объявлены с ключевым словом volatile, потому что они используются и в основном коде и в прерывании. В проекте под GCC я забыл поставить его поставить, и компилятор выкинул обе переменные, посчитав их ненужными!

Прерывания таймера происходят параллельно выполнению цикла while. Это позволяет выполнять в цикле какую-нибудь полезную задачу. В данном примере с помощью двух переменных в цикле организован программный счетчик от 0 до 99.
Использовать две восьмиразрядные переменные для организации счетчика от 0 до 99 неудобно и расточительно, ведь такой счетчик можно сделать и на одной переменной типа unsigned char. Хорошо, счетчик мы сделаем, а как вывести его значение на семисегментный индикатор? Нужен код “разбивающий” десятичное число на отдельные разряды и вот как он выглядит:

//программный счетчик
unsigned char counterProg = 35;

//”разбиваем” значение счетчика на отдельные разряды
data1 = counterProg % 10;
data2 = counterProg/10;

data1 = counterProg % 10 – это операция деления по модулю 10 (деление с остатком). Результатом этого выражения будет остаток от деления переменной counterProg на 10, то есть для нашего случая 5.

counterProg/10 – это целочисленное деление на 10. Результатом этого выражения будет число 3.

Таким образом, в переменные data2, data1 будут записаны числа 3 и 5 соответственно, значение счетчика counterProg при этом не изменится.

Пример 4. Вывод цифр от 0 до 99.
Преобразование двоичных чисел в двоично-десятичные (BCD)

#include
#include

unsigned char number[] =
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
>;

//числа для вывода на индикатор
volatile unsigned char data1 = 0;
volatile unsigned char data2 = 0;

//программный счетчик секунд
unsigned char counterProg = 0;

int main( void )
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff;

//порт, к которому подкл. катод
PORTD = 0;
DDRD |= (1<<1)|(1<<0);

__enable_interrupt ();
while (1) //программный счетчик секунд
counterProg++;
if (counterProg == 100) counterProg = 0;
data1 = counterProg % 10;
data2 = counterProg/10;
__delay_cycles (8000000);
>
return 0;
>

//прерывания таймера Т0 — вывод на индикатор
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Ovf( void )
static unsigned char count = 0;
TCNT0 = 0xb2;

//выводим код цифры в порт
//и зажигаем следующий разряд
if (count == 0) PORTB = number[data2];
PORTD |= (1 <<1);
>
if (count == 1) PORTB = number[data1];
PORTD |= (1 <<0);
>

count++;
if (count == 2) count = 0;
>
Следующий этап работы над программой – выделение кода обслуживающего светодиодный семисегментный индикатор в отдельные функции. Какой минимальный набор функций нам необходим? Функция инициализации, функция вывода на индикатор и функция преобразования чисел и записи их в буфер.

Функция инициализации

#define PORT_IND PORTB
#define DDR_IND DDRB
#define PORT_K PORTD
#define DDR_K DDRD
#define KAT1 0
#define KAT2 1

volatile unsigned char data[2];

void IND_Init( void )
//порт к которому подкл. сегменты
PORT_IND = 0xff;
DDR_IND = 0xff;

//очистка буфера
data[0] = 0;
data[1] = 0;
>

Порты, к которым подключен семисегментный индикатор, определены с помощью директивы #define – в будущем это позволит быстро править код. Вместо двух переменных data1, data2 удобнее использовать массив unsigned char data[2].

Функция преобразования

void IND_Conv( unsigned char value)
unsigned char tmp;
tmp = value % 10;
data[0] = number[tmp];
tmp = value/10;
data[1] = number[tmp];
>

Процедура преобразования чисел аналогична описанной выше. Единственное отличие – в буфере (data[]) мы теперь сохраняем не результат преобразования, а коды цифр. Зачем делать в прерывании то, что можно сделать в основном цикле программы?

Функция вывода на индикатор

void IND_Update( void )
static unsigned char count = 0;

//выводим в порт код цифры
PORT_IND = data[count];

//зажигаем нужный разряд
if (count == 0) PORT_K |= (1 < if (count == 1) PORT_K |= (1<

count++;
if (count == 2) count = 0;
>

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

Пример 5. Код программы с использованием этих функций //программный счетчик секунд
unsigned char counterProg = 0;

int main( void )
IND_Init();

__enable_interrupt ();
while (1) counterProg++;
if (counterProg == 100) counterProg = 0;
IND_Conv(counterProg);
__delay_cycles (8000000);
>
return 0;
>

//прерывания таймера Т0 – вывод на индикатор
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Ovf( void )
TCNT0 = 0xb2;
IND_Update();
>
И, наконец – разбиение программы на модули.

Создаем два файла – indicator.h и indicator.c. Сохраняем их в папке проекта.
В хидер файле у нас будут директивы условной компиляции, макроопределения и прототипы функций.

#ifndef INDICATOR_H
#define INDICATOR_H

#define PORT_IND PORTB
#define DDR_IND DDRB
#define PORT_K PORTD
#define DDR_K DDRD
#define KAT1 0
#define KAT2 1

void
IND_Init( void );
void IND_Conv( unsigned char value);
void IND_Update( void );

#endif //INDICATOR_H

В сишном файле – #include “indicator.h”, объявления переменных и реализация трех функций. Функции описаны выше, поэтому здесь их не привожу.

Подключаем файл indicator.c к проекту.
В файл main.c инклюдим заголовочный файл нашего драйвера семисегментного индикатора — #include “indicator.h”

Все. Теперь мы можем использовать функции для работы с индикатором в файле main.
Полный код драйвера смотрите в проектах.

Продолжение следует… Скоро будет дополнение к этой статье — описание вольтметра на микроконтроллере – в проекте используется 4-ех разрядный семисегментный индикатор.

Тема 2. Шифраторы и дешифраторы, элементы цифровой индикации

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

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

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

Для формирования двоичного кода, вводимого в однокристальную микроЭВМ (ОЭВМ) при нажатии соответствующей клавиши на клавиатуре, применяется цифровое устройство, называемое шифратором (Ш). Обработка и управление процессом обработки информации осуществляется микропроцессором (МП), входящим в состав микроЭВМ. Хранение исходных данных, промежуточных и конечных результатов, а также программ, по которым происходит обработка информации, осуществляется запоминающим устройством (ЗУ), входящим также в состав ОЭВМ. Вывод информации осуществляется на семисегментный светодиодный индикатор.

Отображение соответствующего символа (цифры или буквы) на семисегментном индикаторе осуществляется при подаче на его входы семиразрядного управляющего двоичного кода, который формируется цифровым устройством, называемым дешифратором (Д). Дешифратор выполняет преобразование двоичной информации на выходе ОЭВМ в специальный двоичный код семисегментного индикатора, соответствующий отображаемому символу.

Семисегментный индикатор – представляет собой светодиодную матрицу, состоящую из семи светодиодов с общим анодом или катодом в одном корпусе. На рисунке 2.2 показан внешний вид и схемы подключения светодиодного индикатора АЛС320. Различные комбинации светящихся сегментов, обеспечиваемые внешней коммутацией, позволяют воспроизвести цифры от 0 до 9 и некоторые символы. В 8-сегментных индикаторах (АЛС321) восьмой сегмент отображает десятичную точку.

Шифратор (кодер) – это комбинационное логическое устройство, вырабатывающее на выходах параллельный двоичный код при подаче сигнала только на один какой-либо его вход. Такое кодирующее устройство применяется для преобразования символов определенного кода в n-разрядный двоичный код. Число информационных входов шифратора равно числу преобразуемых символов (клавиш клавиатуры) и удовлетворяет условию , где n – число информационных выходов. Разрядность шифратора соответствует разрядности выходного двоичного кода. 4-х разрядный шифратор позволяет получить шестнадцать (24=16) вариантов в ыходного двоичного кода, достаточных для преобразования шестнадцатеричных цифр от 0 до F.

Дешифратор (декодер) – это комбинационное логическое устройство, которое при появлении на входах параллельного двоичного кода вырабатывает выходной сигнал на одном из выходов. Как правило, номер выхода, на котором появляется выходной сигнал, соответствует определенному входному двоичному коду. Такое декодирующее устройство применяется для распознавания входных двоичных кодов и преобразования двоичного кода в другие виды кодов, например, в семисегментный код для управления семисегментными индикаторами. Число входов дешифратора равно числу разрядов входного двоичного кода, а число выходов определяется выражением , где n – число информационных входов. Полный двоичный дешифратор имеет 2n выходов. Разрядность дешифратора определяется разрядностью входного кода. Так полный 4-разрядный дешифратор имеет четыре входа и шестнадцать выходов.

В настоящей работе рассматривается схемотехника подключения семисегментных индикаторов и управление процессами ввода и отображения информации. Исследование работы конкретных схем выполняется на ПЭВМ с использованием моделирующей программы Electronics Workbench (EWB).

Предварительное задание к эксперименту.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *