Код инициализации TFT LCD дисплея в основном используется для установки рабочих параметров и состояния дисплея, чтобы гарантировать, что дисплей может правильно отображать изображения и текст. Роль и принцип кода инициализации в основном включают в себя следующие аспекты:
Аппаратный сброс
В начале инициализации обычно выполняется операция аппаратного сброса (путем переключения контакта сброса в низкий и высокий уровни), что гарантирует, что ЖК-дисплей начнет работать из известного состояния.
Конфигурация интерфейса
Код инициализации обычно настраивает интерфейс связи (например, SPI, I2C или параллельный интерфейс) между ЖК-дисплеем и микроконтроллером. Различные модули ЖК-дисплея могут поддерживать различные интерфейсы связи, которые необходимо правильно настроить во время инициализации, чтобы последующие данные могли передаваться плавно.
Конфигурация питания
ЖК-дисплеи обычно требуют настройки параметров питания, таких как напряжение питания, напряжение смещения и подкачка заряда. Эти конфигурации напрямую влияют на яркость, контрастность и стабильность дисплея.
Настройки режима отображения
Сюда входит настройка разрешения экрана, глубины цвета, направления сканирования (альбомная или портретная), формата пикселей (RGB565, RGB666 и т. д.) и других параметров, связанных с отображением изображения.
Конфигурация регистра
В процессе инициализации необходимо записать определенные значения в различные регистры управления ЖК-дисплея, которые управляют различными функциями дисплея, такими как регулировка контрастности, гамма-коррекция, регулировка яркости, настройка цветового формата и т. д.
Операция очистки экрана
В конце инициализации обычно выполняется операция очистки, т. е. все пиксели на экране устанавливаются в черный или белый цвет, чтобы гарантировать, что экран чист и не содержит остаточного отображаемого содержимого.
Включение дисплея
После завершения вышеуказанной настройки последним шагом обычно является включение функции отображения, чтобы ЖК-дисплей мог начать получать и отображать данные изображения.
Обобщить
Код инициализации является основой для правильной работы ЖК-дисплея. При выполнении кода инициализации устанавливаются различные рабочие параметры ЖК-дисплея, чтобы гарантировать работу дисплея в правильном режиме и возможность стабильного и четкого отображения контента. Если этап инициализации неполный или неправильный, это может привести к аномалиям отображения, таким как невозможность отображения изображений, искажение отображаемого контента или неправильные цвета.
Код ILI9341V
//************* Start Initial Sequence **********//
LCD_CTRL_ILI9341(0xCF);
LCD_DATA_ILI9341(0x00);
LCD_DATA_ILI9341(0xC1);
LCD_DATA_ILI9341(0X30);
LCD_CTRL_ILI9341(0xED);
LCD_DATA_ILI9341(0x64);
LCD_DATA_ILI9341(0x03);
LCD_DATA_ILI9341(0X12);
LCD_DATA_ILI9341(0X81);
LCD_CTRL_ILI9341(0xE8);
LCD_DATA_ILI9341(0x85);
LCD_DATA_ILI9341(0x10);
LCD_DATA_ILI9341(0x78);
LCD_CTRL_ILI9341(0xCB);
LCD_DATA_ILI9341(0x39);
LCD_DATA_ILI9341(0x2C);
LCD_DATA_ILI9341(0x00);
LCD_DATA_ILI9341(0x34);
LCD_DATA_ILI9341(0x02);
LCD_CTRL_ILI9341(0xF7);
LCD_DATA_ILI9341(0x20);
LCD_CTRL_ILI9341(0xEA);
LCD_DATA_ILI9341(0x00);
LCD_DATA_ILI9341(0x00);
LCD_CTRL_ILI9341(0xC0); //Power control
LCD_DATA_ILI9341(0x21); //VRH[5:0]
LCD_CTRL_ILI9341(0xC1); //Power control
LCD_DATA_ILI9341(0x12); //SAP[2:0];BT[3:0]
LCD_CTRL_ILI9341(0xC5); //VCM control
LCD_DATA_ILI9341(0x40); //32
LCD_DATA_ILI9341(0x3c); //3//3c
LCD_CTRL_ILI9341(0xC7); //VCM control2
LCD_DATA_ILI9341(0X94); //0xb2//0x9c
LCD_CTRL_ILI9341(0x36); // Memory Access Control
LCD_DATA_ILI9341(0x08);
LCD_CTRL_ILI9341(0x3A);
LCD_DATA_ILI9341(0x55);
LCD_CTRL_ILI9341(0xB1);
LCD_DATA_ILI9341(0x00);
LCD_DATA_ILI9341(0x17);
LCD_CTRL_ILI9341(0xB6); // Display Function Control
LCD_DATA_ILI9341(0x0A);
LCD_DATA_ILI9341(0xA2);
LCD_CTRL_ILI9341(0xF6);
LCD_DATA_ILI9341(0x01);
LCD_DATA_ILI9341(0x30);
LCD_CTRL_ILI9341(0xF2); // 3Gamma Function Disable
LCD_DATA_ILI9341(0x00);
LCD_CTRL_ILI9341(0x26); //Gamma curve selected
LCD_DATA_ILI9341(0x01);
LCD_CTRL_ILI9341(0xE0); //Set Gamma
LCD_DATA_ILI9341(0x0F);
LCD_DATA_ILI9341(0x20);
LCD_DATA_ILI9341(0x1E);
LCD_DATA_ILI9341(0x07);
LCD_DATA_ILI9341(0x0A);
LCD_DATA_ILI9341(0x03);
LCD_DATA_ILI9341(0x52);
LCD_DATA_ILI9341(0X63);
LCD_DATA_ILI9341(0x44);
LCD_DATA_ILI9341(0x08);
LCD_DATA_ILI9341(0x17);
LCD_DATA_ILI9341(0x09);
LCD_DATA_ILI9341(0x19);
LCD_DATA_ILI9341(0x13);
LCD_DATA_ILI9341(0x00);
LCD_CTRL_ILI9341(0XE1); //Set Gamma
LCD_DATA_ILI9341(0x00);
LCD_DATA_ILI9341(0x16);
LCD_DATA_ILI9341(0x19);
LCD_DATA_ILI9341(0x02);
LCD_DATA_ILI9341(0x0F);
LCD_DATA_ILI9341(0x03);
LCD_DATA_ILI9341(0x2F);
LCD_DATA_ILI9341(0x13);
LCD_DATA_ILI9341(0x40);
LCD_DATA_ILI9341(0x01);
LCD_DATA_ILI9341(0x08);
LCD_DATA_ILI9341(0x07);
LCD_DATA_ILI9341(0x2E);
LCD_DATA_ILI9341(0x3C);
LCD_DATA_ILI9341(0x0F);
LCD_CTRL_ILI9341(0x11); //Exit Sleep
LCD_Delayms(120);
LCD_CTRL_ILI9341(0x29); //Display on