РадиоКот :: Объяснение в любви. Подключаем LCD к микроконтроллеру по 4-х битной шине.
Например TDA7294

РадиоКот >Лаборатория >Цифровые устройства >

Теги статьи: LCDДобавить тег

Объяснение в любви. Подключаем LCD к микроконтроллеру по 4-х битной шине.

Автор:
Опубликовано 02.11.2005

Фотография устройства

AT90S2313 - не лучший мк, к которому нужно подключать такие дисплеи т.к. он имеет мало EEPROM и RAM, но для небольших проектов вполне сойдет. Например, прибор для измерения количества оборотов модельного воздушного винта. Да и портов ввода/вывода явно маловато, поэтому подключать его будем к порту D по параллельному 4-х битному интерфейсу. Зато у мк ATMEL сохраняется совместимость с более старшими моделями, поэтому код для подключения к старшим моделям мк практически не изменится, а при подключении по 8-ми битной шине даже упростится.

Для удобства подключения рекомендую впаять панельку со штырьками. Боясь перегреть дорожки я решил использовать флюс. Припаялось идеально. Но не перестарайтесь. Флюс очищает площадки, растворяя медь и если его вовремя не убрать, то может растворить до конца.


Принципиальная схема
(щелкните по ней для увеличения)
.

Железная часть

Схема собрана на микроконтроллере AT90S2313.

Напряжение питания - 5 вольт от стабилизированного источника. Питание подсветки расчитано на 4 вольта, но при подключении по основной, так сказать, шине на пути своём имеет токоограничивающий резистор. При превышении напряжения сгорит резистор, а не подсветка. Своеобразная защита...

Контроллер, установленный в индикаторе аналогичен HD44780 фирмы Hitachi, что позволяет заменять импортные индикаторы на отечественный аналог. Правда, по этой причине есть одно ограничение, связанное с набором русских символов. Поэтому, если удобное использование русских символов жизненно необходимо, то изучайте дисплеи с контроллерами Epson. В остальном, кодовая таблица контроллера Hitachi соответствует ASCII (Латиница и специальные символы). Есть возможность запрограммировать свои собственные 8 символов, что продемонтрированно в коде прошивки.

При отладке очень пригодились светодиоды на порту B, оставшиеся от светодиодной мигалки.

Мягкая часть

Исходные коды.

Приблизительный список команд инициализации дисплея:

  1. включить питание (ждать 30 мкс)
  2. установить разрядность интерфейса (восьмибитный режим)(0b00000011)(ждать 40 мкс)
  3. установить разрядность интерфейса (восьмибитный режим)(0b00000011)(ждать 40 мкс)
  4. установить разрядность интерфейса (восьмибитный режим)(0b00000011)(ждать 40 мкс)
  5. установить разрядность интерфейса* (восьмибитный режим, здесь происходит переход в четырехбитный режим)(0b00000010)(ждать 40 мкс)
  6. установить разрядность интерфейса (четырехбитный режим)(0b00000010,0b00001000)(ждать 40 мкс)
  7. выключить дисплей (0b00000000,0b00001000)(ждать 40 мкс)
  8. установить направление сдвига курсора и разрешить сдвиг дисплея (0b00000000,0b00000110)(ждать 40 мкс)
  9. включить индикатор и разрешить курсор, установить его тип* (0b00000000,0b00001111)(ждать 40 мкс)
  10. очистить индикатор, курсор домой (0b00000000,0b00000001)(ждать 1500 мкс)

После команд установки разрядности в 4-х битном режиме флаг занятости дисплея проверять нельзя, после всех остальных можно :)


Небольшое пояснение: Первые три команды установки типа интерфейса нужны для ГАРАНТИРОВАННОГО перевода ЖК индикатора в 8-ми битный режим, независимо от его состояния (при включении питания индикатор может оказаться как в 8-ми, так и в 4-х битном режиме). Четвёртой командой индикатор или переводится в 4-х битный режим, или устанавливаются правильные параметры в 8-ми битном режиме. В 4-х битном режиме индикатор начинает правильно работать с 5-й команды, которой и устанавливаются параметры.
Формат посылки: 0b00000000=0bx,A0,R/W,E,DB7,DB6,DB5,DB4.

  • Передача байта начинается установкой битов db7-db4,A0,R/W. Минимальное время предустановки 40 нс. При тактовой частоте 10МГц это занимает один такт.
  • Далее появляется сигнал E. Минимальное время выдержки 230нс. Примерно 4 такта.
  • Длительность цикла м/у фронтами E - 500нс. Итого, ещё 270нс выдерживается до следующего импульса E.
  • Время удержания данных состовляет 10нс.
  • Время выполнения команды смотрите в документации. В среднем выполнение команды занимает 40мкс, кроме команды "очистка, курсор домой" (1500мкс).
А вот так это выглядит на картинке:

Описание команд модуля можно найти в датащите на странице 7, но для ленивых:

Биты C и B в команде "Display ON/OFF control"*:

  • C=0,B=0 - курсора нет, ничего не мигает;
  • C=0,B=1 - курсора нет, мигает весь символ в позиции курсора;
  • C=1,B=0 - курсор есть (подчёркивание), ничего не мигает;
  • C=1,B=1 - курсор есть (подчёркивание) и только он и мигает.

Рекомендации, если ничего не работает

В текстовых ЖКИ "МЭЛТ" есть фича: при любом изменении состояния сигналов A0 или R/W внутренний счётчик полубайтов сбрасывается в состояние приёма старшего полубайта. Поэтому можно дёрнуть любым из этих сигналов (на >100нс), подать команду 28h (если индикатор был в 8-ми разрядном режиме, то пройдут команды 2Fh и 8Fh, что тоже устраивает), (в этот момент индикатор гарантированно будет находиться в 4-х разрядном режиме), потом снова дёрнуть сигналом A0 или R/W (для гарантированного переключения внутреннего счётчика на приём старшего полубайта), после этого подать команду включения индикатора (0Ch) - на экране должно появиться хоть что-нибудь (мусор после включения питания). По крайней мере, должна пойти развёртка - это заметно по изменению контрастности видимого поля по отношению к остальному полю ЖК индикатора.

Если развертка не появилась то, возможно, Вам придется 3 ногу завести на землю. Это управление контрастностью. Хоть в датащите и написано, что переменный резистор управления контрастностью можно не устанавливать, но мой дисплей отказался показывать что-либо без этой манипуляции. Если м/у ногами питания поставить построечный резистор 10-50кОм, а среднюю ногу завести на 3-ю дисплея, то можно регулировать контрастность.

Заглючение

Достаточно функциональный дисплей, хорошо юзабельный, хорошего качества. Сайт производителя: https://melt.aha.ru Группа поддержки работает хорошо, поддерживают оперативно. Спасибо тов. Петухову (наверно из группы поддержки) за оперативную помощь в поиске багов. И конечно же спасибо Сереге за помощь в написании прошивки и (а)моральную поддержку :)

*в датащите на момент написания статьи есть маленькая неточность

by Pa5ha...




Как вам эта статья?

Заработало ли это устройство у вас?

20 2 2
5 0 0

Эти статьи вам тоже могут пригодиться: