Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

3.12 Управление матричным жидкокристаллическим дисплеем

3.12.1 Управление дисплеем на основе контроллера PCF8833

На плате EA-EDU-011 установлен цветной матричный ЖК дисплей, аналог Nokia 6100. Управление дисплеем осуществляется контроллером, совместимым с Philips PCF8833. Дисплей имеет разрешение 130×130 точек и 65536 цветов. Взаимодействие с контролером осуществляется через последовательный интерфейс SPI.

Сводка основных команд контроллера PCF8833, необходимых для управления индикатором, дана в таблице 3.12.1

Каждое управляющее слово, передаваемое по SPI, состоит из девяти бит (рисунок 3.12.1). Старший бит обозначает команду (0) или данные (1). Остальные 8 бит содержат код команды или данных.

8

7

0

8

7

0

8

7

 

0

Код команды

 

1

Байт 1

 

1

Байт 2

. . .

Рисунок 3.12.1 – Схема команды управления драйвером ЖКД PCF8833

Цикл взаимодействия начинается с установки низкого уровня на линии дисплея. Низкий уровень может меняться на высокий между командами или все время быть активным. Некоторые из команд не имеют параметров. Другие сопровождаются одним или несколькими байтами данных. Каждая команда начинается с нулевого бита, а каждый параметр с единичного.

Инициализация контроллера выполняется поочередной подачей пяти команд: SWRESET, SLEEPOUT, DISPON, MADCTL и COLMOD. Первые три не имеют параметров. Каждую из остальных требуются сопроводить одним байтом данных.

Команда MADCTL управляет системой координат, инкрементом адреса памяти и порядком кодирования символов.

(1, 1) (1, 1) (130, 130) (130, 130)

MY = 0

MY = 0

MY = 1

 

 

 

MY = 1

MX = 0

MX = 1

MX = 0

 

 

 

MX = 1

 

 

 

 

 

 

 

(130, 130)

(130, 130)

 

(1, 1)

(1, 1)

Рисунок 3.12.2 – Управление осями координат с помощью битов MY и MX

Биты MX и MY задают направление осей координат (см. рисунок 3.12.2). Чаще всего ось абсцисс направляется вправо, а ось ординат — вниз

(MY = 0, MX = 1).

При выводе каждого пикселя адрес памяти автоматически инкрементируется. Направление инкремента (смещение воображаемого курсора) задается битом V. Обычно используется построчное движение курсора (V = 0).

Порядок кодирования цвета может меняться битом RGB. В дальнейшем предполагается, что этот бит равен единице, что дает привычный порядок: красный, зеленый, синий.

203

Таблица 3.12.1 – Система команд цветного матричного ЖКД на основе контролера совместимого с PCF8833

Команда ЖКД

Код

D8

 

 

 

 

 

 

D7 – D0

 

 

 

 

 

 

 

Комментарии

SWRESET

0x01

0

0

0

 

0

0

0

0

 

0

1

 

Программный сброс (задержка)

SLEEPOUT

0x11

0

0

0

 

0

1

0

0

 

0

1

 

Выход из режима SLEEP

DISPON

0x29

0

0

0

 

1

0

1

0

 

0

1

 

Включение дисплея

 

 

0

0

0

 

1

1

0

1

 

1

0

 

Управление памятью данных

 

 

 

 

 

 

 

 

 

 

 

 

RGB

 

 

 

 

 

 

 

MY/MX = 0 — направление оси вниз/влево

MADCTL

0x36

1

MY

 

MX

 

V

 

x

 

x

 

 

x

 

x

 

MY/MX = 1 — направление оси вверх/вправо

 

 

 

 

 

 

 

 

 

 

V = 0/1 — инкремент адреса в гориз./верт. направлении

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RGB = 0/1 — порядок кодирования цвета: BGR/RGB

 

 

0

0

0

 

1

1

1

0

 

1

0

 

Кодирование цвета

COLMOD

0x3A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P0–P2 = 010 (2) — 8-разрядное

1

x

 

x

 

 

x

 

x

 

x

P2

 

P1

 

P0

P0–P2 = 011 (3) — 12-разрядное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P0–P2 = 101 (5) — 16-разрядное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SETCON

0x25

0

0

0

 

1

0

0

1

 

0

1

 

Настройка контрастности

1

x

 

V6 V5 V4 V3 V2 V1 V0

V0–V6 — уровень контрастности от 0 до 127

 

 

 

 

 

0

0

0

 

1

0

1

0

 

1

0

 

Выбор диапазона столбцов

CASET

0x2A

1

 

 

 

 

 

XE0 – XE7

 

 

 

 

 

XE0–XE7 — «левая» граница (1–130)

 

 

1

 

 

 

 

 

XS0 – XS7

 

 

 

 

 

XS–XS7 — «правая» граница (1–130)

 

 

0

0

0

 

1

0

1

0

 

1

1

 

Выбор диапазона столбцов

PASET

0x2B

1

 

 

 

 

 

YE0 – YE7

 

 

 

 

 

YE0–YE7 — «нижняя» граница (1–130)

 

 

1

 

 

 

 

 

YS0 – YS7

 

 

 

 

 

YS0–YS7 — «верхняя» граница (1–130)

 

 

0

0

0

 

1

0

1

1

 

0

0

 

Запись в память дисплея

RAMWR

0x2C

1

R

 

R

 

R

 

R

 

R

G

 

G

 

G

Последовательность 16-разрядных слов, обозначающих

 

 

1

G

 

G

 

G

 

B

 

B

B

 

B

 

B

цвета пикселей. (Для 16-разрядного кодирования цвета.)

204

Таким образом, рекомендуемый параметр команды MADCTL кодируется шестнадцатеричным числом 0x48 или, с учетом предшествующей еди-

ницы — 0x148.

Команда COLMOD управляет разрядностью кодирования цветов. Поддерживается три варианта разрядности: 8, 12 и 16 бит. Снижение разрядности сокращает время передачи данных, но сокращает число цветовых оттенков. Отметим, что при максимальной скорости передачи данных 7,5 МГц и 16 битах на точку заполнить весь дисплей можно чуть больше, чем за 40 мс (). Для 16-разрядного кодирования параметр команды равен 0x105.

Команду SETCON задает контрастность дисплея. По умолчанию установлен слишком высокий уровень контрастности. Диапазон значений, рекомендуемый авторами, — от 30 до 45 (десятичные числа).

Вывод точек на дисплей осуществляется в два этапа: создание прямоугольного окна и заполнение окна цветными точками.

Окно создается двумя командами CASET и PASET. Первая задает границы окна по оси абсцисс, вторая — по оси ординат. Каждая команда имеет по два параметра (для определения границ с двух сторон). Например, для создания окна во весь экран следует дать команду CASET с параметрами 1 и 130 (шестнадцатеричные коды 0x101 и 0x182), а затем команду PASET с теми же параметрами. При выводе очередной точки курсор смещается на одну позицию по горизонтали или по вертикали в зависимости от состояния бита V. При достижении границы окна курсор переходит на начало следующей строки или столбца.

(1, 1)

(1, 1)

V = 0

(130, 130)

V = 1

(130, 130)

Рисунок 3.12.3 – Управление движением курсора в пределах окна с помощью бита V

Для вывода точки служит команда RAMWR, за которой следуют 16разрядные коды цветов одного или нескольких (возможно, всех) пикселей в формате, показанном на рисунке 3.12.4.

7

3

2

0

7

5

4

0

Красный

 

 

Зел

еный

 

 

Синий

0 – 31 (5 бит)

 

 

0 – 63 (6 бит)

 

 

0 – 31 (5 бит)

Рисунок 3.12.4 – 16-разрядный код цвета точки

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

205