Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

Мультиплексирование сигналов клавиатуры и сегментных индикаторов. Традиционный подход

Журнал РАДИОЛОЦМАН, февраль 2016

Aubrey Kagan

Embedded

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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

Если у вас есть 12 переключателей, и вы хотели бы контролировать каждый из них по отдельности, вам потребовалось бы 12 линий ввода/вывода, работающих только на вход. Мультиплексирование позволит вам сократить это количество. Если вы сформируете из этих контактов матрицу 6 × 2, вам понадобится только восемь (6+2) линий ввода/вывода, а если вы сделаете матрицу 3 × 4 (как показано на Рисунке 1), то сможете ограничиться семью линиями.

Мультиплексирование сигналов клавиатуры и сегментных индикаторов. Традиционный подход
Рисунок 1. Матрица 3 × 4 для 12 переключателей.

Сигналы на выходах Out0 … Out3 изначально имеют высокий логический уровень. Сигнал низкого уровня перемещается последовательно через эти выходы, и на каждом шаге проверяются входы In0 … In2. Если какой-либо из переключателей в определенном столбце матрицы замкнут, на соответствующем входе будет присутствовать логический ноль, и таким образом вы будете знать, какой переключатель нажат. Количество линий ввода/вывода контроллера можно уменьшить с помощью дешифраторов. Взяв дешифратор «2 в 4», вы можете получить четыре линии для управления матрицей переключателей. Данный метод прекрасно работает до тех пор, пока не будут нажаты одновременно две кнопки в одной строке. Тогда напряжение низкого логического уровня пройдет обратно, создав сигнал ложного замыкания и, что более важно, нагрузив выходы с высоким логическим уровнем. Эта проблема решается включением диода последовательно с переключателем. Подобная методика применима к любым типам переключателей, в том числе и к тем, которые не имеют самовозврата. На Рисунке 2 вы можете видеть пример использования диодов вместе с дисковыми переключателями.

Мультиплексирование сигналов клавиатуры и сегментных индикаторов. Традиционный подход
Рисунок 2. Микроконтроллер активирует каждый BCD-переключатель
путем включения каждого транзистора. При замкнутом ключе
соответствующий вход микроконтроллера подтягивается к
низкому уровню, и микроконтроллер, в свою очередь, может
считать положение каждого BCD (или шестнадцатеричного)
переключателя.

Существуют специализированные контроллеры, такие как древний 74C922, а также контроллеры клавиатуры типа TCA8418 или ADP5585, но поскольку IBM давным-давно начала это делать с помощью специализированного микроконтроллера, мне кажется, что большинство людей использует собственные микроконтроллеры или ПЛИС, тем более, что с ростом плотности упаковки значительно увеличилось количество линий ввода/вывода.

Управление дисплеями происходит во многом аналогично. Вы могли бы включать отдельные светодиоды или 7-сегментный светодиодный индикатор, но этим вы не ограничены. Существуют «звездообразные» 14-сегментные дисплеи (которые поддерживают буквенно-цифровой вывод), и необязательно они должны быть изготовлены на основе светодиодов: вакуумные флуоресцентные индикаторы являются одной из таких альтернатив. Зачастую, используя преимущество техники мультиплексирования, символы группируются в один модуль. Давайте обсудим пример с четырехсимвольным 7-сегментным индикатором; этот подход может быть экстраполирован в любом направлении. Посмотрите на Рисунок 3.

Мультиплексирование сигналов клавиатуры и сегментных индикаторов. Традиционный подход
Рисунок 3. Два двухсимвольных 7-сегментных модуля с общим катодом соединены
в четырехсимвольный мультиплексированный дисплей. Учтите, что
для выходов DIGITx и входов SEG_X вам могут понадобиться драйверы,
а в зависимости от драйверов, могут не потребоваться резисторы.
Аналогичную схему можно сделать, используя индикаторы с общим анодом.

Здесь принцип работы заключается в поочередном включении необходимых сегментов каждого разряда. Благодаря инерции человеческого зрения изображение остается на сетчатке глаза еще некоторое время после исчезновения его источника. Если изображение обновляется достаточно часто, оно будет видимым постоянно. Минимальной достаточной частотой обновления считается 50 Гц, но при таком ее значении вы можете увидеть мерцание при наблюдении краем глаза, поэтому обычно я устанавливаю хотя бы 60 Гц. Воспринимаемая глазом яркость светодиода пропорциональна времени, в течение которого он включен. Поэтому, если цифра отображается четверть промежутка времени, то ток должен быть в четыре раза больше значения, необходимого для статического индикатора, при этом средний ток остается таким же. Тут возможна одна проблема. Если вы посмотрите документацию на индикатор (в нашем примере MAN6400), то увидите, что для конкретного времени включения существует пиковый ток, который вы не можете превысить, не повредив светодиоды (Рисунок 3). С четырьмя цифрами проблем, скорее всего, не возникнет, но при увеличении их количества потребляемый ток будет расти, и это может ограничить разрядность дисплея. И есть еще одно соображение, который необходимо принимать во внимание. Максимальный постоянный ток значительно меньше пикового тока (из документации – 30 мА), и если вы осуществляете сканирование с помощью микроконтроллера, и в процессе разработки программа оставляет одну цифру включенной, ток выше 30 мА сожжет индикатор. Вы были предупреждены! Все сказанное предполагает, что микроконтроллер может отдавать и потреблять достаточный ток.

Чтобы уменьшить количество линий ввода/вывода и сократить время вычислений, существуют дешифраторы, преобразующие определенный BCD-код в сигналы для 7-сегментного (см. доисторическую микросхему SN7447), или даже 14-сегментного индикатора (например, MAX6995). Также имеется много драйверов индикаторов, таких как MAX7219, или же вышеупомянутый MAX6995, в который еще интегрирован контроллер клавиатуры. Но многие из нас экономят на оборудовании, и весь интерфейс создают на микроконтроллере. На данную тему есть руководства по применению, выпущенные, например, компаниями Microchip и Atmel. У Cypress даже имеется пользовательский модуль, реализующий драйверы 7-сегментных дисплеев для всех устройств семейства PSoC. Метод работы с точечно-матричными дисплеями ничем не отличается, хотя вывести символ несколько сложнее, а столбцов, как правило, намного больше, из-за чего коэффициент заполнения уменьшается.

Так обстояло дело до середины 1990-х. Присоединяйтесь ко мне во второй части, где мы рассмотрим сокращение количества линий ввода/вывода с помощью чарлиплексирования. Разве не парадоксально, что только тогда, когда число линий ввода/вывода начало расти вслед за увеличением размеров корпусов, стали появляться методы, позволяющие сократить количество требуемых выводов?

Материалы по теме

  1. Datasheet Analog Devices ADP5585
  2. Datasheet Texas Instruments MM74C922
  3. Datasheet Texas Instruments SN7447
  4. Datasheet Texas Instruments TCA8418
  5. Datasheet Maxim Integrated MAX6995
  6. Datasheet Maxim Integrated MAX7219
  7. Datasheet Fairchild MAN6400

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Keyboard and display multiplexing - the traditional approach

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