Знакосинтезирующий ЖКИ
Материал из Вики МНТЦ
Рассмотрим подключение знакосинтезирующего ЖКИ к ПМК018 на примере отечественного ЖКИ MT-20S4A-2YLG.
Модуль позволяет отображать 4 строки по 20 символов. Символы отображаются в матрице 5х8 точек. Между символами имеются интервалы шириной в одну точку. Каждому отображаемому символу соответствует его код в ячейке ОЗУ модуля. Можно создать до 8 собственных символов.
ЖКИ имеет два запараллеленных ряда контактов - сверхй и снизу. Для работы с макетной платой припаяем к нему выводы. Производитель не рекомендует припаивать на корпус ЖКИ слишком жесткие выводы и разъемы, чтобы не повредить его механически при установке. Поэтому мы припаяли выводы из тонкого луженого медного провода. Подключим выводы к ПМК, согласно их назначению:
| № | Назначение вывода | Использование в нашем примере |
|---|---|---|
| 1 | Общий вывод (0В) | Соединен зеленым проводком с выводом "-" ПМК018 |
| 2 | Напряжение питания (+5В) | Соединен красным проводком с выводом "+" ПМК018 |
| 3 | Управление контрастностью (-2..+2В) | Соединен оранжевым проводком с выводом "-" ПМК018 |
| 4 | Адресный сигнал — выбор между передачей данных и команд управления | Соединен с выводом "ПД2" ПМК018 |
| 5 | Выбор режима записи или чтения | Соединен с выводом "ПД1" ПМК018 |
| 6 | Разрешение обращений к модулю (а также строб данных) | Соединен с выводом "ПД0" ПМК018 |
| 7 | Шина данных (8-битный режим)(младший бит в 8-битном режиме) | Соединен с выводом "ПБ0" ПМК018 |
| 8 | Шина данных (8-битный режим) | Соединен с выводом "ПБ1" ПМК018 |
| 9 | Шина данных (8-битный режим) | Соединен с выводом "ПБ2" ПМК018 |
| 10 | Шина данных (8-битный режим) | Соединен с выводом "ПБ3" ПМК018 |
| 11 | Шина данных (8- и 4-битные режимы)(младший бит в 4-битном режиме) | Соединен с выводом "ПБ4" ПМК018 |
| 12 | Шина данных (8- и 4-битные режимы) | Соединен с выводом "ПБ5" ПМК018 |
| 13 | Шина данных (8- и 4-битные режимы) | Соединен с выводом "ПБ6" ПМК018 |
| 14 | Шина данных (8- и 4-битные режимы) (старший бит) | Соединен с выводом "ПБ7" ПМК018 |
| 15 | + питания подсветки (+5В) | Не присоединен |
| 16 | – питания подсветки (0В) | Соединен с выводом "1" зеленой перемычкой на плате ЖКИ |
И загрузим в него нижеследующую программу, львиную долю которой составляют указание контроллеру операторами DEFINE что к какой его ножке подключено. И только одна строчка LCDOUT выводит собственно текст.
DEFINE RESET_ORG 800h DEFINE INTERRUPT_ORG 808h Define OSC 48 DEFINE LCD_DREG PORTB 'Порт данных ЖКИ DEFINE LCD_DBIT 0 'Бит с которого начинаются данные DEFINE LCD_RSREG PORTD 'Порт адреса ЖКИ DEFINE LCD_RSBIT 2 'Бит адреса ЖКИ DEFINE LCD_EREG PORTD 'Порт стробировани ЖКИ DEFINE LCD_EBIT 0 'Бит стробирования ЖКИ DEFINE LCD_RWREG PORTD 'Порт выбора режима записи-чтения ЖКИ DEFINE LCD_RWBIT 1 'Бит выбора режима записи-чтения ЖКИ DEFINE LCD_BITS 8 'Разрядность шины ЖКИ DEFINE LCD_LINES 4 'Число строк ЖКИ DEFINE LCD_COMMANDUS 2000 'Время задержки команд в мкс DEFINE LCD_DATAUS 50 'Время задержки данных в мкс LCDOUT $FE,1,"www.mntc.ru" 'Очистка и вывод текста в первую строку
Это был 8-битный режим. Если надо сэкономить выводы микроконтроллера, то замените значения LCD_BITS и LCD_DBIT на 4. Все будет работать точно так же, но без использования выводов ПБ0...ПБ3.
Чтобы задать с микроконтроллера контрастность, соберем резисторный делитель по схеме (а), и в конце программы добавим плавно растущий сигнал ШИМ, идущий на делитель через вывод "ПЦ2" ПМК018.
T VAR BYTE FOR T=0 TO 255 HPWM 1,T,3000 PAUSE 100 NEXT
Теперь текст будет плавно растворяться. Конечно, можно обойтись и без ШИМ, переменным резистором (б) если не надо управлять контрастом с ПМК018.
Чтобы регулировать яркость подсветки дисплея, вернем оранжевый провод на место, а вместо делителя подключим к выходу ШИМ "ПЦ2" базу биполярного транзистора PNP-типа, BC327, который будет коммутировать питание подсветки. Теперь подсветка будет плавно угасать. Конечно, здесь тоже вместо ШИМ можно использовать резисторный делитель напряжения или переменный резистор. Можно и просто подключить вход питания подсветки к +5В. Мы добавили туда 22-омный резистор чтобы напряжение питания на ЖКИ не падало от того, что весь ток уйдет на подсветку (питание шины USB не резиновое!). А ежели не от USB, то можно и без резистора.
Здесь, как и в случае с контрастностью по идее надо поставить на выходе ШИМ сглаживающий RC-фильтр, но я разницы от его присутствия здесь не ощутил.
Надо сказать, что МЭЛТ производит индикаторы с подсветкой разных цветов. Особенно загадочно смотрится красная. И для каждого цвета есть индикаторы с инверсным отображением, т.е. светящиеся пиксели на черном фоне, что еще более красиво. Отечественные индикаторы хороши тем, что имеют возможность вывода русских букв, только их надо писать в программе не текстом, а в шестнадцатеричных кодах. К счастью, есть онлайн-конвертер, преобразующий русский текст в коды, которые достаточно просто скопировать.
Заменим в программе "www.mntc.ru" на сгенерированные конвертером $4D,$48,$54,$E1 (без кавычек). Вот результат:
А как же использовать остальные строки? Заменим выводящую на экран строку следующими строками:
LCDOUT $FE, 1,$4D,$6F,$BB,$6F,$E3,$65,$B6,$BD,$C3,$B9 LCDOUT $FE, $C0, $48,$61,$79,$C0,$BD,$6F,$20,$2D LCDOUT $FE, $94, $54,$65,$78,$BD,$B8,$C0,$65,$63,$BA,$B8,$B9 LCDOUT $FE, $D4, $E1,$65,$BD,$BF,$70
Дело в том, что ключевой байт $FE - это указание ЖКИ на то что после него будет не символ, а какая-то команда. Команда "1", которую мы использовали, сами того не зная, очищает дисплей и устанавливает курсор на начало первой строки. Другие команды из последнего примера устанавливают курсор на начало второй, третьей и четвертой строк. А вообще есть еще много команд, которые описаны в руководстве по языку PICBasicPro.







