STM32 菜鳥學習記錄 TFTLCD屏學習記錄

2021-09-01 04:04:51 字數 2501 閱讀 4016

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 的全部掃瞄方向。

這是列位址設定指令, 在從左到右,從上到下的掃瞄方式(預設)下面,該指令用於設定橫座標( 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,隨後的規律為:b1r2g2b2r3g3b3r4g4b4r5g5… 以此類推。如果我們只需要讀取乙個點的顏色值,那麼只需要接收到引數 3 即可,如果要連續讀取(利用 gram 位址自增),那麼就按照上述規律去接收顏色資料。

5.tftlcd 模組的使用流程

畫點流程就是:設定座標 -> 寫 gram 指令 -> 寫入顏色資料,然後在 lcd 上面,我們就可以看到對應的點顯示我們寫入的顏色了

讀點流程為:設定座標 -> 讀 gram 指令 -> 讀取顏色資料,這樣就可以獲取到對應點的顏色資料了。

stm32學習記錄

讓自己別忘了大學裡學的東西,那麼就把它記錄下下來,效率會比忘記然後重新再去找資料再重頭學高的多 先講講定時器的基礎定時功能 1.先做乙個形象的比喻 手錶 秒鐘 時鐘 定時器 定時器內部時鐘 定時器輸出時鐘 它們倆基本相同,不同的是,對於手錶是秒鐘和分鐘之間的進製是固定為60,而對於定時器,定時器內部...

stm32菜鳥學習筆記(1)

1.標頭檔案中,使用 ifndef define endif 可以避免標頭檔案內容重讀定義。2.mdk 編譯bug 要以回車結尾,不然會有warning。3.呼叫韌體庫必宣告的標頭檔案 include stm32f10x.h 識別符號為所定義的巨集名。字串 可以是常數 表示式 格式串等。例如 def...

stm32學習記錄(一)

介紹stm32什麼的就不說了,直接從點亮led開始吧 在進行程式設計前,需要知道 1.如果要使用stm32的io口,需要先對io口進行初始化。這個初始化函式包括以下幾個部分 gpio inittypedef gpio initstructure 定義乙個結構體,必須放在開頭 rcc ahb1peri...