LCD экраны под управлением микроконтроллеров. Часть 1.





    Работа с контроллером экрана происходит так же как и со множеством других устройств работающих под управлением микроконтроллера, а именно записью данных в определенный регистр, либо, в случае простых команд, без параметров, просто обращением к регистру.
  Большая часть недорогих дисплеев на контроллерах ILI, SSD имеют одинаковые адреса базовых регистров. Поэтому библиотеке без разницы с каким дисплеем работать, тем не менее, чем свежее модель тем больше вероятность что будут различия. К примеру контроллер экрана SSD1963 (800х480px) имеет иной адрес регистра определяющий формат пикселя, и ко всему прочему принимает получаемые данные о цвете "задом на перед" То есть, в формате BGR. А так же требует небольших предварительных настроек. Что требует отдельных предпусковых инструкций. В целом, общие регистры, включая принимаемые ими параметры, совпадают примерно до адреса 0x45.
  Возможна так же ситуация, когда у некоторых контроллеров, не доступны некоторые, как правило не очень важные, общие регистры. Например, в достаточно близких и по характеристикам и по содержанию регистров ILI9341(320х240) имеется регистр Gamma_Set_(0x26), в области общих регистров, а ILI9486(480х320) его уже не имеет, и настройки гаммы выведены в расширенные регистры.

    Несколько простых правил при работе с регистрами.
  
   Если регистр не имеет параметров, как например команды включения дисплея, то необходимо только обращения по адресу. Если регистр имеет 2 и более параметров, то должны быть перезаписаны все параметры. При чтении из регистров предназначенных только для чтения, первый принимаемый параметр (байт) является "мусорным" зачастую он содержит те же данные что и второй байт. То есть при чтении регистра происходит получение параметров на 1 больше.
 В даташитах все команды (адреса регистров) предварительно сведены в таблицу, далее идет более подробный разбор каждой команды и её параметров, но зачастую не достаточно подробный для быстрого понимания её работы.

Запись в регистр производится следующим образом:

uint8_t data[8]={0,}; // создаем байтовый массив, в ячейках которого укажем адрес регистра, количество передаваемых параметров и их содержание.

data [0]=0x01; // В данную ячейку пишется количество передаваемых в регистр параметров. Если ни одного - 0х00.
data [1]=0x3A; // Адрес регистра контроллера дисплея.
data [2]=0b00000101; // Параметр команды. Режим 16 бит на пиксель (5-6-5)
//data [2]=0b00000110; // Параметр команды. Режим 18 бит на пиксель (6-6-6)
Display_Command (data); // передаем в функцию заполненный массив.


   О подключении дисплеев к микроконтроллерам, о функциях и методах библиотеки Display_Lib в статье : Библиотека для LCD экранов.

0х00    NOP
  (No Operation) Пустая команда, не выполняет никаких действий.

0х01    Soft Reset
  Команда вызывает сброс содержимого регистров на значения по умолчанию. Дисплей сразу же становится пустым. Необходимо подождать 5 мсек, прежде чем отправлять новую команду после команды Soft reset. В течении этих 5 мсек, контроллер загружает все заводские значения регистров. Если сброс программного обеспечения применяется во время спящего режима, необходимо будет подождать 120 мсек, прежде чем отправлять команду на вход в спящий режим.

0х04    Read display identification information
   Чтение идентификационной информации дисплея
1-й параметр - это фиктивные данные.
2-й параметр (ID1 [7:0]): идентификатор производителя ЖК-модуля.
3-й параметр (ID2 [7:0]): идентификатор версии ЖК-модуля/драйвера.
4-й параметр (ID3 [7:0]): идентификатор ЖК-модуля/драйвера.

0х09    Read Display Status
   Чтение статуса дисплея.
2й параметр
7 Booster Состояние напряжения усилителя:
0 - Выкл
1 - Вкл
6 Row address order Порядок следования адресов строк при записи данных в выбранную область.
0 - Сверху вниз (MADCTL Бит 7 = 0)
1 - Снизу вверх (MADCTL Бит 7 = 1)
5 Column address order Порядок следования адресов столбцов при записи данных в выбранную область.
0 - Слева направо (MADCTL Бит 6 = 0)
1 - Справа налево (MADCTL Бит 6 = 1)
4 Row/column exchange Смена следования столбцов со строками.
0 - Обычный режим (MADCTL Бит 5 = 0).
1 - Обратный режим (MADCTL Бит 5 = 1).
3 Vertical refresh Порядок вертикального обновления (сканирования) памяти дисплея.
0 - Обновление сверху вниз (MADCTL Бит 4 = 0)
1 - Обновление снизу вверх (MADCTL Бит 4 = 1)
2 RGB/BGR order Режим передачи цвета.
0 - RGB (MADCTL Бит 3 = 0)
1 - BGR (MADCTL Бит 3 = 1)
1 Horizontal refresh order Порядок горизонтального обновления (сканирования) памяти дисплея.
0 - Обновление слева направо (MADCTL Бит 2 = 0)
1 - Обновление справа налево (MADCTL Бит 2 = 1)
0 Not used ---

3й параметр
7 Not used ---
6:4 Pixel format Формат пикселя цвета интерфейса.
011 12 бит/пиксель
101 16 бит/пиксель
110 18 бит/пиксель
Типы форматах могут отличаться в различных моделях дисплея.
3 Idle mode ON/OFF Режим бездействия.
0 - Режим ВЫКЛ
1 - Режим ВКЛ
2 Partial mode ON/OFF Режим использования частичного экрана
0 - Частичный режим Выключен
1 - Частичный режим Включен.
1 Sleep IN/OUT Спящий режим
0 - В спящем режиме
1 - Вне спящего режима
0 Display normal mode ON/OFF Включение нормального режима (Частичный режим выключен).
0 - Нормальный режим выключен
1 - Нормальный режим включен

4й параметр
7 Vertical scrolling status Состояние вертикальной прокрутки (скроллинга)
0 - Выкл
1 - Вкл
6 Not used ---
5 Inversion status Состояние инверсии цвета.
0 - Выкл
1 - Вкл
4 All pixel ON Не определено
3 All pixel OFF Не определено
2 Display ON/OFF Display ON/OFF.
0 - Выкл
1 - Вкл
1 Tearing effect line ON/OFF Режим линии с эффектом разрыва
0 - Режим Выкл
1 - Режим Вкл
0 Gamma curve selection Бит GC 0

5й параметр
7 Gamma curve selection Бит GC 1
6 Gamma curve selection Бит GC 2
000 Кривая гаммы 1
001 Кривая гаммы 2
010 Кривая гаммы 3
011 Кривая гаммы 4
5 Tearing effect line mode
0 - Mode 1, V-Blanking only
1 - Mode 2, both H-Blanking and V-Blanking.
4 Not used ---
3 Not used ---
2 Not used ---
1 Not used ---
0 Not used ---


0х0A     Read Display Power Mode
   Чтение режима питания дисплея.
2й параметр
7 Booster Voltage Status
0 - Бустер отключен
1 - Бустер включен
6 Idle Mode On/Off Режим ожидания
0 - Режим ожидания отключен.
1 - Режим ожидания включен.
5 Partial Mode On/Off Частичный режим отображения
0 - Режим ожидания отключен.
1 - Режим ожидания включен.
4 Sleep In/Out Спящий режим.
0 - Спящий режим включен.
1 - Спящий режим выключен.
3 Display Normal Mode On/Off Нормальный режим
0 - Режим отключен (Частичный режим включен).
1 - В нормальном режиме.
2 Display On/Off Дисплей включен.
1 Not used ---
0 Not used ---

0х0B     Read Display MADCTL
   Чтение режима питания дисплея.
2й параметр
7 Page Address Order Порядок адресов строк
0 Сверху вниз
1 Снизу вверх
6 Column Address Order Порядок адресов столбцов
0 Слева направо
1 Справа налево
5 Page/Column Order Порядок страниц / столбцов
0 Обычный режим
1 Обратный режим
4 Line Address Order Порядок адресов строк
0 Обновление сверху вниз
1 Обновление снизу вверх
3 RGB/BGR Order
0 - RGB
1 - BGR
2 Display Data Latch Data Order Обновление данных
0 - Обновление слева направо
1 - Обновление справа налево
1 Not used ---
0 Not used ---

0х0С     Read Display Pixel Format
   Чтение формата пикселя.
2й параметр
7:4 RGB Interface Format
0101 16 bits / pixel
0110 18 bits / pixel
3 Not used ---
2:0 CPU Interface Format
101 16 bits / pixel
110 18 bits / pixel

0х0D     Read Display Image Mode
   .
2й параметр
7 Vertical Scrolling Status Состояние режима вертикальной прокрутки
0 Вертикальная прокрутка выключена
1 Вертикальная прокрутка включена
6 Not used ---
5 Inversion On/Off Включение/выключение инвертированного режима
0 - Инверсия выключена
1 - Инверсия включена
4 Not used ---
3 Not used ---
2:0 Gamma Curve Selection
000 Кривая гаммы 1
001 Кривая гаммы 2
010 Кривая гаммы 3
011 Кривая гаммы 4

0х0E     Read Display Signal Mode
   Чтение сигнального режима дисплея.
2й параметр
7 Tearing Effect Line
0 Эффект Выкл
1 Эффект Вкл
6 Tearing Effect Line Mode
0 - режим 1
1 - режим 2
5 Horizontal Sync (RGB interface) Горизонтальная синхронизация
0 - Выкл
1 - Вкл
4 Vertical Sync (RGB interface) Вертикальная синхронизация
0 - Выкл
1 - Вкл
3 Pixel Clock (DOTCLK, RGB interface)
0 - Выкл
1 - Вкл
2 Data Enable (DE, RGB interface)
0 - Off
1 - On
1 Not used ---
0 Error on DSI Error on Display System Interface
0 - Ошибок нет
1 - Ошибки есть

0х10    Sleep IN
  Выключение экрана и переход в спящий режим.

0х11    Sleep Out
  Включение экрана и выход из спящего режима.
Главный процессор должен подождать 5 мс после отправки этой команды, прежде чем отправлять другую команду.

0х12    Partial Mode ON
  Включение режима частичного отображения.
Область частичного отображения задается в регистре Set Partial Area (0x30).

0х13    Normal Display Mode ON
  Выключение режима частичного отображения и скроллинга

0х20    Display Inversion OFF
  Выключение режима инверсии цветов.

0х21    Display Inversion ON
  Включение режима инверсии цветов.

0х28    Display OFF
  Выключение дисплея.

0х29    Display ON
  Включение дисплея.

0х2A     Column Address Set
   Передача в контроллер экрана начального и конечного столбца области для рисования. (Координаты X1 и X2 области.)
1й параметр
7:0 SC Start Colum. Старший байт начального столбца.
2й параметр
7:0 SC Start Colum. Младший байт начального столбца.
3й параметр
7:0 EC End Colum. Старший байт конечного столбца.
4й параметр
7:0 EC End Colum. Младший байт конечного столбца.

0х2B     Page Address Set
   Передача в контроллер экрана начальной и конечной строки области для рисования. (Координаты Y1 и Y2 области.)
1й параметр
7:0 SP Start Page. Старший байт начальной строки.
2й параметр
7:0 SP Start Page. Младший байт начальной строки.
3й параметр
7:0 EP End Page. Старший байт конечной строки.
4й параметр
7:0 EP End Page. Младший байт конечной строки.

0х2С     Memory Write
   Передача в контроллер данных о цвете пикселя, в область экрана предварительно указанную в регистрах set_column_address (0x2A) и set_page_address (0x2B), в зависимости от выбранного формата пикселя и от выбранных правил заполнения области изображения.
  Дойдя до конца строки, значение внутреннего указателя строки увеличится на 1ед и он переместится на следующую строку.
1й параметр
7:0 Data 1 Первая часть данных цвета пикселя...
N-й параметр
7:0 Data N N-ая часть данных цвета пикселя.

0х2E     Memory Read
   Получение из контроллера данных о цвете пикселя, из области экрана предварительно указанной в регистрах set_column_address (0x2A) и set_page_address (0x2B), в зависимости от выбранного формата пикселя и от выбранных правил заполнения области изображения.
   Дойдя до конца строки, значение внутреннего указателя строки увеличится на 1ед и он переместится на следующую строку.
1й параметр
7:0 Data 1 Первая часть данных цвета пикселя...
N-й параметр
7:0 Data N N-ая часть данных цвета пикселя.


0х30     Partial Area
   Регистр позволяет выбрать область частичного отображения. Передаваемые параметры позволяют выбрать начальную и конечную строку области. Если значение конечной строки меньше начальной, то будет выбрано две области. От края экрана, до наименьшего значения параметра, и от строки с большим значением до конца экрана.

  Область экрана которая будет, которая подлежит сканированию видеопамяти.
1й параметр
7:0 Start Row Старший байт начальной строки.
2й параметр
7:0 Start Row Младший байт начальной строки.
3й параметр
7:0 End Row Старший байт конечной строки.
4й параметр
7:0 End Row Младший байт конечной строки.

0х33     Vertical Scrolling Definition
   Выбор области вертикального скроллинга.
1й параметр
7:0 TFA
Старший байт окончания верхней фиксированной области вертикального скроллинга.
2й параметр
7:0 TFA
Младший байт окончания верхней фиксированной области вертикального скроллинга.
3й параметр
7:0 VSA
Длинна области скроллинга в линиях. Старший байт.
4й параметр
7:0 VSA
Длинна области скроллинга в линиях. Младший байт.
5й параметр
7:0 BFA
Старший байт начала нижней фиксированной области вертикального скроллинга.
6й параметр
7:0 BFA
Младший байт начала нижней фиксированной области вертикального скроллинга.

0х34    Tearing Effect Line OFF
  Выключение Tearing Effect.

0х35    Tearing Effect Line ON
  Включение Tearing Effect.
В зависимости от выбранной строки в регистре Write Tear Scan Line (0х44), при сканировании памяти, контроллер экрана установит высокий уровень на выводе (TE), когда дойдет до указанной строки.
В большинстве случаев, на готовых платах с экраном, данный вывод не выведен.

0х36     Memory Access Control
   Настройки обращения к памяти дисплея.
1й параметр
7 Row Address Order
Смена направления чтения строк.
6 Column Address Order
Смена направления чтения столбцов.
5 Row / Column Exchange Смена столбцов со строками местами.
0 - Выкл
1 - Вкл
4 Vertical Refresh Order Вертикальное обновление экрана.
0 - Выкл
1 - Вкл
3 RGB-BGR Order
0 - RGB
1 - BGR
2 Horizontal Refresh Order Горизонтальное обновление экрана.
1 Not used ---
0 Not used ---

0х37     Vertical Scrolling Start Address
   Указатель на строку, на которую смещается выбранная для вертикальной прокрутки область, предварительно описанная в регистре Vertical Scrolling Definition (33h)
1й параметр
7:0 VSP
Vertical Start Address. Старший бит.
2й параметр
7:0 VSP
Vertical Start Address. Младший бит.

0х38    Idle Mode OFF
  Включение упрощенного отображения. В данном режиме срезаются все биты передаваемых цветов, кроме самого старшего.

0х39    Idle Mode ON
  Выключение упрощенного отображения..

0х3A     Interface Pixel Format
   Выбор формата пикселя.
1й параметр
7:4 RGB Формат пикселя
0 1 0 1 - 16 bits / pixel
0 1 1 0 - 18 bits / pixel
Формат пикселей может отличаться в различных дисплеях.
3 Not used ---
2:0 CPU Interface Format
1 0 1 - 16 bits / pixel
1 1 0 - 18 bits / pixel

0х3C    Memory Write Continue
  
1й параметр
7:0 Data 1 Эта команда используется для передачи данных из микроконтроллера в кадровую память, если требуется продолжить запись в память после Команды “Memory Write (0х2C)”.

0х3E    Memory Read Continue
  
1й параметр
7:0 Data 1 Эта команда используется для чтения данных из микроконтроллера в кадровую память, если требуется продолжить запись в память после Команды “Memory Write (0х2E)”.

0х44    Write Tear Scan Line
   Записать номер строки для эффекта Tear Scan Line
1й параметр
7:0 Data
Передать строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Старший байт номера строки.
2й параметр
7:0 Data
Младший байт номера строки.

0х45    Write Tear Scan Line
   Прочесть текущую строку эффекта Tear Scan Line.
1й параметр
7:0 Data
Прочесть текущую строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Старший байт номера строки.
2й параметр
7:0 Data
Прочесть текущую строку, после сканирования которой микроконтроллер установит высокий уровень на выводе TE.
Младший байт номера строки.




...








   Изготовление рекламы Изготовление мебели  Общестроительные работы 3D моделирование       Статьи
  Благоустройство тер.
   Общее портфолио    Мебель для мастерской   Установка бордюров   Портфолио   Контакты
   Наружняя реклама       Фасадные работы   Модели   Образец договора
   Внутреняя реклама       Утепление гаража   Инфо
   Таблички, наклейки       Косметический ремонт   Фото г.Надым
  Бетонные работы   Фото пригороды г.Надым


ередача