Как известно, существует немало способов решения задачи по управлению множеством светодиодов с минимальным использованием линий ввода/вывода микроконтроллера, начиная от аппаратных решений на регистрах сдвига и специализированных микросхемах расширителей портов, и заканчивая различными программными подходами мультиплексирования.
В этой статье мы познакомимся с новой техникой управления шестью светодиодами при использовании всего лишь двух линий ввода/вывода микроконтроллера и комплементарной пары биполярных транзисторов, и, таким образом, практически применимой для любого микроконтроллера с малым количеством выводов. Принципиальная схема подключения светодиодов к микроконтроллеру серии PIC10F2xx изображена на Рисунке 1.
Abb.1
Основное ограничение в схеме: напряжение питания микроконтроллера должно быть в диапазоне 2.0 В – 3.0 В. Например, если включен светодиод LED2 (Таблица 1), светодиоды LED4 и LED6 также будут «засвечиваться» в случае, если напряжения питания будет намного выше уровня 3.0 В. В схеме могут использоваться любые маломощные биполярные транзисторы, но с целью сохраненения одинаковой яркости свечения всех светодиодов, рекомендуется применять транзисторы с низким напряжением насыщения коллектор-эммитер (Uкэ нас, VCE(sat)).
Особого описания схема не требует, а алгоритм управления светодиодами легко понять по Таблице 1. Учитывайте, что состояния (0,0) и (1,1) недопустимы.
Для проверки работоспособности схемы автор использовал самый маленький и простой микроконтроллер PIC10F200. Исходные коды на ассемблере для микроконтроллеров PIC10F200 и PIC10F322, доступные в секции загрузок, демонстрируют два режима работы светодиодов.
Обратите внимание, что в один момент времени светится только один светодиод, а ток через светодиоды минимален (до 2 мА), поэтому используются светодиоды высокой яркости, а для включения светодиодов микроконтроллером генерируются последовательности коротких импульсов. Исходный код снабжен подробными комментариями, оптимизирован по размеру и занимает в памяти менее 256 слов, что позволяет использовать любой другой микроконтроллер PIC с малым количеством выводов.