Stm32的TFT LCD顯示器控制學習筆記

2021-08-08 20:50:50 字數 2329 閱讀 1677

學習stm32,tft lcd顯示屏控制是很重要的一章,本人在初步學習stm32遇到了很多困難,所以把學習中積累的部分感覺重要的知識點羅列出來。目前常用的tft液晶內部驅動晶元是ili9320,ili9325系列,內部原理基本一致,我用的是ili9320。用stm32驅動液晶,實際上就是驅動ili9320晶元。點亮tft lcd的具體步驟有:

(1)stm32與ili9320晶元管腳的初始化。

void lcd_init(void); /*初始化lcd,也就是初始化lcd控制器ili9320晶元與stm32控制器的管腳連線配置*/其中包括cs:tftlcd片選訊號,wr:向tftlcd寫入訊號,rd:從tftlcd讀取訊號,db(15--0):16位雙向資料線,rst:硬復位tftlcd,rs:命令/資料標誌(0 讀寫命令;1 讀寫資料),tft模組有個控制器,名為ili9320,該控制器自帶視訊記憶體,其視訊記憶體總大小為172820,模組資料線與視訊記憶體的對應關係位565方式

sgram (synchronous graphics random-access memory),同步圖形隨機儲存器,是一種專為顯示卡設計的視訊記憶體、一種圖形讀寫能力較強的視訊記憶體,由sdram改良而成。sgram讀寫資料時不是一一讀取,而是以「塊」(block)為單位,從而減少了記憶體整體讀寫的次數,提高了圖形控制器的效率。同sdram一樣,sgram也分普通sgram與ddr sgram兩種。

r0,這個命令有兩個功能,如果對它寫,則最低位位osc,用於開啟或關閉振盪器,而如果對它讀,返回控制器型號。我們知道了控制器型號,可以針對不同型號的控制器,進行不同對的初始化。

r3,入口模式命令。重點關注i/d0,i/d1,am這三個位,因為這3個位控制了螢幕的顯示方向。am:控制gram更新方向,當am=0的時候,位址以行方向更新,當為1的時候,位址以列方向更新。i/d[1:0]:當更新了乙個資料之後,根據這兩個位的設定來控制位址計數器自動增加/減少1,其關係圖如下

r7,顯示控制命令。該命令cl位用來控制是8位彩色,還是26萬色。為0是26萬色,為1時八位色。d1,d0,basee這三個位用來控制顯示開關與否的。

當全部置1的時候開啟顯示,全0是關閉。我們一般通過該命令的設定來開啟或關閉顯示器,以降低功耗。

r22,(讀/寫)資料(到/從)gram。

r32,r33,設定gram的行位址和列位址。r32用於設定列位址(x座標,0~239),r33用於設定行位址(y座標,0~319)。當我們要在某個指定點寫入乙個顏色的時候,先通過這兩個命令設定到改點,然後寫入顏色值就可以了。

r34,寫資料到gram命令,當寫入了這個命令之後,位址計數器才會自動的增加和減少。

r80~r83,行列gram位址位置設定。這幾個命令用於設定你顯示區域的大小,我們整個屏的大小240*320, 但是有時候我們只需要在其中一部分區域寫入資料,如果用先寫座標,後寫資料這樣的方式來實現,則速度大打折扣。

此時我們可以通過這幾個命令,在其中開闢乙個區域,然後不停地丟資料,位址計數器就會根據r3的設定自動增加/減小,這樣就不需要頻繁的寫位址了,大大提高了重新整理的速度。

(2)具體tftlcd模組功能程式

顯示屏寬度引數定義

#define lcd_w 240

#define lcd_h 320

#define    lcd_led   pcout()//lcd背光          

#define    lcd_cs   pcout() //片選埠      

#define    lcd_rs      pcout()  //資料/命令         

#define    lcd_wr  pcout() //寫資料               

#define    lcd_rd      pcout()  //讀資料        

a.       寫暫存器

首先根據英文版的ili9320 datasheet 描述的關於寫暫存器控制管腳的主要配置。下圖所示:

圖:寫暫存器波形圖

voidlcd_writereg(u16 lcd_reg,u16 lcd_regvalue)

b. 讀暫存器

圖:讀暫存器波形圖

u16 lcd_readreg(u8 lcd_reg)

c.   寫gram

圖:寫gram波形圖

/*讀gram準備過程*/

void lcd_writeram_prepare(void) 

/*讀gram*/

void lcd_writeram(u16 rgb_code)                                 

d.  讀gram

圖:讀gram波形圖

u16 lcd_readram(void)

e.剩下的部分就是控制液晶畫點劃線,顯示影象的內容,跟51時代的控制液晶基本類似。

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

1.tftlcd 簡介 tft lcd 即薄膜電晶體液晶顯示器。tft lcd與無源 tn lcd stn lcd 的簡單矩陣不同,它在液晶顯示屏的每乙個象素上都設定有乙個薄膜電晶體 tft 可有效地克服非選通時的串擾,使顯示液晶屏的靜態特性與掃瞄線數無關,因此大大提高了影象質量。tft lcd 也...

STM32定時器中斷顯示時間

利用stm32的定時器中斷,實現時間的顯示。我們知道利用定時器中斷只能進行tick的計算,然而用來顯示時間我們應該怎麼辦呢?經過專案的實際運用,我發現利用定時器中斷配合串列埠通訊也能實現時間顯示。這種方法應用的前提是,我們的板件不能裝電池無法儲存時鐘,我們的板件會與其他可以儲存時鐘的板件通訊。1 硬...

stm32 卡到b 這裡 STM32的儲存器結構

看完這篇文章你會有什麼收穫?1.理解什麼是記憶體和io統一編址 2.知道stm32的4g記憶體是如何使用的 3.理解變數和記憶體的關係 4.理解對齊編址的必要性 下面進入正文 1.因為記憶體和io統一編址,所以你可以直接操控暫存器來讓io口工作,這是由硬體決定的。編址的工作由位址線來完成,stm32...