Codul de inițializare al afișajului TFT LCD este utilizat în principal pentru a seta parametrii de lucru și starea afișajului pentru a se asigura că afișajul poate afișa corect imagini și text. Rolul și principiul codului de inițializare includ în principal următoarele aspecte:
Resetare hardware
La începutul inițializării, se efectuează de obicei o operație de resetare hardware (prin tragerea pinului de resetare în jos și în sus), ceea ce asigură că LCD-ul începe să funcționeze dintr-o stare cunoscută.
Configurarea interfeței
Codul de inițializare configurează de obicei interfața de comunicație (de exemplu, SPI, I2C sau interfață paralelă) dintre LCD și microcontroler. Diferite module LCD pot suporta diferite interfețe de comunicație, care trebuie configurate corect în timpul inițializării, astfel încât datele ulterioare să poată fi transferate fără probleme.
Configurare alimentare
LCD-urile trebuie de obicei configurate cu parametri de putere, cum ar fi tensiunea de alimentare, tensiunea de polarizare și pompa de încărcare. Aceste configurații afectează direct luminozitatea, contrastul și stabilitatea afișajului.
Setările modului de afișare
Aceasta include setarea rezoluției ecranului, adâncimea culorii, direcția de scanare (peisaj sau portret), formatul pixelilor (RGB565, RGB666 etc.) și alți parametri legați de afișarea imaginii.
Înregistrați configurația
În timpul procesului de inițializare, valorile specifice trebuie scrise în diferitele registre de control ale ecranului LCD, care controlează diferitele funcții ale afișajului, cum ar fi reglarea contrastului, corecția gama, reglarea luminozității, setarea formatului de culoare etc.
Ștergeți funcționarea ecranului
La sfârșitul inițializării, de obicei se efectuează o operațiune de ștergere, adică toți pixelii de pe ecran sunt setați la alb sau negru pentru a se asigura că ecranul este curat și lipsit de conținut rezidual de afișare.
Pornirea afișajului
După finalizarea configurației de mai sus, ultimul pas este de obicei activarea funcției de afișare, astfel încât ecranul LCD să poată începe să primească și să afișeze date de imagine.
A rezuma
Codul de inițializare este baza pentru ca afișajul LCD să poată funcționa corect. Prin executarea codului de inițializare, diverși parametri de funcționare ai LCD-ului sunt setați pentru a se asigura că afișajul funcționează în modul corect și este capabil să afișeze conținutul stabil și clar. Dacă pasul de inițializare este incomplet sau greșit, poate duce la anomalii de afișare, cum ar fi incapacitatea de a afișa imagini, distorsiunea conținutului afișajului sau culori incorecte.
Cod 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