Модуль индикации для микроконтроллеров
Техническое решение защищено патентом РФ №2390048 на изобретение
Возможности:
• двухпроводный последовательный интерфейс;
• 10-и разрядный 7-и сегментный ЖКИ-модуль МТ-10Т7/8/9;
• клавиатура — 4х1
— работа по прерыванию
— маскирование кнопок
• канал звуковой индикации;
Модуль (рис.1) имеет двухпроводный последовательный интерфейс передачи данных. Линия SD (Serial Data) двунаправленная, используется для передачи данных от микроконтроллера к модулю, чтения состояния клавиатурной матрицы, выбора режима записи (адрес/данные) в ЖКИ и управления ключом динамика. По линии CLK микроконтроллером передаются синхроимпульсы.
Состав: сдвиговый регистр (DD1), коммутатор кнопок (DD2), ключ выхода (Q1), ЖКИ-модуль, ключ динамика (Q2), интегрирующая цепь-D1,R1,C1.
Каждый бит входной последовательности (рис.2) данных на SD тактируется передним фронтом импульса синхронизации, по которому производится запись и сдвиг информации в регистре. Высокий уровень на CLK открывает ключ Q1 и замыкает выход коммутатора на шину SD. Это время используется для чтения состояния адресуемого канала портом микроконтроллера, сконфигурированного как вход. Сканирование кнопок осуществляется «бегущей 1».
Запись в ЖКИ производится занесением в сдвиговый регистр 4-х бит информации, установкой/сбросом линии SD (данные/адрес) и очисткой CLK на время формирования низкого уровня на входе WRL ЖКИ. При указанных на схеме номиналах на это требуется 12-14 мкС. По истечении защитного интервала рекомендуется установить высокий уровень на CLK, защелкнув тем самым данные в регистре ЖКИ.
Описанные процедуры позволяют организовать три независимых режима работы:
— сканирование кнопок (высокий уровень на CLK по завершении операции);
— запись данных в ЖКИ (низкий уровень на CLK на время защитного интервала);
— формирование звукового сигнала.
Режим прерывания от клавиатуры.
Запись в младшие разряды сдвигового регистра 1111 и установка высокого уровня на CLK позволяет определить активность клавиатуры по низкому уровню на SD. Запись 0 в соответствующий разряд регистра заблокирует выбранную кнопку. Код 0000 в регистре запрещает какую либо активность клавиатуры и позволяет без помех формировать звуковой сигнал. Использовать для этой цели сброс линии CLK не рекомендуется, т.к. неизбежна запись в ЖКИ случайной информации.
Практическое применение.
Приведенная схема ориентирована на работу с MCS-51 совместимыми микроконтроллерами, но модуль универсален и позволяет работать с любым семейством. При применении микроконтроллеров AVR рекомендуется увеличить номинал R2 до 20K. В приложениях, критичных по времени исполнения или активно использующих прерывания, записью в ЖКИ можно управлять отдельным портом микроконтроллера по резервной линии WR. В этом случае детали интегрирующей цепи не требуются.
Программная поддержка микроконтроллеров MCS-51:
Программная поддержка микроконтроллеров AVR:
Недостатки.
Взаимозависимость аппаратных и программных средств при записи в ЖКИ, использование нерекомендованых изготовителем режимов, безусловно, не достоинство описанного решения, но его экономичность — не недостаток.
Преимущества.
Обновление дисплея довольно редкая процедура, а при работе по прерываниям нет необходимости циклически опрашивать клавиатуру, поэтому основная программа имеет резерв времени. Применение модуля позволяет во многих случаях использовать микроконтроллеры с малым количеством портов ввода-вывода, что иногда может оказаться полезным даже с экономической точки зрения. Наличие свободных разрядов регистра сдвига расширяет возможности микроконтроллера по управлению дополнительными устройствами. Модуль изначально проектировался как удаленный терминал, поэтому способен работать с местным питанием при значительной (более 10 м) длине интерфейса. Применение витых пар рекомендуется.
Испытания.
Модуль специально испытывался в составе Генератора прямоугольных импульсов на основе AVR Ридико Леонида Ивановича [1]. Главным критерием служила работа микроконтроллера на пределе возможностей быстродействия. Исходный текст программы позволил без проблем интегрировать описанный модуль. Объем исполняемого кода даже уменьшился. Сбои в индикации наблюдались только при включении питания с предустановкой предельно малого периода следования импульсов. Работа генератора в области малых значений периода и длительностей имеет, увы, звуковое сопровождение, не предусмотренное авторами. В остальном замечаний нет.
Варианты.
Для некоторых применений может оказаться полезным повышенная нагрузочная способность выходов регистра. Для этого случая — 74HC164. Возможна замена 4094 на 4015 (К561ИР2). На месте DD2 работают К176, К561КТ1/КТ3. Подтягивающие резисторы применяются по необходимости, но особое внимание токам, протекающим через контакты кнопок. Для приложений, где наличие четырех кнопок излишне, схема упрощается (Рис.3) Читатель может самостоятельно разработать еще более простую схему для прибора, где и три кнопки — много.
В ряде особых случаев вместо 4066 используются 4051/52/53, но их применение потребует дополнительно инвертор. Давно снятые с производства отечественные КР590КН6/3 имеют неинвертирующий вход разрешения (в отличие от 4051/52/53) и схема (рис.4) получается наиболее простой. Ключ Q1 на полевом транзисторе уже не нужен. Программная составляющая изменяется незначительно. Модуль с КР590КН3/6 имеет достоинства и недостатки, главным из которых автор считает невозможным сохранить работу клавиатуры по прерываниям.
Описанная выше реализация имеет значительные потенциальные возможности по превращению модуля в стандартное универсальное устройство ввода-вывода микроконтроллерных систем, поскольку позволяет использовать любые ЖКИ-модули с 4/8 бит параллельной шиной данных.
Ссылки:
1. Редико Л.И. Генератор прямоугольных импульсов на основе AVR.
200308-5