Очередное мультиплексирование (8 семисегментных индикаторов по 8 ногам)

Тема мультиплексирования ввода вывода уже поднималась. Например, здесь.

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



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

При подключении одного индикатора к восьми ножкам контроллера проблем не возникает — цепляем все ножки, например, на порт В. Для упрощения считаем, что у нас индикатор с общим анодом, то есть чтобы загорелся сегмент надо подать питание на общий провод, а нужный сегмент притянуть к земле.
Что у нас имеется: если подать логическую «1» на ножку с общим проводом, а ножки с нужными сегментами установить в «0», то эти сегменты и загорятся. Просто? Просто.

Теперь как подключить второй (и остальные) индикаторы.
Например, у первого индикатора общий провод был прицеплен к пину РВ0. Второй индикатор цепляем параллельно первому, но чуть-чуть перемешиваем ножки — цепляем его общий провод к пину РВ1. У третьего индикатора — к РВ2 и так далее.

Теперь, чтобы засветить на нужном индикаторе сегменты сначала определяемся с номером индикатора. Например, индикатор номер 2. Смотрим в табличку — ага, его общий провод на пине РВ1. Значит его устанавливаем в «1». А нужные сегменты точно также засвечиваем логическим «0».



Фактически, если нарисовать эквивалентную схему со всеми диодами, то мы увидим, что получилась классическая схема Чарлиплексинга, по которой на 8 ножек можно подключить 8*(8-1)=56 светодиодов.

PS. Схема подсмотрена на сайте rlocman.ru

Комментарии (13)

RSS свернуть / развернуть
Тут проблема в том, что нога контроллера может не вывезти всю восьмерку.
0
Динамика…
0
Точнее, здесь нельзя поджигать более 1 сегмента — иначе будут проблемы с яркостью (разряды тоже подключены через резистор). Поэтому D здесь ужасающе мал (1/56), но с современными суперяркими индикаторами работает. Собсна эту схему я уже упоминал в комментах, равно как и возможный вариант переведения на порязрядную динамику, а не поразрадно-посегментную.
0
Да, не заметил коммента. Просто часто встречал вопрос — а как чарлиплексить семисегментники, они же ОК (или ОА)? Вот и выкатил схемку.

По поводу тока ножки — классически подпереть транзистором общие выходы.
0
Так, просто заметил — статья в AVR, а на схеме PIC. ж-)
+1
ну да, перекину наверно в «Схемотехнику». Просто думал кучок программы запилить, но обломался.
0
Чем больше смотрю я на эту схему, тем отчетливее понимаю — все-таки, экзотика, не имеющая серьезного практического применения. Разводка платы — дурацкая, очевидны проблемы с равномерностью яркости сегментов. В случае поразрядного мультиплексирования 1/56 — это, конечно, здорово, но частота обновления будет порядка 2,8 кГц — каждые 357 мкс. Накладные расходы на обслуживание такой индикации — огромны. И даже при небольшой задержке из-за временного запрета прерываний при обработке важных событий, все равно появится неравномерность яркости.
+1
  • avatar
  • mzw
  • 19 июля 2011, 11:10
И, кстати, при резисторах 270 Ом при порсегментной динамической индикации при 5В питания ток через сегмент будет (5 — 2,2) / (2 х 270) = 5 мА.
Это очень мало. AVR может отдать 40 мА, поэтому резисторы нужно будет поставить по 36 Ом.
+1
А при этом может начать влиять неравномерность выходных сопротивлений ключей.
0
Как вариант — общие выводы буферизировать транзистором. Тогда можно весь разряд зажечь целиком и мультиплексирование будет уже 1/8
0
А это уже некрасиво.
0
«точка» остаётся за кадром?
0
Кстати, это еще один вывод.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.