Главная » Микроконтроллеры
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

Похожие статьи:


Подключение 4-разрядного LED индикатора всего к 4 портам микроконтроллера

Эта статья продолжает цикл моих публикация про организацию динамической индикации на микроконтроллерах PIC и 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 Поиск в FivelВ блокнот
DD2 Регистр74HC5951 Поиск в FivelВ блокнот
HL ИндикаторFYQ36411 Поиск в FivelВ блокнот
R1 Резистор
30 кОм
1 Поиск в FivelВ блокнот
R2 Резистор
430 Ом
1 Поиск в FivelВ блокнот
R3 Резистор
430 Ом
1 Поиск в FivelВ блокнот
R4 Резистор
430 Ом
1 Поиск в FivelВ блокнот
R5 Резистор
430 Ом
1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (18) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
+1
Zlodey #
Проще поставить MAX7219:
- до 8 индикаторов по 3 проводам
- регулировка яркости
- адекватная частота обновления 800 Гц (64 Гц крайне мало и колхозно)
- один раз загрузил данные для индикации, и не нужно постоянно дрыгать портами
Ответить
0
Igor #
Проще, то проще, только цена разная у микросхем.
Схема была в последнем журнале Радио, вроде термометр очередной или вольтметр. Там тоже 64 Гц было.
Ответить
0
Igor #
И программа написана на Си, что хуже, чем 64 Гц.
Прошивку оригинала автор немного упростил, но это все равно не спасает.
Ответить
0

[Автор]
diogen_b #
А еще можно для индикации применить дополнительную mega16 и подключать до 16 индикаторов по двум проводам и далее по Вашему списку... Зачем же так категорично? Я думаю, имеют право на жизнь и то, и другое, и третье. Я сторонник простых и дешевых, но красивых решений. Иногда портами дрыгать тоже надо уметь.
И чем Вам так мала частота 64 Гц? Для такого рода индикатора ее вполне достаточно, добрая половина телевизоров работают на такой и меньшей частоте!
Ответить
0
Zlodey #
Пример с телевизором не очень удачный. За телевизором человек сидит, и постоянно пялится в экран. А в случае со светодиодным индикатором, обычно нужно на него бросить взгляд и посмотреть цифры. При броском взгляде на индикатор, видна стробоскопическая "размазня". Я обычно делаю динамику 1-2 кГц, и смотрю на индикатор как на статический. Намного комфортней в использоваании.
Ответить
0

[Автор]
diogen_b #
Igor, в радио моя статья - практическое воплощение этого метода, я ее собираюсь позже опубликовать здесь в более полном варианте. А насчет Си... Кому-то нравится на ассемблере, кому-то на Си. Но я же подробно описал алгоритм, а код можно написать кому на чем удобно.
Ответить
0

[Автор]
diogen_b #
Zlodey, приводимые Вами цифры весьма, на мой взгляд, избыточны. Но спорить не буду: в конце концов, простым уменьшением периода прерывания можно, при желании, безболезненно увеличить частоту ДИ в 2-4, а при увеличении тактовой частоты и в 8, раз.
Ответить
0
S.Serg #
а при увеличении тактовой частоты и в 8, раз.
Не понятно почему нельзя уменьшить интервал прерывания при этой тактовой?
Ответить
0

[Автор]
diogen_b #
Вероятно, Вы имели в виду уменьшить в 8 раз. Поясняю. Уменьшить в 8 раз интервал прерываний (он тогда будет 256 мкс) можно и при этой тактовой, однако, сама подпрограмма прерывания длится около 200 тактов, что при тактовой частоте 4МГц составит 200 мкс. Получается МК из каждых 256 мкс будет тратить на индикацию 200, что, согласитесь, не есть хорошо. Если увеличить тактовую хотя бы до 8МГц, больше половины времени МК будет тратить на саму программу, что уже неплохо. Это и имелось в виду.
Ответить
0
Igor #
Вначале прочитал вашу статью в журнале Радио. Собственно возник вопрос, а в чем целесообразность данного решения. Если нам нужно уменьшить габариты устройства, то логично применить МК с большим количеством ног и совсем отказаться от сдвигового регистра. Если же экономим выводы МК, то лучше применить два 74HC595 и управлять ими по трем проводам, да еще и количество разрядов можно нарастить до 8. А тут, на мой взгляд, какое-то странное промежуточное решение, которое конечно само по себе интересно, но целая статья в журнале по этому поводу – это уже перебор.
Ответить
0

[Автор]
diogen_b #
Если же экономим выводы МК, то лучше применить два 74HC595 и управлять ими по трем проводам, да еще и количество разрядов можно нарастить до 8
Вы мне же описали в точности один из моих разработок на сайте. Круто!

целая статья в журнале по этому поводу – это уже перебор.
Ага, а другие статьи в журналах и на сайте тянут, как минимум, на докторскую!

Слушайте, существует множество конструкций с использованием 74hc595 (один из которых я указал в статье), которые при моем включении сильно бы упростились. А если Вы можете сделать все дешевле и проще - с удовольствием прочту Вашу статью!
Ответить
0
igor #
Вы мне же описали в точности один из моих разработок на сайте. Круто!
А колесо – это случайно не ваша разработка?
А если серьезно, то существует множество способов подключения LED индикатора к МК, некоторые из них настолько очевидны, что приписывать авторство на них я бы постеснялся. При подключении по трем проводам мне, например, больше нравится MAX7219. При цене на Ebay от 28 рублей – вообще трудно придумать альтернативу.
а другие статьи в журналах тянут, как минимум, на докторскую!
К сожалению уровень некоторых статей в журнале Радио в последнее время действительно сильно измельчал.
Ответить
0

[Автор]
diogen_b #
Шутки Ваши здесь не совсем уместны, так как я, не претендуя на первенство (в отличии от ЭТОЙ разработки), просто указал, что здесь http://cxem.net/izmer/izmer151.php такое подключение я уже использовал, то есть я в курсе этого способа.
мне, например, больше нравится MAX7219. При цене на Ebay от 28 рублей – вообще трудно придумать альтернативу.
Помнится, несколькими постами выше Вы были не совсем согласны с подобным утверждением Zlodey. Да и цена эта, наверное, от 10 штук, потому как, при заказе 1 шт минимальная цена 65 руб - стоимость 20 шт 74hc595 на Али.
Ответить
0
Igor #
Помнится, несколькими постами выше
Это был не я. Просто так уж совпало, что я тоже Igor.
Ответить
0
Сеня #
Ну где перебор-то? Три выхода и два регистра, или, четыре выхода и один регистр. На мой взгляд экономия налицо.
Ответить
0
dinozavr #
Респект, идея хорошая! У меня вот какой вопрос, почему в модели отдельные индикаторы, а не четырехразрядный?
Ответить
0

[Автор]
diogen_b #
Неловко признаваться, но модель 4-разрядного индикатора, в данном случае, я не смог заставить корректно работать. Буду благодарен, если кто подскажет в чем там дело.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Конструктор: DDS генератор сигналов Бокс для хранения компонентов
вверх