Kode inisialisasi layar LCD TFT terutama digunakan untuk mengatur parameter kerja dan status layar guna memastikan layar dapat menampilkan gambar dan teks dengan benar. Peran dan prinsip kode inisialisasi terutama mencakup aspek-aspek berikut:
Reset perangkat keras
Pada awal inisialisasi, operasi pengaturan ulang perangkat keras biasanya dilakukan (dengan menarik pin pengaturan ulang rendah dan tinggi), yang memastikan bahwa LCD mulai beroperasi dari keadaan yang diketahui.
Konfigurasi Antarmuka
Kode inisialisasi biasanya mengonfigurasi antarmuka komunikasi (misalnya SPI, I2C atau antarmuka paralel) antara LCD dan mikrokontroler. Modul LCD yang berbeda mungkin mendukung antarmuka komunikasi yang berbeda, yang perlu dikonfigurasi dengan benar selama inisialisasi sehingga data selanjutnya dapat ditransfer dengan lancar.
Konfigurasi daya
LCD biasanya perlu dikonfigurasikan dengan parameter daya seperti tegangan suplai, tegangan bias, dan pompa pengisian. Konfigurasi ini secara langsung memengaruhi kecerahan, kontras, dan stabilitas tampilan.
Pengaturan Mode Tampilan
Ini termasuk pengaturan resolusi layar, kedalaman warna, arah pemindaian (lanskap atau potret), format piksel (RGB565, RGB666, dll.), dan parameter lain yang terkait dengan tampilan gambar.
Konfigurasi Registrasi
Selama proses inisialisasi, nilai-nilai tertentu perlu ditulis ke berbagai register kontrol LCD, yang mengontrol berbagai fungsi tampilan, seperti penyesuaian kontras, koreksi gamma, penyesuaian kecerahan, pengaturan format warna, dll.
Operasi layar yang jelas
Pada akhir inisialisasi, operasi pembersihan biasanya dilakukan, yaitu semua piksel pada layar diatur ke hitam atau putih untuk memastikan layar bersih dan bebas dari sisa konten tampilan.
Menghidupkan layar
Setelah menyelesaikan konfigurasi di atas, langkah terakhir biasanya adalah menghidupkan fungsi tampilan sehingga LCD dapat mulai menerima dan menampilkan data gambar.
Untuk meringkas
Kode inisialisasi merupakan dasar agar layar LCD dapat berfungsi dengan baik. Dengan menjalankan kode inisialisasi, berbagai parameter pengoperasian LCD ditetapkan untuk memastikan bahwa layar beroperasi dalam mode yang benar dan mampu menampilkan konten secara stabil dan jelas. Jika langkah inisialisasi tidak lengkap atau salah, hal tersebut dapat menyebabkan ketidaknormalan tampilan, seperti gambar tidak dapat ditampilkan, konten tampilan terdistorsi, atau warna tidak tepat.
Kode 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