STM32_菜鳥學習記錄_TFTLCD屏學習記錄
1.TFTLCD 簡介
TFT-LCD 即薄膜電晶體液晶顯示器。TFT-LCD與無源 TN-LCD、 STN-LCD 的簡單矩陣不同,它在液晶顯示屏的每一個象素上都設定有一個薄膜電晶體( TFT),可有效地克服非選通時的串擾,使顯示液晶屏的靜態特性與掃描線數無關,因此大大提高了影象質量。 TFT-LCD 也被叫做真彩液晶顯示器。ALIENTEK TFTLCD 模組採用 16 位的並方式與外部連線。
學習環境:正點原子STM32F407
模組80並口的訊號線:
CS:TFTLCD的片選訊號
WR:TFTLCD寫入資料
RD:從TFTLCD讀取資料
D[15:0]:16位雙向資料
RST:硬體復位TFTLCD,跟STM32的復位腳連線在一起
RS:命令/資料標誌 (0:讀寫命令; 1:讀寫資料)。
總共有21個IO口,DB1-DB8,DB10-DB17,是相對LCD控制IC標註的。
3.ILI9341 控制器介紹
ILI9341 液晶控制器自帶視訊記憶體,其視訊記憶體總大小為 172800( 24032018/8),即 18 位模式( 26萬色)下的視訊記憶體量。在 16 位模式下, ILI9341 採用 RGB565 格式儲存顏色資料,此時 ILI9341的 18 位資料線與 MCU 的 16 位資料線以及 LCD GRAM 的對應關係如圖:
分別對應著MCU的 D0-D15;
記錄LCD的指令:
0XD3,這是讀取ID的指令,發出0XD3會受到4個引數,最後兩個是代表控制器的數字部分
0X36: 主要關注: MY、 MX、 MV 這三個位,通過這三個位的設定,可以控制整個 ILI9341 的全部掃描方向。
3)0X2A
這是列地址設定指令, 在從左到右,從上到下的掃描方式(預設)下面,該指令用於設定橫座標( x 座標),該指令如表 :
在預設掃描方式時,該指令用於設定 x 座標,該指令帶有 4 個引數,實際上是 2 個座標值:SC 和 EC,即列地址的起始值和結束值, SC 必須小於等於 EC,且 0≤SC/EC≤239。一般在設定 x 座標的時候,我們只需要帶 2 個引數即可,也就是設定 SC 即可,因為如果 EC 沒有變化,我們只需要設定一次即可(在初始化 ILI9341 的時候設定),從而提高速度。
(4)0X2B
是頁地址設定指令, 在從左到右,從上到下的掃描方(預設)下面,該指令用於設定縱座標( y 座標)。該指令如表:
在預設掃描方式時,該指令用於設定 y 座標,該指令帶有 4 個引數,實際上是 2 個座標值:
SP 和 EP,即頁地址的起始值和結束值, SP 必須小於等於 EP,且 0≤SP/EP≤319。一般在設定
y 座標的時候,我們只需要帶 2 個引數即可,也就是設定 SP 即可,因為如果 EP 沒有變化,我
們只需要設定一次即可(在初始化 ILI9341 的時候設定),從而提高速度
(5) 0X2C,該指令是寫 GRAM 指令,在傳送該指令之後,我們便可以往 LCD
的 GRAM 裡面寫入顏色資料了,該指令支援連續寫,指令描述如表
(6)0X2E
該指令是讀 GRAM 指令,用於讀取 ILI9341 的視訊記憶體( GRAM),輸出情況如表:
該指令用於讀取 GRAM,如表 所示,ILI9341在收到該指令後,第一次輸出的是 dummy資料,也就是無效的資料,第二次開始,讀取到的才是有效的 GRAM 資料(從座標: SC, SP開始),輸出規律為:每個顏色分量佔 8 個位,一次輸出 2 個顏色分量。
比如:
第一次輸出是R1G1,隨後的規律為:B1R2G2B2R3G3B3R4G4B4R5G5… 以此類推。如果我們只需要讀取一個點的顏色值,那麼只需要接收到引數 3 即可,如果要連續讀取(利用 GRAM 地址自增),那麼就按照上述規律去接收顏色資料。
5.TFTLCD 模組的使用流程
畫點流程就是:設定座標 -> 寫 GRAM 指令 -> 寫入顏色資料,然後在 LCD 上面,我們就可以看到對應的點顯示我們寫入的顏色了
讀點流程為:設定座標 -> 讀 GRAM 指令 -> 讀取顏色資料,這樣就可以獲取到對應點的顏色資料了。