Der Initialisierungscode des TFT-LCD-Displays wird hauptsächlich dazu verwendet, die Arbeitsparameter und den Status des Displays einzustellen, um sicherzustellen, dass das Display Bilder und Text korrekt anzeigen kann. Die Rolle und das Prinzip des Initialisierungscodes umfassen hauptsächlich die folgenden Aspekte:
Hardware-Reset
Zu Beginn der Initialisierung wird in der Regel ein Hardware-Reset durchgeführt (durch Ziehen des Reset-Pins auf low und high), wodurch sichergestellt wird, dass das LCD von einem bekannten Zustand aus arbeitet.
Konfiguration der Schnittstelle
Der Initialisierungscode konfiguriert in der Regel die Kommunikationsschnittstelle (z.B. SPI, I2C oder parallele Schnittstelle) zwischen dem LCD und dem Mikrocontroller. Verschiedene LCD-Module können unterschiedliche Kommunikationsschnittstellen unterstützen, die während der Initialisierung korrekt konfiguriert werden müssen, damit die nachfolgenden Daten reibungslos übertragen werden können.
Leistung Konfiguration
LCDs müssen in der Regel mit Leistungsparametern wie Versorgungsspannung, Bias-Spannung und Ladungspumpe konfiguriert werden. Diese Konfigurationen wirken sich direkt auf die Helligkeit, den Kontrast und die Stabilität der Anzeige aus.
Einstellungen des Anzeigemodus
Dazu gehören die Einstellung der Bildschirmauflösung, der Farbtiefe, der Scanrichtung (Hoch- oder Querformat), des Pixelformats (RGB565, RGB666 usw.) und anderer Parameter für die Bilddarstellung.
Register Konfiguration
Während des Initialisierungsprozesses müssen bestimmte Werte in die verschiedenen Steuerregister des LCD geschrieben werden, die die verschiedenen Funktionen der Anzeige steuern, wie z. B. Kontrasteinstellung, Gammakorrektur, Helligkeitseinstellung, Farbformateinstellung usw.
Bildschirm löschen
Am Ende der Initialisierung wird in der Regel ein Löschvorgang durchgeführt, d. h. alle Bildpunkte auf dem Bildschirm werden auf schwarz oder weiß gesetzt, um sicherzustellen, dass der Bildschirm sauber und frei von Restinhalten ist.
Einschalten des Displays
Nach Abschluss der obigen Konfiguration besteht der letzte Schritt in der Regel darin, die Anzeigefunktion einzuschalten, damit das LCD mit dem Empfang und der Anzeige von Bilddaten beginnen kann.
Zusammengefasst
Der Initialisierungscode ist die Grundlage dafür, dass das LCD-Display ordnungsgemäß funktionieren kann. Durch die Ausführung des Initialisierungscodes werden verschiedene Betriebsparameter des LCD-Displays eingestellt, um sicherzustellen, dass das Display im richtigen Modus arbeitet und in der Lage ist, Inhalte stabil und deutlich anzuzeigen. Wenn der Initialisierungsschritt unvollständig oder falsch ist, kann dies zu Anomalien in der Anzeige führen, z. B. zur Unfähigkeit, Bilder anzuzeigen, zur Verzerrung des Anzeigeinhalts oder zu falschen Farben.
ILI9341V-Code
//************* Start der Anfangssequenz **********//
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); //Stromversorgungssteuerung
LCD_DATA_ILI9341(0x21); //VRH[5:0]
LCD_CTRL_ILI9341(0xC1); //Steuerung der Stromversorgung
LCD_DATA_ILI9341(0x12); //SAP[2:0];BT[3:0]
LCD_CTRL_ILI9341(0xC5); //VCM-Steuerung
LCD_DATA_ILI9341(0x40); //32
LCD_DATA_ILI9341(0x3c); //3//3c
LCD_CTRL_ILI9341(0xC7); //VCM-Steuerung2
LCD_DATA_ILI9341(0X94); //0xb2//0x9c
LCD_CTRL_ILI9341(0x36); // Speicherzugriffssteuerung
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); // Steuerung der Anzeigefunktion
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 Funktion deaktivieren
LCD_DATA_ILI9341(0x00);
LCD_CTRL_ILI9341(0x26); //Gamma-Kurve ausgewählt
LCD_DATA_ILI9341(0x01);
LCD_CTRL_ILI9341(0xE0); /Gamma einstellen
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); //Gamma einstellen
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); //Schlafzustand beenden
LCD_Delayms(120);
LCD_CTRL_ILI9341(0x29); //Anzeigen ein