Реле Tianbo - ресурс 10 млн переключений

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

Журнал РАДИОЛОЦМАН, июль 2011

Charaf Laissoub

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Классические проекты на микроконтроллерах, где требуется управление восемью семисегментными светодиодными индикаторами, требуют наличия как минимум 15 свободных линий ввода/вывода микроконтроллера. Мы же рассмотрим решение, которое можно применить при разработке отдельного дисплейного модуля на светодиодных индикаторах, например, для 24-битного частотомера.

Благодаря такому решению можно получить дешевый дисплейный модуль, с низким потреблением энергии и с применением малого количества компонентов. Он вполне может заменить классические цифровые счетчики, собранные на ТТЛ или КМОП микросхемах. Применение единственного и доступного микроконтроллера позволяет значительно упростить и удешевить конечную конструкцию отдельного дисплейного модуля.

На Рисунке 1 изображена схема подключения восьми индикаторов к микроконтроллеру PIC16F628A.

Рисунок 1.
Схема позволяет заменить классическое решение цифрового счетчика на микросхемах ТТЛ или КМОП

Микроконтроллер работает от внутреннего осциллятора 4 МГц. Алгоритм работы микроконтроллера реализует технику двойного мультиплексирования: управление сегментами одного разряда в отдельный момент времени, т.е. посегментная индикация. Эта техника позволяет сократить потребление энергии, что дает возможность применять данный модуль в проектах с батарейным питанием. Ток потребления составляет менее 2 мА при использовании ультраярких семисегментных индикаторов (например, производства компании KingBrightSC52-11EWA) и токоограничительных резисторов R0-R7 номиналом 270 Ом.

Кроме низкого потребления и малого числа внешних компонентов, имеется еще одна особенность такого решения – возможность использования светодиодных индикаторов как с общим катодом, так и с общим анодом. При использовании того или иного типа индикаторов необходимо лишь внести коррективы в исходный код и перекомпилировать проект. Файл-библиотека 8dgtcacc.inc для работы с индикаторами доступен для загрузки ниже, он снабжен подробными комментариями, что поможет пользователям понять работу алгоритма.

Корректировка исходного кода сводится к правке файла 8dgtcacc.inc, в котором:

  • при использовании индикаторов с общим анодом необходимо сделать активной строку #define use CAdisplay, а строку #define use CCdisplay пометить как комментарий;
  • при использовании индикаторов с общим катодом необходимо сделать активной строку #define use CCdisplay, а строку #define use CAdisplay поместить в комментарий.

Восемь светодиодных индикаторов DS7-DS0 подключаются к микроконтроллеру таким образом, чтобы соответствующие сигнальные линии индикаторов A7, B6, C5, D4, E3, F2, G1 и СА0 были подключены к порту микроконтроллера RB0. Выводы индикаторов B7, C6, D5, E4, F3, G2, CA1 и A0 должны быть подключены к порту микроконтроллера RB1. На Рисунке 1 демонстрируется подключение индикаторов к микроконтроллеру.

Исходный код может быть переработан пользователями для реализации на других типах микроконтроллеров, однако следует учитывать, что микроконтроллер должен иметь полный 8-битный порт ввода/вывода.

Загрузки

Исходный код (исходный текст для файла библиотеки 8dgtcacc.inc) - скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Eight-digit counter works with common anode or common cathode

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Управление сегментами различных индикаторов - зависимое. Погашенный сегмент одного индикатора активизирует засветки в другом по цепи общего провода знакоместа. Например, отобразим "3" на индикаторе DS7. Вывод CA7=1, (А7..G7) = (0000110), при этом СА4 =СА3=1, сегменты D4,E3,E4,F3,F4,G3,B4,C3, будут засвечены. Засветки не произойдёт при использовании вектора (А7..G7) = (0000тс,тс,0), т.е. вместо лог.1 - разрыв, третье состояние. Но в этом случае, речь не идёт о двойном мультиплексировании во времени, как написано в переводе статьи. Именно эта фраза в переводе заставила меня усомниться в правильности самой идеи проекта.
  • for Holit в данной схемотехнике для правильной работы должен применяться выходной каскад с возможностью работы с 3-мя сосотяниями : вывод подключен к 0 вывод подключен к +5 вывод в Z-состоянии из имеющихся в доступном наличии такими возможностями обладают только AVRки (при условии, что "подтягивающий резистор" будет отключен) ;)
  • Это можно реализовать на любом современном контроллере. Но когда вы будете считать себестоимость, то убедитесь что сборка 8 отдельных индикаторов или сборок индикаторов с отдельными выводами будет стоить значительно дороже, чем сборка узла индикации там где применен механизм обычной динамической индикации. Далее в обычных схемах, очень легко устроить мультиплицирование во времени и использовать выводы микроконтроллера то для, индикации, то для опроса входов или кнопок управления. В этом включении для нормальной индикации необходимо чтобы выводы были задействованы только для индикации, а иначе будет нежелательная подсветка сегментов индикатора. [B]Вывод [/B]это удобно когда используется автономный модуль индикации со своим контроллером. В схемах, где необходимо все функции ввода вывода информации и индикации выполнить на одном микроконтроллере нет выигрыша.
  • не только AVR в ПИКах это можно сделать переключая вывод на вход, без подтягивающего резюка.