Эта статья продолжает цикл моих публикация про организацию динамической индикации на микроконтроллерах 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 на них должен быть высокий уровень). Стоит отметить, что в этом случае возможно применение индикаторов как с ОК, так и с ОА, подключая к регистру соответственно сегменты или разряды (по причинам, изложенным ниже, ДИ в первом случае предпочтительно организовать посегментную, а во втором – поразрядную).
По этой методике можно подключить два 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-битPIC12F6291
DD2
Регистр74HC5951
HL
ИндикаторFYQ36411
R1
Резистор30 кОм1
R2
Резистор430 Ом1
R3
Резистор430 Ом1
R4
Резистор430 Ом1
R5
Резистор430 Ом1
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- 4_to_4.rar (19 Кб)