Mã khởi tạo của màn hình TFT LCD chủ yếu dùng để thiết lập các thông số làm việc và trạng thái của màn hình để đảm bảo màn hình có thể hiển thị hình ảnh và văn bản chính xác. Vai trò và nguyên lý của mã khởi tạo chủ yếu bao gồm các khía cạnh sau:
Đặt lại phần cứng
Khi bắt đầu khởi tạo, thao tác thiết lập lại phần cứng thường được thực hiện (bằng cách kéo chân thiết lập lại xuống thấp và lên cao), đảm bảo rằng màn hình LCD bắt đầu hoạt động từ trạng thái đã biết.
Cấu hình giao diện
Mã khởi tạo thường cấu hình giao diện truyền thông (ví dụ SPI, I2C hoặc giao diện song song) giữa LCD và vi điều khiển. Các mô-đun LCD khác nhau có thể hỗ trợ các giao diện truyền thông khác nhau, cần được cấu hình chính xác trong quá trình khởi tạo để dữ liệu tiếp theo có thể được truyền tải trơn tru.
Cấu hình điện
LCD thường cần được cấu hình với các thông số công suất như điện áp cung cấp, điện áp phân cực và bơm điện tích. Các cấu hình này ảnh hưởng trực tiếp đến độ sáng, độ tương phản và độ ổn định của màn hình.
Cài đặt chế độ hiển thị
Điều này bao gồm việc thiết lập độ phân giải màn hình, độ sâu màu, hướng quét (ngang hoặc dọc), định dạng pixel (RGB565, RGB666, v.v.) và các thông số khác liên quan đến hiển thị hình ảnh.
Đăng ký cấu hình
Trong quá trình khởi tạo, các giá trị cụ thể cần được ghi vào các thanh ghi điều khiển khác nhau của LCD, nơi điều khiển các chức năng khác nhau của màn hình, chẳng hạn như điều chỉnh độ tương phản, hiệu chỉnh gamma, điều chỉnh độ sáng, cài đặt định dạng màu, v.v.
Thao tác xóa màn hình
Khi kết thúc quá trình khởi tạo, thường sẽ thực hiện một thao tác xóa, nghĩa là tất cả các điểm ảnh trên màn hình được đặt thành đen hoặc trắng để đảm bảo màn hình sạch và không còn nội dung hiển thị nào sót lại.
Bật màn hình
Sau khi hoàn tất cấu hình trên, bước cuối cùng thường là bật chức năng hiển thị để màn hình LCD có thể bắt đầu nhận và hiển thị dữ liệu hình ảnh.
Tóm tắt
Mã khởi tạo là cơ sở để màn hình LCD có thể hoạt động bình thường. Bằng cách thực hiện mã khởi tạo, các thông số hoạt động khác nhau của LCD được thiết lập để đảm bảo màn hình hoạt động ở chế độ chính xác và có thể hiển thị nội dung ổn định và rõ ràng. Nếu bước khởi tạo không đầy đủ hoặc sai, có thể dẫn đến hiển thị bất thường, chẳng hạn như không thể hiển thị hình ảnh, nội dung hiển thị bị méo hoặc màu sắc không chính xác.
Mã 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