В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Прменения > ЖКИ
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Применение контроллера 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