Le code d'initialisation de l'écran LCD TFT sert principalement à définir les paramètres de fonctionnement et l'état de l'écran afin de garantir l'affichage correct des images et du texte. Le rôle et le principe du code d'initialisation incluent principalement les aspects suivants :
Réinitialisation matérielle
Au début de l'initialisation, une opération de réinitialisation matérielle est généralement effectuée (en tirant la broche de réinitialisation vers le bas et vers le haut), ce qui garantit que l'écran LCD commence à fonctionner à partir d'un état connu.
Configuration de l'interface
Le code d'initialisation configure généralement l'interface de communication (par exemple, SPI, I2C ou interface parallèle) entre l'écran LCD et le microcontrôleur. Les différents modules LCD peuvent prendre en charge différentes interfaces de communication, qui doivent être configurées correctement lors de l'initialisation afin que les données ultérieures puissent être transférées sans problème.
Configuration de l'alimentation
Les écrans LCD doivent généralement être configurés avec des paramètres d'alimentation tels que la tension d'alimentation, la tension de polarisation et la pompe de charge. Ces configurations affectent directement la luminosité, le contraste et la stabilité de l'écran.
Paramètres du mode d'affichage
Cela comprend le réglage de la résolution de l'écran, de la profondeur des couleurs, du sens de numérisation (paysage ou portrait), du format de pixel (RVB565, RVB666, etc.) et d'autres paramètres liés à l'affichage de l'image.
Configuration du registre
Au cours du processus d'initialisation, des valeurs spécifiques doivent être écrites dans les différents registres de contrôle de l'écran LCD, qui contrôlent les différentes fonctions de l'écran, telles que le réglage du contraste, la correction gamma, le réglage de la luminosité, le réglage du format de couleur, etc.
Effacer le fonctionnement de l'écran
À la fin de l'initialisation, une opération de nettoyage est généralement effectuée, c'est-à-dire que tous les pixels de l'écran sont définis en noir ou en blanc pour garantir que l'écran est propre et exempt de contenu d'affichage résiduel.
Allumer l'écran
Une fois la configuration ci-dessus terminée, la dernière étape consiste généralement à activer la fonction d'affichage afin que l'écran LCD puisse commencer à recevoir et à afficher les données d'image.
Résumer
Le code d'initialisation est la base du bon fonctionnement de l'écran LCD. Son exécution permet de définir divers paramètres de fonctionnement de l'écran LCD afin de garantir un fonctionnement optimal et un affichage stable et clair. Une initialisation incomplète ou erronée peut entraîner des anomalies d'affichage, telles qu'une incapacité à afficher les images, une distorsion du contenu ou des couleurs incorrectes.
Code 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