@null_object

Как подключить семисегментные индикаторы?

Здравствуйте ! Сейчас работаю над проектом панели автопилота для авиа-симулятора. Хочу сделать примерно так:
5d1a1d4100d28476702152.jpeg

Заказал 19 семисегментных индикаторов, но, по понятным причинам, не смогу все подключить к микроконтроллеру. Знаю про сдвиговые регистры, но не совсем понимаю принцип работы, назначение некоторых пинов. Можете понятно объяснить как они работают, и как лучше организовать подключение такого количества дисплеев ? Может какие-то другие сдвиговые регистры, а не 74HC595, или правильная комбинация 74HC595 ?
  • Вопрос задан
  • 782 просмотра
Решения вопроса 3
deepblack
@deepblack
не совсем понимаю принцип работы, назначение некоторых пинов

Фокус сдвиговых регистров применительно к подобным дисплеям, в том что наше зрение инерционно.
Т.е. если с большой частотой переключать разряды (я имею ввиду отдельные одноразрядные индикаторы), то наши глаза не замечают того что в момент времени горит только один разряд из нескольких.
Функциональная диаграмма 74HC595
5d1a30de0addf343385612.png

Здесь внутри по сути простой счетчик на RS-триггерах (упрощённо):
  • Выходы отключены
  • Сбрасываем счётчик
  • Подаем нужное количество импульсов
  • Включаем выходы
  • Видим результат
  • Повторяем для следующего разряда


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

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

Лично я реализовывал бы подобное с помощью i2c драйверов для семисегментных дисплеев.
Например таких
5d1abcf5f3ddb328919876.png5d1a385ac1af1933507278.jpeg5d1a38614b41a041915375.jpeg

Плюс подобного решения в простоте, у каждого дисплея (не разряда), есть свой адрес, вы пишете по этому адресу значение и получаете его на нужном дисплее.
При этом помимо питания у вас только две линии SDA и SCL (сразу для всех устройств).
I2C поддерживает огромное количество slave устройств на линии.

Полезные ссылки:
I2C
Сдвиговый регистр
Мультиплексирование
Динамическая индикация

P.S. Я не профи в этом деле, но в детстве увлекался электроникой.
Ответ написан
kotomyava
@kotomyava
Системный администратор
Индикаторы бывают весьма разные.
Есть уже с контроллером на борту и последовательным интерфейсом. С ними проще всего работать и они замечательно каскадируются, но несоколько дороже и сложнее найти.
Есть те, которые предназначены для динамической индикации, где на несколько цифр 7+1 нога + несколько общих катодов или анодов, переключая которые одновременно с установкой нужной цифры можно получать индикацию на всех цифрах.
Есть те, что предназначены для статической индикации, и требуют очень много ног.

Кроме простых сдвиговых регистров есть более специфичные контроллеры индикаторов, например, MAX7221 и много других.

К тому же, индикатор должен подходить к контроллеру.

А по тому, что вы не понимаете, лучше задать конкретные вопросы, причём лучше сначала изучить как следует документацию и примеры, чтобы вопросы были точны а ответы стали понятны...
Ответ написан
Комментировать
anthtml
@anthtml
Системный администратор программист радиолюбитель
Как уже класно и подробно расписал Андрей, я бы делал на регистрах и, возможно, I2C драйверах или отдельном контроллере.
На каждую цифру (сегмент) по 595, сегменты в дисплее соединить последовательно, итого на 5 дисплеев у нас 11-15 портов. и никакой нагрузки от динамической индикации - отправили число и забыли до следующего
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@evgeniy_lm
как то так, а так еще лучше
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
по одному регистру на каждую цифру. у них используется 3 вывода данные, строб и запись. Вывод данных - подключается по цепочке(от второго регистра к первого от первого к микроконтроллеру). Строб(Clock) - импульсы - на каждое изменения бита данных - каждый байт 8 импульсов(паралельно у всех микросхем). Запись (Latch) - импульс записи переданнного состояния в выходы - один импульс чтобы отобразилась переданная информация(паралельно у всех микросхем) .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы