Эта статья продолжает цикл моих публикация про организацию динамической индикации на микроконтроллерах PIC и LED индикаторах. Вот ссылки на предыдущие публикации:
- Динамическая индикация на светодиодных 7-сегментных индикаторах с программной регулировкой яркости
- Еще раз о динамической индикации на LED-индикаторах
Здесь будет рассмотрено экономичное подключение 4-разрядного индикатора к 4 выводам микроконтроллера (МК). Обычно, для подключения LED индикатора к микроконтроллеру через сдвиговый регистр, требуется не менее 7 выводов: три для управления регистром и четыре для управления собственно разрядами индикатора в динамическом режиме. Я же в этой статье предлагаю обойтись для этого всего четырьмя выводами МК, совместив управление регистром и разрядами. При этом, специальный алгоритм обеспечивает отсутствие влияния индикатора на работу с регистром и полное отсутствие паразитного свечения неактивных сегментов индикатора.
Таблица работы предлагаемого алгоритма (используется индикатор с общим катодом, в первой графе указаны выводы регистра, совмещенные с разрядами индикатора) согласно схеме подключения, приведенной ниже.
В каждом из прерываний с интервалом 2 мс (в данном случае от таймера TMR0) подготавливается один этап динамической индикации (ДИ) согласно алгоритму, который состоит из пяти фаз управления регистром и индикатором.
1-я фаза: выставлением логического 0 на входе сброса регистра, последний сбрасывается в 0. Эта фаза – единственная, при которой протекает паразитный ток через неактивные сегменты, но ее длительность сведена всего к одному такту ( для этого в программу на C специально введена ассемблерная инструкция) длительностью 1мкс (для тактовой частоты 4 МГц) при длительности одного этапа ДИ в 2000 мкс, так что свечение неактивных сегментов не заметно даже в темноте.
2-я фаза: положительный перепад на выводе 12 регистра (ST_CP) записывает нулевое состояние регистра в выходную защелку. Здесь и далее, до начала индикации, индикатор погашен нулевым потенциалом на сегментах.
3-я фаза: посредством управления выводами регистра 14 (DS – данные) и 11 (SH_CP – тактовый) в него записывается код для управления сегментами.
4-я фаза: положительным перепадом на выводе 12 регистра данные из регистра записываются в выходную защелку, причем, из-за положительных уровней на разрядах индикатор остается погашенным.
5-я фаза: здесь на выводы разрядов индикатора подается требуемый код, и далее происходит собственно индикация.
Если в схеме задействован один 4-х разрядный индикатор, то для правильной работы он должен быть с ОК. Если требуется управлять 8-ю разрядами, то используются 8 портов МК, при этом, остальные 4 порта просто управляют разрядами (в фазе 4 на них должен быть высокий уровень). Стоит отметить, что в этом случае возможно применение индикаторов как с ОК, так и с ОА, подключая к регистру соответственно сегменты или разряды (по причинам, изложенным ниже, ДИ в первом случае предпочтительно организовать посегментную, а во втором – поразрядную).
По этой методике можно подключить два четырехразрядных индикатора к МК PIC16F676, используя один сдвиговый регистр, при этом, останутся для использования целых четыре свободных вывода. Здесь, например, для такого подключения люди использовали совмещение в некоторых пинах МК функций ДИ и аналоговых входов (на мой взгляд, крайне сомнительное решение), что привело к значительному усложнению схемы и к некоторым ограничениям, о чем авторы и предупреждают. Используя мою схему подключения, все решилось бы просто и красиво – входы отдельно, индикация отдельно, плюс еще два вывода (включая MCLR) для кнопок.
Для тестирования данного способа управления предлагается следующая простая схема на МК PIC12F629 и индикаторе FYQ3641A, которое выдает на индикаторе попеременно слово «test» и число 1234.
Здесь решено применить посегментную ДИ (в каждый момент включен один сегмент, а на разрядных выводах присутствует код, где в каждом разряде: 0 – если в данном разряде должен гореть данный сегмент и 1 – в противном случае), при котором пиковые токи перекладываются на регистр. Почему? Этому есть две причины: первая – максимальная нагрузочная способность выходов 74HC595 35 мА против 25 мА у контроллеров PIC; вторая и главная – близкий к предельному ток через выходной порт МК теоретически может поднять выходной потенциал оного до уровня переключения входов регистра, что привело бы к ошибкам в работе. А так, в порты МК втекают токи 6-7 мА и на выходах потенциалы заведомо не превышают TTL-уровни.
Как упоминалось выше, интервал прерываний - 2 мс, что соответствует частоте обновления индикатора в 64 Гц и его свечение достаточно комфортно воспринимается глазом.
Данный способ ДИ, кроме всего прочего, позволил вдвое уменьшить количество токоограничительных резисторов (R2-R5).
Устройство собрано на так называемой «беспаечной» макетной плате.
Индикатор можно заменить на любой из серии 3641А.
Схема питается от стабилизированного источника, напряжением 5 В. Я использовал специальную плату-стабилизатор, предназначенный для использования совместно с упомянутой выше макетной платой.
Программа управления МК написана на языке Си и оттранслирована в среде MikroC.
Код в MikroC, проект Proteus, HEX-файл в приложении.
Для использования данного способа подключения в коммерческих разработках просьба связаться со мной.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
DD1 | МК PIC 8-бит | PIC12F629 | 1 | Поиск в магазине Отрон | ||
DD2 | Регистр | 74HC595 | 1 | Поиск в магазине Отрон | ||
HL | Индикатор | FYQ3641 | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 30 кОм | 1 | Поиск в магазине Отрон | ||
R2 | Резистор | 430 Ом | 1 | Поиск в магазине Отрон | ||
R3 | Резистор | 430 Ом | 1 | Поиск в магазине Отрон | ||
R4 | Резистор | 430 Ом | 1 | Поиск в магазине Отрон | ||
R5 | Резистор | 430 Ом | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- 4_to_4.rar (19 Кб)
Комментарии (18) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
- до 8 индикаторов по 3 проводам
- регулировка яркости
- адекватная частота обновления 800 Гц (64 Гц крайне мало и колхозно)
- один раз загрузил данные для индикации, и не нужно постоянно дрыгать портами
Схема была в последнем журнале Радио, вроде термометр очередной или вольтметр. Там тоже 64 Гц было.
Прошивку оригинала автор немного упростил, но это все равно не спасает.
[Автор]
И чем Вам так мала частота 64 Гц? Для такого рода индикатора ее вполне достаточно, добрая половина телевизоров работают на такой и меньшей частоте!
[Автор]
[Автор]
[Автор]
[Автор]
Слушайте, существует множество конструкций с использованием 74hc595 (один из которых я указал в статье), которые при моем включении сильно бы упростились. А если Вы можете сделать все дешевле и проще - с удовольствием прочту Вашу статью!
А если серьезно, то существует множество способов подключения LED индикатора к МК, некоторые из них настолько очевидны, что приписывать авторство на них я бы постеснялся. При подключении по трем проводам мне, например, больше нравится MAX7219. При цене на Ebay от 28 рублей – вообще трудно придумать альтернативу.
[Автор]
[Автор]