Универсальная двухпроводная схема подключения ЖКИ с матрицей кнопок и звуковым каналом©

Universal two-wire LCD interface with matrix buttons and audio channel

11_mtПредложена простая схема [рис.1], которая позволяет подключать любые ЖК индикаторы на базе контроллера HD44470 с параллельной шиной управления в 4- и 8-битовых режимах. Сегментные (МТ-10Т7/8/9) и знакосинтезирующие (МТ-08S, MT-10S, MT-12S, MT-16S, MT-20S) производства ООО «МЭЛТ» и любые зарубежные LCD160x подключаются одинаково. Вместо чтения сигнала готовности используется временная задержка для выполнения индикатором операции записи во внутренние регистры.

Технические решения, положенные в основу разработки, защищены патентами РФ №2390048, №2547217 на изобретение, они будут рассмотрены подробно. Подразумевается, что читатель представляет себе принципы управления ЖКИ и последовательной передачи данных.

Выбор команды или данных при записи в регистр индикатора осуществляется логическим уровнем, подаваемым на сигнальный вход A0. При «0» информационное слово на шине данных интерпретируется контроллером как команда, при «1» — как данные. В предлагаемой схеме этот выбор производится установкой/сбросом линии последовательных данных SD интерфейса сразу после окончания записи в сдвиговый регистр [Рис.2]. Этим завершается подготовка на шине индикатора управляющего слова. Остается, согласно техдокументации на прибор, подать импульс на вход разрешения записи (E), который формируется цепью VD1,R2,C2. Любой импульс на линии CLK заряжает конденсатор C2. Таким образом, с началом записи в сдвиговый регистр, устанавливается высокий уровень на входе разрешения индикатора (в согласии с документацией) и поддерживается в течение всего цикла. По завершению последнего тактового импульса, в текущем обращении, конденсатор начинает разряжаться через R2. При достижении напряжением половины напряжения питания, информация защелкивается в регистре драйвера индикатора (не соответствует документации на индикатор, но в согласии с физикой работы полупроводниковых приборов). Этот алгоритм надежно работает, когда высокий уровень на  входе разрешения установлен до начала изменения данных на шине индикатора. Поэтому логика программы формирует тактовых импульсов на один больше, чем требуется (только для знакосинтезирующих дисплеев). Самый первый из них информационно пуст, но именно он «взводит» разрешение. Учитывая минимальное время выполнения операции логикой индикатора с контроллером HD44780 (40мкС), время разряда конденсатора до порогового уровня (~14-20мкС) не сильно уменьшает общее быстродействие. Для примера, время опроса 4-х кнопок и записи байта в 8-и битовом режиме, при тактовой частоте МК 8МГц, составляет всего 34мкС. Байт, в 4-битовом режиме, пишется за 88мкС. Это время включает и сканирование состояния кнопок. Для семисегментных MT-10T7/8/9 программная часть чуть проще, сканирование и вывод 10-и знаков на индикатор занимает около 650uS (Fosc=8МГц).

23_mt

Предлагаемое решение имеет существенный недостаток. Поскольку временной интервал записи в регистры ЖКИ формируется с помощью (аналоговой) цепи R2C2, схема становится критичной к частоте тактирования управляющего контроллера. Компенсация этой зависимости предусмотрена для индикаторов типа MT-10. В программе необходимо выбрать константу Dly_wr, соответствующую диапазону частоты. Работоспособность схемы не проверялась на частотах ниже 4-х и выше 20MHz, однако на низких частотах, теоретически, не существует ограничений. Знакосинтезирующие индикаторы MT проверялись на частоте микроконтроллера 8МГц. Другие частоты потребуют коррекции программных задержек. Все испытания проводились с микроконтроллерами ATTINY (13,24,25,261).

Кроме управления индикаторным модулем, описываемое схемное решение позволяет генерировать звуковые сигналы, но с некоторыми ограничениями. Канал звука содержит n-канальный MOSFET транзистор и «пищалку». Обновление данных в индикаторе и звуковые сигналы близки по спектру, поэтому для каждого конкретного устройства, где планируется применить это решение, требуется выбрать номинал конденсатора C4 для максимального подавления сигнала с частотой передачи данных по шине, но слабые щелчки в моменты обращения к индикатору могут быть все же слышны. Учитывая небольшие затраты на канал звука и преимущества, которые он предоставляет в информационном плане, с этими недостатками можно мириться.

В состав модуля дополнительно включена схема сканирования матрицы кнопок. Подпрограмма опроса организует «бегущую единицу» на выходах регистра сдвига, которая поочередно открывает ключи аналогового коммутатора, к которым, в свою очередь, подключены кнопки. Состояние шины SD интерфейса, во время логической «1» на шине CLK, считывается микроконтроллером. Емкость шины SD, заряженная до 5В при подготовке опроса, разряжается, если кнопка нажата. Нажимать можно по одной и группами, логика программы формирует позиционный код независимо для каждой кнопки. Демонстрационная программа для индикаторов МТ-10 выводит скан-код в первую позицию, сопровождая любое нажатие коротким звуковым сигналом. Демка для знакосинтезирующих показывает код на дисплее, замещая текущие символы по мере их появления. При необходимости, количество кнопок можно удвоить, если добавить второй коммутатор.

Еще одним неудобством является необходимость обновления индикатора при сканировании кнопок. Завершение опроса формирует импульс записи в индикатор и может испортить записанные ранее данные. Для MT-10 эта проблема легко обходится. Достаточно после вызова ПП Scanm, провести запись адреса (любого). Это две-три машинных команды. Время, вместе со сканированием кнопок, всего около 36 мкС.. Знакосинтезирующим дисплеям достаточно подать команду установки адреса DDRAM. В демонстрационной программе для MT-16 период опроса и обновления содержимого памяти индикатора выбран порядка 300 мС и неудобств в пользовании кнопками нет.

Демонстрационные программы для семисегментных индикаторов MT-10T7/8/9 и знакосинтезирующих MT-XX при работе в 4-х и 8-и битовых режимах написаны на языке ассемблера для микроконтроллеров фирмы ATMEL серии TINY и компилировались конкретно для tiny2313. Демки демонстрируют только возможности управления индикаторами, сервис кнопок и звукового канала по последовательному двухпроводному интерфейсу. Автор предпочитает называть его DDI — The interface of distant devices (интерфейс удаленных устройств). Исходный текст легко перекомпилировать на любой микроконтроллер ATMEL, т.к. таймеры, прерывания и специальные возможности не используются. Достаточно «голого» микроконтроллера, к двум портам которого подключена приведенная схема сопряжения. Объем кода, отвечающий непосредственно за обслуживание индикатора получился чрезвычайно компактным и не будет помехой даже при реализации на МК с малой памятью. Вот, что записано в комментариях к самой первой рабочей программе для знакосинтезирующих (она была, сами понимаете, без излишеств): init+service+dly  (24+38+14)=76byte. С тех пор код маленько вырос, но в две сотни байт, даже со звуком, уложится. Прошивка демы «тянет» 250 байт для MT-10Tx, а там перекодировка, в отличие от MT-16. Правда, у последних свои особенности.

pic_73_a

Несколько комментарий к осцилограммам. Первая (73_a) иллюстрирует процесс с ЖКИ MT-10T. Первые четыре фронта CLK это запись «1» в младший разряд сдвигового регистра («бегущая 1»). Следующие четыре импульса CLK это сдвиг единицы и чтение состояния кнопок. Обратите внимание на спад вершин импульсов шины SD, они скошены. Это порт микроконтроллера переключен на вход. Кнопки отпущены, читается их инверсное значение. Код нажатия 0000. Потом переход к программе записи информации и занесение нулевого адреса в адресный регистр (SD=A0). Далее (CLK=0) формируется спадающий фронт разрешения записи. Центральная вертикальная линия на половине напряжения питания. Момент фиксации. Следом идет запись первого полубайта в регистр данных индикатора.

62_6

На второй картинке (62_6) полный цикл обновления данных. 20 полубайт с SD=1 (A0). Состояние кнопок в регистре (sc_key), индикатор обновлен.

67_b

Третья (67_b) относится к знакосинтезирующим индикаторам в байтовом режиме. Вес нажатой кнопки 4. В сдвиговый регистр выводится код символа, по завершению устанавливается SD для указания индикатору, что на шине — данные. Полубайтовый режим не имеет отличий в осцилограммах (кроме 4-х импульсов вместо 8-и), поэтому не приводится.

Интересное наблюдение (см. 67_b)… Разрешение записи на индикатор подано, на A0 (SD) и шине данных изменяется информация, т.к. идет непрерывная запись в сдвиговый регистр, а на экран будет выведен нужный символ, код которого содержится в последних 8 битах, записанных в регистр. Информация в индикаторе сохранится только та, которая находится на шине индикатора в момент спада импульса разрешения. Представленное схемное решение позволяет делать то, что описано в данной статье, напоминая нам известную притчу про гланды. Кстати, это было рабочее название статьи, а пациент жив и доволен.

180317_4

Уникальность текста: 100.0%

Файлы:

1. Скачать файлы проекта mts

Comments are closed.