Подключение графического модуля Hantronix 320×240 к 8-разрядному микроконтроллер

Введение:


Так как модули графических жидкокристаллических дисплеев (ЖКД) имеют тонкий профиль, лёгкий вес, низкое потребление мощности и лёгкое управление, они получили широкое применение в различных приложениях. ЖКД 320×240 (1/4 VGA) очень популярны в различных вычислительных системах. По этой причине контроллер не включается в состав модуля.

Неплохим выбором контроллера, с встроенным 8-разрядным микроконтроллером и контроллером ЖКД, может стать Epson/S-MOS SED1335 или OKI MSM6255/6355. Некоторые встроенные микроконтроллеры, такие как National NS486SXF, имеют ЖКД контроллеры и прямой доступ к дисплею.

Пример приведённый здесь основан на микроконтроллере Phillips 87C751, управляющим контроллером Epson/S-MOS SED1335.

Функциональное описание:


Серия дисплеев Hantronix 320×240 имеет стандартный промышленный 4-разрядный интерфейс. Этому интерфейсу необходим контроллер для непрерывного обновления изображения и для поддержания RAM видео дисплея.

Перед тем как микроконтроллер сможет использовать дисплей, требуется послать серию инициализирующих байтов в котроллер ЖКД, для установки рабочих параметров и описания изображения в контроллере.

После инициализации приложения микроконтроллер может отправить текстовые или графические данные в контроллер ЖКД, где они будут отформатированы и сохранены в RAM дисплея. Одновременно с обновлениями RAM, контроллер ЖКД непрерывно читает данные из RAM дисплея, упорядочая их и посылая дисплею. Применяемый микроконтроллер не имеет прямого доступа к RAM дисплея и должен посылать все данные и команды в контроллер ЖКД.

Схемотехническое описание:


В этом примере микропроцессор 87C751 присоединяется к контроллеру ЖКД через параллельные порты I/O. Он может также быть подключён к шине данных процессора и отображаться в область памяти данных процессора. См. рисунок 1.

 

Рисунок 1.

Программное обеспечение:


Приведённый ниже пример программы, написан на ассемблерном коде 8051 и разработан для работы с устройством изображённом на рисунке 1. Программа вначале посылает серию командных байтов, следующих за соответствующими параметрами в контроллер ЖКД для его инициализации. Контроллер инициализируется одной текстовой страницей расположенной в памяти 0000h-04AFh и одной графической страницей 4B0h-2A2h. Это подразумевает 1200 текстовых символов расположенных как 30 строк по 40 символов каждая. Размер графической страницы 9600 байт содержащие данные всего экрана. Режим отображения устанавливается с обоими экранами и текстовым наложением на графику по схеме ИСКЛЮЧАЮЩЕЕ ИЛИ.

Текстовая область памяти затем очищается сохранением 20h, символ пробела, во всех 1200 положениях. Графическая страница затем заполняется образом дерева бонсай. Затем отображаются 4 строки текста.

Пример программы написан не эффективно, зато как можно проще.

Программная блок-схема:


 

Инициализация:


Перед тем как принять или отобразить данные или текст ЖКД контроллер должен быть проинициализирован. Обычно это делается непосредственно после включения системы. Следующая схема показывает команды инициализации и параметры, которые сопровождаются кратким описанием каждой функции.

Байты инициализации:

Команда Код Параметр Функция
SYSTEM SET 40h 30h Аппаратная установка ЖКД панели
87h Ширина символа [7] в пикселах
07h Высота символа [7] в пикселах
27h Адресный диапазон дял 1 текстовой строки
39h Длина строки в символах [40-1=39]
EFh Количество строк на кадр [240]
28h Горизонтальный адресный диапазон (текстовый) [40]
0
SCROLL 44h 0 Устанавливает начальный адрес прокрутки
0 и количество строк на прокручиваемый блок
EFh
B0h
04h
EFh
0
0
0
0
CURSOR FORM 5Dh 04h Форма и размер курсора
[блок, ширина 4 пиксела, высота 6 пикселов]
86h
CURSOR DIRECTION 4Ch Направление курсора в режиме автоматической записи
HORIZONTAL SCROLL RATE 5Ah 00h Скорость горизонтальной прокрутки,
[1] пиксел за один раз
OVERLAY 5Bh 01h Режим наложения текст/графика (ИСКЛЮЧАЮЩЕЕ ИЛИ)
DISPLAY ON/OFF 59h 16h Включение.выключение дисплея [Включено]

Отображаемый образ:


Программа:

$MOD751

;**************************************************
;* *
;* HDM3224 Приложение V1.0 *
;* *
;**************************************************

; Частота тактовых импульсов процессора 16 МГц.
; Время цикла .750 мс.
; Демонстрационная программа изображения дерева бонсай
; битовая карта изображения дерева и 4 линии
; текста на ЖКД 320 ґ 240.

org 00h
ljmp start ; начало программы

org 100h

; Инициализация 32241
; Текстовая страница 0000h 04Afh
; Графическая страница 04B0h 2A2Fh

start:
mov r1,#40h ; установка системы
lcall comm32
mov dptr,#msg1 ; параметр установки системы
lcall data32
mov r1,#44h ; прокрутка
lcall comm32
mov dptr,#msg2 ; параметр прокрутки
lcall data32
mov r1,#5Dh ; форма курсора
lcall comm32
mov dptr,#msg3 ; параметр курсора
lcall data32
mov r1,#4Ch ; направление курсора
lcall comm32
mov dptr,#5Ah ; прокрутка по точкам
lcall comm32
mov r1,#msg18 ; параметр прокрутки по точкам
lcall data32
mov dptr,#5Bh ; наложение
lcall comm32
mov dptr,#msg4 ; параметр наложения
lcall data32
mov r1,#59h ; включение/выключение дисплея
lcall comm32
mov dptr,#msg5 ; параметр дисплея
lcall data32

; очистка текстовой страницы
lcall clrtext

; битовая карта изображения
mov r1,#46h ; установка курсора
lcall comm32
mov dptr,#msg6
lcall data32
mov r1,#42h ; запись в память
lcall comm32
mov dptr,#msg12
lcall data32

; отображение текста
mov r1,#46h ; установка курсора
lcall comm32
mov dptr,#msg7
lcall data32
mov r1,#42h ; запись в память
lcall comm32
mov dptr,#msg14
lcall data32
mov r1,#46h ; установка курсора
lcall comm32
mov dptr,#msg8
lcall data32
mov r1,#42h ; запись в память
lcall comm32
mov dptr,#msg15
lcall data32
mov r1,#46h ; установка курсора
lcall comm32
mov dptr,#msg9
lcall data32
mov r1,#42h ; запись в память
lcall comm32
mov dptr,#msg16
lcall data32
mov r1,#46h ; установка курсора
lcall comm32
mov dptr,#msg10
lcall data32
mov r1,#46h ; запись в память
lcall comm32
mov dptr,#msg17
lcall data32
sjmp $ ; стоп

;*************************************************
; Подпрограммы

; comm32 посылает байт в R1 в
; 32241 как команда

comm32:
setb p3.2 ; a0=1=команда
comm321:
mov a, r1 ; послать байт данных
mov p1, a
clr p3.0 ; CS — строб
clr p3.1 ; дисплея
setb p3.1
setb p3.0
ret

write32:
clr p3.2 ;a0=0=данные
sjmp comm321

; data32 посылает сообщение указанное в
; DPTR в 32241.

data32:
clr a ; отправить байт
movc a, @a+dptr
cjne a, #0a1h, data321 ; сделано?
ret

data321:
mov r1, a
lcall write32 ; отправить
inc dptr
sjmp data32 ; следующий байт

; Очистить текстовую RAM на 3224
clrtext:
mov r1, #46h ; установить курсор
lcall comm32
mov dptr, #msg13 ; параметр курсора
lcall data32
mov r1, #42h ; запись в память
lcall comm32
mov dptr, #msg11 ; все пробелы
lcall data32
mov r1, #46h ; установить курсор
lcall comm32
mov dptr, #msg6
lcall data32
ret

;************************************************
; Таблицы и данные

; Инициализация параметров для 3224.

msg1:
db 30h, 87h, 07h, 27h ;установка системы
db 39h, 0EFh, 28h, 0h, 0A1h

msg2:
db 0, 0, 0EFh, 0B0h ;прокрутка
db 04h, 0EFh, 0, 0
db 0, 0, 0A1h

msg3:
db 04h, 86h, 0A1h ; форма курсора

msg4:
db 01h, 0A1h ; параметр наложения

msg5:
db 16h, 0A1h ; включение/выключение дисплея

msg6:
db 0B0h, 04h, 0A1h ; установка курсора на
; графическую страницу
msg7:
db 31h, 2h, 0A1h ; установка курсора на
; текстовую страницу
; первая строка

msg8:
db 59h, 2, 0A1h ; вторая строка

msg9:
db 81h, 2, 0A1h ; третья строка

msg10:
db 0A9h, 2, 0A1h ; четвёртая строка

; 1200 пробелов для очистки текстовой страницы
; Следующая таблица не приведена
; здесь, исключая первые 8 байт,
; она состоит из 1200 байтов
; каждый из которых 20h

msg11:
db ‘ ‘
db 01Ah

; Графика 320×240 дерево бонсай
; Следующая таблица не приведена
; здесь. Она состоит из 9600 байтов
; которые охватывают весь экран
; битовой картой изображения дерева бонсай.
; Вы можете добавить несколько байтов перед
; 01Ah конечным байтом с целью тестирования
; или включения полного битового образа

msg12:
db 01Ah

msg13:
db 0, 0, 01Ah ; установка курсора
;на текстовую страницу

msg14:
db ‘HANTRONIX’
db 0A1h

msg15:
db ‘Crystal Clearand’
db 0A1h

msg16:
db ‘Visibly Superior’
db 0A1h

msg17:
db ‘LCD Modules’
db 0A1h

msg18:
db 0, 01Ah ; параметр прокрутки по горизонтали

end

Источник: gaw.ru
Источник

Оставить комментарий

Вы можете использовать следующие теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>