Применение контроллера T6963C фирмы TOSHIBA для управления графическими модулями.
Введение:
LCD контроллер T6963C фирмы TOSHIBA является одним из наиболее популярных контроллеров для использования в небольших графических дисплеях. С этой целью он используется в ряде LCD модулей фирмы HANTRONIX с разрешением от 128x128 до 240x128 пикселов. Этот класс модулей наиболее часто используется для отображения текста и графики в малогабаритных устройствах и инструментах. При этом он всегда получает информацию от встроенного 8- битного микропроцессора. Эта статья описывает использование данного контроллера с множеством графических модулей фирмы HANTRONIX. Примеры его использования с 8- битным 8051 микроконтроллером фирмы INTEL легко применимы практически с любыми микроконтроллерами.
Описание работы:
T6963 использует простую 8- битную шину данных для передачи команд и данных, как на, так и от дисплея. После подачи напряжения питания необходима схеммная подача команды RESET, по которой контроллер инициализируется серией команд начальной установки в определённый режим по желанию пользователя. После инициализации контроллер готов к приёму и отображению информации. Информация должна быть в соответствующем виде, либо бит матрица графических данных, либо текстовые данные в псевдо ASCll формате. Внутренний знакогенератор имеет смещение кода –20h. что означает необходимость вычитания числа 20h из ASCll кода перед посылкой знака для отображения на дисплее.
В графическом режиме бит-матрицы каждому байту данных ставится в соответствие 8 пикселов на дисплее, как показано на рис.1.
Рис.1. Карта памяти дисплея 128x128.
Текстовая информация может быть записана в псевдо ASCll формате и отображается знаком с матрицей 5x7. Графика и текст пишутся раздельно, пользователь разделяет зоны или страницы в памяти встроенной RAM. Затем пользователь выбирает один из трёх путей объединения текстовых и графических страниц на дисплее, или единый режим отображения, графический или текстовый.
Схемы применения:
В предложенной статье на рис.2 8051 микропроцессор соединён с контроллером LCD через параллельный порт входов/выходов. Он может так же соединяться с шиной данных микропроцессора и проецироваться в зону памяти данных.
Программы:
Пример программы для микропроцессора 8051 написан на ассемблере и работает по схеме приведённой на рис.2. Программа разработана для дисплея 240x64 но применима для любых графических дисплеев HANTRONIX с контроллером T6963C.
Программа сначала подаёт сигнал RESET. Этот сигнал должен длиться не менее 2 мкСек. Затем на LCD контроллер посылаются серия командных байтов для его инициализации.
T6963C требует чтобы в случае передачи параметров в режиме данных, они предварялись командным байтом передаваемым в командном режиме.
Контроллер инициализируется с графической страницы по адресам 0000-077fh. Эти 1920 байтов содержат данные полного экрана. В данном примере текстовая информация не отображается но контроллер инициализируется и в текстовом режиме для иллюстрации процесса. Текстовая страница начинается непосредственно за графической по адресу 0780h. Все графические дисплеи HANTRONICS имеющие встроенный контроллер T6963C ещё содержат 8К дисплейной памяти RAM.
В данном примере вход выбора матрицы (Font Select) установлен в логический 0 и формирует знаки матрицей 5x7 пикселов, что позволяет отображать 30 знаков в строке при 8 строках на экране. Полное число знаков отображаемых в данном режиме составляет 240 штук. При логической единице на линии выбора матрицы формируется поле знака из 6x8 пикселов.
После инициализации контроллер устанавливается в режим автозаписи а дисплей заполняется графическими данными.
Пример кода программы не преследовал цели высокой эффективности, но должен обеспечить максимальную простоту и наглядность.
Приведённые алгоритмы позволяют точнее разобраться с функционированием T6963C.
Инициализация:
Прежде чем LCD контроллер станет доступен процессору для отображения данных или текста, он должен быть инициализирован. Инициализация должна завершиться сразу после включения питания системы. Следующая таблица показывает последовательные команды и параметры с пояснанием функций каждой.
Команды инициализации:
Формат адреса [LSB, MSB]
Выводимое изображение.
Программа:
$mod51
; *****************************************
; * *
; * Применение T6983 V1.0 *
; * *
; *****************************************
; Тактовая частота процессора 16 МГц.
; Время выполнения цикла .750 мсек.
; Демонстрационная программа формирования
; изображения на 240x64 точечном графическом
; дисплее с помощью контроллера T6963C.
org 000h
ljmp start ; начало программы
org 100h
start :
; Инициализация T6963C
clr p3.3 ; схемный сброс
nop
nop
setb p3.3
mov dptr, #msgil ; байты инициализации
lcall msgc
; Начало основной программы
; Отображение графики
mov dptr , #msgi2 ; установка режима авто.
lcall msgc
mov dptr , #msg1 ; отображение графики
sjmp $
; ***********************************************
; Подпрограммы
; MSGC передаёт данные регистрируемые DPTR
; в графический модуль как серию команд
; с двумя параметрами каждую.
msgc:
mov r0 , #2 ; # байтов данных
msgc2:
clr a
movc a , ?a+dptr ; получение байта
cjne a , #0a1h , msgc3 ; выполнено
ret
msgc3: mov rl , a
lcall writed ; отправить его
ink dptr
вотя r0 б msgc2
clr a
movc a , ?a+dptr ; получить команду
mov r1 , a
lcall writec ; отправить команду
sjmp msgc ; следующая команда
; MSGD отправляет данные отмеченные DPTR
; в графический модуль.
msgd:
clr a
movc a , ?a+dptr ; получить байт.
cjne a , #0a1h , msgd1 ; выполнено
ret
msgd1:
mov r1, a
lcall writed ; отправить данные
inc dptr
sjmp msgd
; WRITEC отправляет байт в R1 графического
; модуля как команду.
writec :
lcall status ; запрос готовности дисплея
setb p3.2 ; с/d = 1
writec1:
mov p1 , r1 ; получить данные
clr p3 ,0 ; отметить
set p3 ,0
ret
; WRITED отправляет данные в R1 графического модуля
; как данные.
writed:
lcall status ; запрос готовности дисплея
clr p3 ,0 ; с/d = 0
sjmp writec1
; STATUS подтверждает готовность дисплея.
; Из данного состояния дисплей сам не выходит.
status:
setb p3.2 ; c/d = 1
mov p1 , #0ffh ; p1 на вход
mov r3 ,#0bh ; маскировка битов статуса
stat1:
clr p3.1 ; прочитать
mov a , p1
setb p3.1
anl a , r3 ; запрос статуса
clr с
subb a , r3
jnz stat1
ret
; ******************************************************
; ТАБЛИЦЫ и ДАННЫЕ
; Байты инициализации для модуля 240x64
msgi1:
db 80h, 07h, 40h ; начальный адрес текста
db 1eh, 00, 41h ; область текста
db 00, 00, 42h ; начальный адрес графики
db 1eh, 00, 43h ; область графики
db 00, 00, 81h ; установка режима
db 00, 00, 24h ; установка счётчика адреса
db 00, 00, 98h ; установка режима модуля
db 0a1h
msgi2:
db 00, 00, 0b0h ; режим авто
db 0a1h
; 240x64 матрица графических данных
; показаны первые 8 байтов, реально
; матрица содержит 1920 байтов бинарных данных
msg1:
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 0a1h
end
|