Der Initialisierungscode des TFT-LCD-Displays dient hauptsächlich dazu, die Arbeitsparameter und den Status des Displays einzustellen und so sicherzustellen, dass Bilder und Text korrekt angezeigt werden. Die Rolle und das Prinzip des Initialisierungscodes umfassen hauptsächlich die folgenden Aspekte:
Hardware zurückgesetzt
Zu Beginn der Initialisierung wird normalerweise ein Hardware-Reset-Vorgang durchgeführt (durch Ziehen des Reset-Pins auf Low und High), wodurch sichergestellt wird, dass das LCD den Betrieb aus einem bekannten Zustand heraus aufnimmt.
Interface-Konfiguration
Der Initialisierungscode konfiguriert üblicherweise die Kommunikationsschnittstelle (z. B. SPI, I2C oder parallele Schnittstelle) zwischen LCD und Mikrocontroller. Verschiedene LCD-Module unterstützen möglicherweise unterschiedliche Kommunikationsschnittstellen, die während der Initialisierung korrekt konfiguriert werden müssen, damit die nachfolgende Datenübertragung reibungslos funktioniert.
Power Configuration
LCDs müssen üblicherweise mit Leistungsparametern wie Versorgungsspannung, Vorspannung und Ladungspumpe konfiguriert werden. Diese Konfigurationen wirken sich direkt auf Helligkeit, Kontrast und Stabilität des Displays aus.
Anzeigemoduseinstellungen
Dazu gehört das Einstellen der Bildschirmauflösung, der Farbtiefe, der Scanrichtung (Querformat oder Hochformat), des Pixelformats (RGB565, RGB666 usw.) und anderer Parameter im Zusammenhang mit der Bildanzeige
Registerkonfiguration
Während des Initialisierungsvorgangs müssen bestimmte Werte in die verschiedenen Steuerregister des LCD geschrieben werden, die die verschiedenen Funktionen des Displays steuern, wie z. B. Kontrasteinstellung, Gammakorrektur, Helligkeitseinstellung, Farbformateinstellung usw.
Übersichtliche Bildschirmbedienung
Am Ende der Initialisierung wird üblicherweise ein Löschvorgang durchgeführt, d. h. alle Pixel auf dem Bildschirm werden auf Schwarz oder Weiß gesetzt, um sicherzustellen, dass der Bildschirm sauber und frei von restlichen Anzeigeinhalten ist.
Einschalten des Displays
Nach Abschluss der obigen Konfiguration besteht der letzte Schritt normalerweise darin, die Anzeigefunktion einzuschalten, damit das LCD mit dem Empfangen und Anzeigen von Bilddaten beginnen kann.
Zusammenfassen
Der Initialisierungscode ist die Grundlage für die ordnungsgemäße Funktion des LCD-Displays. Durch die Ausführung des Initialisierungscodes werden verschiedene Betriebsparameter des LCD-Displays eingestellt, um sicherzustellen, dass das Display im korrekten Modus arbeitet und Inhalte stabil und klar anzeigt. Ein unvollständiger oder fehlerhafter Initialisierungsschritt kann zu Anzeigestörungen führen, z. B. zur fehlenden Bildanzeige, Verzerrung des Displayinhalts oder falschen Farben.
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