Реклама на сайте | Помощь сайту   English version | Datasheets 
KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Использование графического ЖКИ МТ-12864А

Использование графического ЖКИ МТ-12864А



Раздел: Периферия к МК

В предлагаемой статье автор разработал демонстрационную программу для микроконтроллера PIC16F877A, показывающую возможности графического ЖКИ и способы формирования изображений.

Получающие сегодня все большее распространение графические ЖКИ с встроенными контроллерами, совместимыми с KS0108, значительно превосходят своих цифровых (с контроллерами НТ1611, НТ1613) и буквенно-цифровых (с контроллерами HD44780) собратьев. На них можно формировать произвольные монохромные изображения, не состоящие из хранящихся в ПЗУ контроллера образцов букв, цифр и некоторых вспомогательных символов. К тому же фрагменты формируемых изображений не привязаны к определенным "знакоместам", их можно располагать на экране произвольным образом и перемещать по нему. Такие ЖКИ сегодня доступны и сравнительно недороги. 

Однако вместе с расширением возможностей индикатора стало сложнее управлять им. Рассмотрим основные особенности и правила использования графического ЖКИ на примере прибора МТ-12864А отечественной фирмы МЭЛТ. Его табло состоит из 128x64 элементов изображения и имеет встроенную подсветку. Назначение выводов ЖКИ МТ-12864А приведено в табл. 1.

 


Кратковременной подачей низкого уровня на вход RES ЖКИ приводят в исходное состояние. В режиме записи (низкий уровень на входе RD/WR) в индикатор по шине данных поступают от внешнего управляющего устройства команды и информация для занесения во внутреннее ОЗУ и последующего вывода на табло. В режиме чтения (высокий уровень на входе RD/WR) индикатор выводит на шину данных информацию, хранящуюся в ОЗУ, или сведения о своем состоянии. Сигналом записи (чтения) служит смена высокого уровня низким на входе Е.

Напряжение питания, подаваемое на вывод VCC, обычно 5 В, но существуют модификации ЖКИ рассматриваемого типа, работоспособные и при напряжении 3 В. На выводе VEE встроенный в индикатор преобразователь формирует напряжение отрицательной полярности, необходимое для работы ЖК табло. Этот вывод обычно соединяют с выводом V0 через переменный или подстроечный резистор сопротивлением 10...22 кОм, которым регулируют контрастность изображения. 

Индикатор оснащен двумя контроллерами КБ1013ВГ6, аналогичными используемым в зарубежных изделиях KS0108. Любая операция ввода/вывода выполняется с тем из контроллеров (далее называемых кристаллами), который в данный момент выбран высоким уровнем на входе Е1 или Е2. Каждый кристалл обслуживает свою половину табло размерами 64x64 элемента изображения: первый (выбираемый сигналом Е1) — левую, второй (выбираемый сигналом Е2) — правую. ОЗУ кристалла организовано как массив из восьми страниц с адресами 0—7, по 64 восьмиразрядных ячейки (байта) каждая. В табл. 2 показано соответствие между адресами страницы и байта ОЗУ, номером разряда байта и координатами отображаемых на табло элементов (по горизонтали — слева направо, по вертикали — сверху вниз).

 

Лог. 1 в разряде байта отображается на табло темным элементом, лог. 0 — светлым. Например, чтобы "нарисовать" темную букву М на светлом фоне, в ОЗУ следует записать последовательность байтов 7FH, 02Н, 04Н, 08Н, 04Н, 02Н, 7FH. Позицию, в которую будет записан первый байт последовательности (номер страницы и адрес байта на ней), предварительно указывают специальными командами. После записи каждого байта адрес автоматически инкрементируется (увеличивается на 1) по кругу, за 3FH следует 0. Аналогичный инкремент происходит и при чтении байта из ОЗУ. Все исполняемые ЖКИ МТ-12864 команды представлены в табл. 3.

Прежде чем начинать работу с ЖКИ, микроконтроллер должен его инициализировать. Это можно сделать несколькими способами.

  1. На выводе RES на время не менее 1 мкс устанавливают низкий уровень. Затем подают команду "Display ON", после чего выдерживают паузу не менее 10 мкс.
  2. На выводе RES постоянно установлен высокий уровень (он соединен с выводом VCC). Подают команду "Display OFF", за ней не менее чем через 1 мкс — команду "Display ON", после чего выдерживают паузу не менее 10 мкс. 
    При необходимости можно с помощью команды "Status Read" вызвать на шину данных содержимое регистра состояния ЖКИ и вместо выдерживания заданных пауз дожидаться, пока состояние его разрядов RESET и BUSY не станет нулевым. Обычно это позволяет немного сократить расход времени на инициализацию.


Последовательность команд, подаваемых при инициализации ЖКИ вторым способом и дальнейшей записи отображаемой информации на одну страницу ОЗУ одного контроллера, представлена в табл. 4. Однако если нужно изобразить на экране, например, вертикальную или наклонную линию, пересекающую несколько страниц ОЗУ, при переходе на каждую страницу требуется подавать команды "Set Page" с адресом новой страницы и "Set Address” с адресом первого записываемого на ней байта.

ЖКИ рассматриваемого типа позволяет плавно сдвигать изображение на табло по вертикали. Для этого предусмотрена команда "Display START Line". Она устанавливает соответствие между номерами рядов элементов изображения в ОЗУ и на табло. В самом верхнем ряду на табло будет отображена информация из ряда разрядов ОЗУ (см. табл. 2), номер которого указан в команде. Он может лежать в пределах от 0 (ряд разрядов DB0 нулевой страницы) до 63 (ряд разрядов DB7 седьмой страницы). Это расширяет возможности применения индикатора. 
При некоторых условиях можно получить на табло "третий цвет" некоторых элементов. Для этого нужно включать и выключать эти элементы с достаточно высокой частотой, чтобы глаз не заметил мерцания. В результате они будут казаться серыми — менее контрастными, чем остальные. Практика показывает, что период "коммутации" таких элементов не должен превышать 40 мс.

 


Рассмотрим демонстрационную программу 12864.asm, которая позволяет вывести изображение на ЖКИ МТ-12864А, соединенный с микроконтроллером PIC16F877 по схеме, показанной на рис. 1. К микроконтроллеру также подключен по стандартной схеме кварцевый резонатор на 4 МГц. Выбор именно этого микроконтроллера обусловлен наличием у него достаточного для обслуживания графического ЖКИ числа выводов с запасом на подключение в дальнейшем других периферийных устройств. Кроме того, объем его ОЗУ (8 Кбайт) позволяет формировать и хранить в нем даже несколько изображений размерами 128x64 элемента.

Сигналы, подаваемые на ЖКИ, распределены по разрядам портов микроконтроллера в соответствии с табл. 5. Поскольку чтение из ЖКИ в программе не предполагается, сигнал RD/WR имеет постоянно низкий уровень и его вход соединен с общим проводом.

 

 

Программа написана на языке входящего в состав пакета MPLAB ассемблера MASM — самого распространенного для микроконтроллеров фирмы Microchip. Разобравшись в ней, можно решать более сложные задачи и с успехом использовать отдельные фрагменты в своих программах. Не составит труда и переход на микроконтроллер другого типа. 

Работа программы начинается, как обычно, с инициализации микроконтроллера: задаются нужные режимы работы его внутренних узлов и линий ввода/вывода. Затем, как показано в табл. 6, инициализируется ЖКИ. Выбран второй из описанных выше способов, как не требующий управления уровнем на входе RES и не занимающий для этого линию порта. Для записи команд в ЖКИ вызывается подпрограмма strobe (табл. 7). Она формирует импульс высокого логического уровня на входе Е. Собственно запись происходит в момент смены высокого уровня низким Программисту следует позаботиться о том, чтобы во время работы подпрограммы strobe на входе АО ЖКИ был установлен соответствующий уровень: низкий — для записи в регистр команд, высокий — для записи в ячейку ОЗУ. Поэтому подпрограмма записи выведенного в порт D байта данных в ОЗУ выглядит, как показано в табл. 8. Обратите внимание, что прежде чем завершить свою работу, она устанавливает на входе АО ЖКИ низкий уровень. В результате управления этим уровнем при записи команд, как правило, не требуется.

 


Остальные "служебные" подпрограммы (выбор контроллера, страницы, столбца) не рассматриваются, так как они очень просты и снабжены в тексте программы подробным комментарием.

Для того чтобы вывести изображение на табло ЖКИ, необходимо, прежде всего, преобразовать нарисованную на бумаге или на экране "картинку" в последовательность байтов, загружаемых в ОЗУ двух контроллеров. Можно, конечно, подготовить данные вручную, записывая 1 на месте каждого темного элемента и 0 на месте каждого светлого. Но значительно удобнее воспользоваться специальной компьютерной программой. Из полученных для каждой страницы каждого ОЗУ массивов байтов в памяти микроконтроллера должны быть сформированы таблицы. Загрузку этих данных в ОЗУ ЖКИ для вывода на табло целесообразно выполнять постранично. 

Фрагмент программы, приведенный в табл. 9, заполняет первую страницу ОЗУ одного контроллера, который должен быть предварительно выбран высоким уровнем на соответствующем входе ЖКИ (Е1 или Е2). Вызываемая в этом фрагменте подпрограмма ТЕХТ_1 (табл. 10) считывает байты из таблицы ctpa_1. Таблица создана с помощью директив ассемблера dt. Такая директива формирует из перечисленных вслед за ней констант последовательность операторов возврата из подпрограммы со значением константы в рабочем регистре. Число констант, следующих за одной директивой, ограничено лишь длиной строки и удобочитаемостью программы. В данном случае 64 константы распределены по четырем строкам.

Подпрограмма ТЕХТ1 находит в памяти микроконтроллера команду возврата со значением заданного байта и выполняет ее. Цикл повторяется необходимые для заполнения страницы ОЗУ 64 раза. После первой аналогичным образом заполняются все остальные страницы. В результате выполнения всей программы индикатор принимает вид, показанный на рис. 2. Нарисован спектр AM сигнала.

 


Напоминаю, что это учебная программа. Для усвоения порядка вывода данных и получения нужного изображения она сделана как можно более простой и наглядной. Совершенствуя ее, можно, например, периодически загружать на страницы 5—7 ОЗУ ЖКИ новые данные, причем не только хранящиеся в ПЗУ, но и получаемые через UART микроконтроллера. В результате спектр "оживет".

Можно изображать различные шкалы, выводить графики всевозможных зависимостей. Развернув индикатор на 90°, можно выводить изображения и надписи в более привычной для пользователя "портретной" ориентации. Все зависит от конкретной задачи и фантазии программиста. В архиве по этой ссылке - исходный код и прошивка микроконтроллера PIC16F877A.


Источник: Радио 2009 №6
Коллега попросил бритье опасной бритвой на Таганке. || zavesa-online.ru морозостойкая пленка пвх
 © 2003—2017 «Электронный портал»Обр@тная связь