Объяснение в любви. Подключаем LCD к микроконтроллеру по 4-х битной шине.
Автор: AT90S2313 - не лучший мк, к которому нужно подключать такие дисплеи т.к. он имеет мало EEPROM и RAM, но для небольших проектов вполне сойдет. Например, прибор для измерения количества оборотов модельного воздушного винта. Да и портов ввода/вывода явно маловато, поэтому подключать его будем к порту D по параллельному 4-х битному интерфейсу. Зато у мк ATMEL сохраняется совместимость с более старшими моделями, поэтому код для подключения к старшим моделям мк практически не изменится, а при подключении по 8-ми битной шине даже упростится. Для удобства подключения рекомендую впаять панельку со штырьками. Боясь перегреть дорожки я решил использовать флюс. Припаялось идеально. Но не перестарайтесь. Флюс очищает площадки, растворяя медь и если его вовремя не убрать, то может растворить до конца. Принципиальная схема (щелкните по ней для увеличения). Железная часть Схема собрана на микроконтроллере AT90S2313. Напряжение питания - 5 вольт от стабилизированного источника. Питание подсветки расчитано на 4 вольта, но при подключении по основной, так сказать, шине на пути своём имеет токоограничивающий резистор. При превышении напряжения сгорит резистор, а не подсветка. Своеобразная защита... Контроллер, установленный в индикаторе аналогичен HD44780 фирмы Hitachi, что позволяет заменять импортные индикаторы на отечественный аналог. Правда, по этой причине есть одно ограничение, связанное с набором русских символов. Поэтому, если удобное использование русских символов жизненно необходимо, то изучайте дисплеи с контроллерами Epson. В остальном, кодовая таблица контроллера Hitachi соответствует ASCII (Латиница и специальные символы). Есть возможность запрограммировать свои собственные 8 символов, что продемонтрированно в коде прошивки. При отладке очень пригодились светодиоды на порту B, оставшиеся от светодиодной мигалки.
Мягкая часть Приблизительный список команд инициализации дисплея:
После команд установки разрядности в 4-х битном режиме флаг занятости дисплея проверять нельзя, после всех остальных можно :)
Небольшое пояснение: Первые три команды установки типа интерфейса нужны для ГАРАНТИРОВАННОГО перевода ЖК индикатора в 8-ми битный режим, независимо от его состояния (при включении питания индикатор может оказаться как в 8-ми, так и в 4-х битном режиме). Четвёртой командой индикатор или переводится в 4-х битный режим, или устанавливаются правильные параметры в 8-ми битном режиме. В 4-х битном режиме индикатор начинает правильно работать с 5-й команды, которой и устанавливаются параметры.
Биты C и B в команде "Display ON/OFF control"*:
Рекомендации, если ничего не работает В текстовых ЖКИ "МЭЛТ" есть фича: при любом изменении состояния сигналов A0 или R/W внутренний счётчик полубайтов сбрасывается в состояние приёма старшего полубайта. Поэтому можно дёрнуть любым из этих сигналов (на >100нс), подать команду 28h (если индикатор был в 8-ми разрядном режиме, то пройдут команды 2Fh и 8Fh, что тоже устраивает), (в этот момент индикатор гарантированно будет находиться в 4-х разрядном режиме), потом снова дёрнуть сигналом A0 или R/W (для гарантированного переключения внутреннего счётчика на приём старшего полубайта), после этого подать команду включения индикатора (0Ch) - на экране должно появиться хоть что-нибудь (мусор после включения питания). По крайней мере, должна пойти развёртка - это заметно по изменению контрастности видимого поля по отношению к остальному полю ЖК индикатора. Если развертка не появилась то, возможно, Вам придется 3 ногу завести на землю. Это управление контрастностью. Хоть в датащите и написано, что переменный резистор управления контрастностью можно не устанавливать, но мой дисплей отказался показывать что-либо без этой манипуляции. Если м/у ногами питания поставить построечный резистор 10-50кОм, а среднюю ногу завести на 3-ю дисплея, то можно регулировать контрастность. Заглючение
Достаточно функциональный дисплей, хорошо юзабельный, хорошего качества. Сайт производителя: https://melt.aha.ru Группа поддержки работает хорошо, поддерживают оперативно. Спасибо тов. Петухову (наверно из группы поддержки) за оперативную помощь в поиске багов. И конечно же спасибо Сереге за помощь в написании прошивки и (а)моральную поддержку :) *в датащите на момент написания статьи есть маленькая неточность by Pa5ha...
Эти статьи вам тоже могут пригодиться: |
|
|||||||||||||||
|
||||