Предложенное устройство (с. рис.1)собрано на микроконтроллере АТ89С2051 (МК), но не требует знания его системы команд. МК находится в режиме чтения Flesh-памяти, который обычно используется в программаторе для сверки записанного в память значения. Подав на соответствующие выводы уровни логических сигналов, можно читать на выводах порта Р1 код, содержащийся во внутренней ячейке памяти. Фронт короткого импульса (см. вывод 11 микросхемы DD1), поступающий на выводы 5 и 8 МК от генератора с большой скважностью, увеличивает на единицу значение адреса, хранящегося в его внутреннем регистре, после чего состояние его выводов 13-19 соответствует коду, записанному по этому адресу. Во время данного импульса выводы находятся в третьем Z-состоянии, светодиоды светиться не могут. По достижении старшего адреса (7FFH) просмотр ячеек продолжается с нулевого. Таким образом, полная световая программа состоит их 2048 тактов, повторяемых циклически. Этот способ управления не соответствует рекомендациям фирмы ATMEL (разработчик МК), но реально работает, правда, линия Р1.0 (выв. 12) бездействует [1].
В устройстве можно применить светодиоды любого типа и цвета свечения без ограничительных резисторов. Допускается соединять их последовательно парами, т.к. функцию ограничения тока до 20 мА с успехом выполняют внутренние буферы МК.
Схема имеет больше функциональных возможностей, чем описанная в [2], которая состоит из 10 переключателей, которые позволяют вручную изменять динамический рисунок и включать или выключать автореверс.
5 выходов триггеров восьмиразрядного регистра КР1533ИР23 (зарубежный аналог SN74LS374) соединены с входом следующего. При включении питания на выводах триггеров устанавливается высокий уровень. Такое включение позволяет фронтом тактового сигнала (положительный перепад) на входе "С" принимать и передавать последовательную двоичную информацию, присутствующую на входе D0, с одновременным ее преобразованием в параллельный вид. Можно использовать все 8 разрядов, добавив еще 10 светодиодов и 2 транзистора. Данные на выходах 13 и 14 МК появляются одновременно. Чтобы выполнить запись в триггер DD2 (вход D0), данные логично подавать раньше фронта тактового сигнала, поступающего на вход "С". Это условие обеспечивается автоматически тем, что на внутренний триггер данные попадают минимум на 15 нс раньше тактового сигнала параллельной записи, который внутрисхемно до триггера усиливается и инвертируется. Резистор R4 обеспечивает состояние низкого уровня в период Z-состояния на выходе порта Р1.1 МК, что позволяет сразу вести запись следующего бита без принудительного возврата тактирующего сигнала в низкий уровень. Высокие уровни на выводах триггеров открывают соответствующие транзисторы. Если на выводах 15-19 МК низкий уровень, то все светодиоды светятся. Записав нужные значения бит в соответствующих ячейках памяти, можно изменять порядок и количество светящихся строк светодиодов по вертикали. Если на выводах 15-19 МК низкий уровень, можно менять значение уровней сигналов на выводах DD2, обеспечивая порядок и количество светящихся столбцов по горизонтали. По вертикали возможен автореверс, по горизонтали - нет.
Высокий уровень на выводе 13 МК обеспечивает запись значения уровня сигнала, присутствующего в это время на выводе 14 МК. Все значения уровней на выходах Q0-Q5 DD2, которые были перед этим, синхронно сдвинутся на выходы следующих триггеров. Комбинируя управление сочетанием состояния выходов на DD2 и DD3 можно получить различные комбинации свечения светодиодов: одиночно, группами или строками, что зависит только от фантазии и предпочтений разработчика. Бит "0" во всех ячейках памяти может иметь произвольное значение, т.к. не используется.
Взаимодействие сигналов для выполнения последовательной записи лог. "1" и лог. "0" в параллельный регистр DD2 показано на рис. 2.
Переменным резистором R3 можно подобрать желаемую скорость движения рисунка на светодиодной матрице. Скорость смены рисунка можно замедлить в два раза, если в двух ячейках подряд данные не меняют значения на выводах Q0-Q7 DD2 и выводах 15-19 DD3.
Для записи данных в МК можно использовать программатор без электронных компонентов [3], правда, данные необходимо заносить в десятичном виде, что сделано для сокращения программного обеспечения.
Пример кодов данных, которые обычным образом с помощью программатора заносят в память МК, показан в таблице. Эту часть нужно повторить еще 15 раз до заполнения всей памяти или попытаться расширить количество эффектов самостоятельно. Бегущие огни и бегущая тень возможны столбцами и строками.
Устройство питает нестабилизированный блок питания "Электроника Д2-10М", предназначенный для калькуляторов. На рис. 3 показан внешний вид устройства.
Литература
1. В. Мельник. Недокументированные возможности микроконтроллера АТ89С2051//Радиокомпоненты.- 2007.- №1.- С.34.
2. А. Мандель. Динамический рисунок с автореверсом//Радио.- 2007.- №11.- С.59.
3. В. Мельник. Программатор АТ89С2051 для IBM PC//Радиомир.- 2006.- №4.- С.20.