<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32之TFT-LCD液晶

STM32之TFT-LCD液晶

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏
TFT-LCD即薄膜晶體管液晶顯示器。其英文全稱(chēng)為:Thin Film Transistor-Liquid Crystal Display。TFT-LCD與無(wú)源TN-LCD、STN-LCD的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設置有一個(gè)薄膜晶體管(TFT),可有效地克服非選通時(shí)的串擾,使顯示液晶屏的靜態(tài)特性與掃描線(xiàn)數無(wú)關(guān),因此大大提高了圖像質(zhì)量。TFT-LCD也被叫做真彩液晶顯示器。

TFT液晶原理:


*背光模組:提供光源
*上下偏光片,TFT Glass Substrate,液晶:形成偏振光,控制光線(xiàn)的通過(guò)與否
*彩色濾光片:提供TFT LCD R/G/B(三原色)的來(lái)源
*ITO透明導電層:提供透明的導電通路
*Photo Spacer:提供一個(gè)固定高度給彩色濾光片和TFT Glass Substrate,作為灌入液晶的空間,以及做為上下兩層Glass的支撐

液晶特性:

TFT-LCD使用的液晶為T(mén)N(Twist Nematic)型液晶,分子成橢圓狀。TN型液晶一般是順著(zhù)長(cháng)軸方向串接,長(cháng)軸間彼此平行方式排列;當接觸到槽狀表面時(shí),液晶分子就會(huì )順著(zhù)槽的方向排列與槽中


當液晶被包含在兩個(gè)槽狀表面中間,且槽的方向相互垂直,則液晶分子的排列為:
a)上表面分子:沿著(zhù)a方向;
b)下表面分子:沿著(zhù)b方向;
c)介于上下表面中間的分子:產(chǎn)生旋轉的效應。
因此液晶分子在兩槽狀表面間產(chǎn)生90°的旋轉

當線(xiàn)性偏極光射入上層槽狀表面時(shí),此光線(xiàn)隨著(zhù)液晶分子的旋轉也產(chǎn)生旋轉。
當線(xiàn)性偏極光射出下層槽狀表面時(shí),此光線(xiàn)已經(jīng)產(chǎn)生了90度的旋轉


當在上下表面之間加電壓時(shí),液晶分子會(huì )順著(zhù)電場(chǎng)方向排列,此時(shí)入射光線(xiàn)不再會(huì )旋轉,因而光線(xiàn)直線(xiàn)射出下表面

偏光片特性:
將非偏極光(一般光線(xiàn))過(guò)濾成偏振光。
當非偏極光通過(guò)a方向的偏光片時(shí),光線(xiàn)被過(guò)濾成與a方向平行的線(xiàn)性偏極光
上圖:偏振方向相同,線(xiàn)性偏極光繼續前進(jìn),通過(guò)第二片偏光片時(shí),光線(xiàn)通過(guò)。
下圖:偏振方向不同,通過(guò)第二片時(shí),光線(xiàn)被完全阻擋

偏振光透過(guò)液晶分子,偏振方向發(fā)生旋轉,光線(xiàn)可通過(guò)偏光片


當液晶分子呈如圖方向排列時(shí),光線(xiàn)偏振方向將不再發(fā)生旋轉,最終無(wú)法通過(guò)偏光片

TFT上下各有一片偏振方向垂直的偏光片,背光板發(fā)出的光經(jīng)背光模組散射后,先通過(guò)下層偏光片形成偏振光
之后通過(guò)液晶分子,并由液晶分子的旋轉角度決定通過(guò)液晶分子后的偏振方向
在經(jīng)過(guò)彩色濾光片產(chǎn)生紅、綠、藍三色光,最后通過(guò)上偏光片,并由偏振光偏振方向與偏光片偏振方向夾角決定最終輸出的光強,以形成不同的色彩。



發(fā)光強弱由MOS管控制液晶偏轉角度,從而控制光線(xiàn)出口強弱達到控制色彩目的.
假設240*320分辨率液晶則由于 基本色彩是3原色 所以總共有240*320*3個(gè) MOS管


“像素”(Pixel) 是由 Picture(圖像) 和 Element(元素)這兩個(gè)單詞的字母所組成的,是用來(lái)計算數碼影像的一種單位,如同攝影的相片一樣,數碼影像也具有連續性的濃淡階調,我們若把影像放大數倍,會(huì )發(fā)現這些連續色調其實(shí)是由許多色彩相近的小方點(diǎn)所組成,這些小方點(diǎn)就是構成影像的最小單位“像素”(Pixel)。這種最小的圖形的單元能在屏幕上顯示通常是單個(gè)的染色點(diǎn)。越高位的像素,其擁有的色板也就越豐富,越能表達顏色的真實(shí)感。

每個(gè)點(diǎn)顯示的顏色如何由確定?
由于TFT 液晶我使用的是2.8寸的240*320分辨率(像素),16位真彩顯示(接近自然色)
該模塊采用的是顯尚光電的DST2001PH TFTLCD,DST2001PH的控制器為ILI9320(可能為其他),采用16位的80并口。
驅動(dòng)芯片顯存GRAM與色彩關(guān)系:

由于是16為數據,所以最低5位代表藍色,中間6位為綠色,最高5位為紅色。數值越大,表示該顏色越深。
就是向顯存里面寫(xiě)入不同數據,產(chǎn)生不同的顏色.
常見(jiàn)顏色確定:

利用畫(huà)圖工具里面3原色可能確定需要的顯存數據。


本人使用ALIENTEK MiniSTM32開(kāi)發(fā)板自配2.8寸液晶
液晶驅動(dòng)芯片硬件接口:


采用16位數據線(xiàn)(低了速度太慢,用彩色就沒(méi)什么效果了)。該模塊的80并口有如下一些信號線(xiàn):
CS:TFTLCD片選信號。
WR:向TFTLCD寫(xiě)入數據。
RD:從TFTLCD讀取數據。
D[15:0]:16位雙向數據線(xiàn)。
RST:硬復位TFTLCD。
RS:命令/數據標志(0,讀寫(xiě)命令;1,讀寫(xiě)數據)。

ILI9320常用寄存器指令:


R0,這個(gè)命令,有兩個(gè)功能,如果對它寫(xiě),則最低位為OSC,用于開(kāi)啟或關(guān)閉振蕩器。而如果對它讀操作,則返回的是控制器的型號。這個(gè)命令最大的功能就是通過(guò)讀它可以得到控制器的型號,而我們代碼在知道了控制器的型號之后,可以針對不同型號的控制器,進(jìn)行不同的初始化。因為93xx系列的初始化,其實(shí)都比較類(lèi)似,我們完全可以用一個(gè)代碼兼容好幾個(gè)控制器。
R3,入口模式命令。我們重點(diǎn)關(guān)注的是I/D0、I/D1、AM這3個(gè)位,因為這3個(gè)位控制了屏幕的顯示方向。
//------------------------------------------------------------------------------------------------------------------------------------------
AM:控制GRAM更新方向。當AM=0的時(shí)候,地址以行方向更新。當AM=1的時(shí)候,地址以列方向更新。
I/D[1:0]:當更新了一個(gè)數據之后,根據這兩個(gè)位的設置來(lái)控制地址計數器自動(dòng)增加/減少1,
/--------------------------------------------------------------------------------------------------------------------------------------------



R7:顯示控制命令。該命令CL位用來(lái)控制是8位彩色,還是26萬(wàn)色。為0時(shí)26萬(wàn)色,為1時(shí)八位色。D1、D0、BASEE這三個(gè)位用來(lái)控制顯示開(kāi)關(guān)與否的。當全部設置為1的時(shí)候開(kāi)啟顯示,全0是關(guān)閉。我們一般通過(guò)該命令的設置來(lái)開(kāi)啟或關(guān)閉顯示器,以降低功耗。

R32,R33:設置GRAM的行地址和列地址。R32用于設置列地址(X坐標,0~239),R33用于設置行地址(Y坐標,0~319)。當我們要在某個(gè)指定點(diǎn)寫(xiě)入一個(gè)顏色的時(shí)候,先通過(guò)這兩個(gè)命令設置到改點(diǎn),然后寫(xiě)入顏色值就可以了.

R34:寫(xiě)數據到GRAM命令,當寫(xiě)入了這個(gè)命令之后,地址計數器才會(huì )自動(dòng)的增加和減少。該命令是我們要介紹的這一組命令里面唯一的單個(gè)操作的命令,只需要寫(xiě)入該值就可以了,其他的都是要先寫(xiě)入命令編號,然后寫(xiě)入操作數.

R80~R83:行列GRAM地址位置設置。這幾個(gè)命令用于設定你顯示區域的大小,我們整個(gè)屏的大小為240*320,但是有時(shí)候我們只需要在其中的一部分區域寫(xiě)入數據,如果用先寫(xiě)坐標,后寫(xiě)數據這樣的方式來(lái)實(shí)現,則速度大打折扣。此時(shí)我們就可以通過(guò)這幾個(gè)命令,在其中開(kāi)辟一個(gè)區域,然后不停的丟數據,地址計數器就會(huì )根據R3的設置自動(dòng)增加/減少,這樣就不需要頻繁的寫(xiě)地址了,大大提高了刷新的速度。
//--------------------------------------------------------------------------------------------------------
我們接下來(lái)看看要如何才能驅動(dòng)ALIENTEK TFTLCD模塊,TFTLCD顯示需要的相關(guān)設置步驟如下:
1)設置STM32與TFTLCD模塊相連接的IO。
這一步,先將我們與TFTLCD模塊相連的IO口設置為輸出,具體使用哪些IO口,這里需要根據連接電路以及TFTLCD模塊的設置來(lái)確定。
2)初始化TFTLCD模塊。
其實(shí)這里就是上和上面OLED模塊的初始化過(guò)程差不多。通過(guò)向TFTLCD寫(xiě)入一系列的設置,來(lái)啟動(dòng)TFTLCD的顯示。為后續顯示字符和數字做準備。
3)通過(guò)函數將字符和數字顯示到TFTLCD模塊上。

MiniSTM32開(kāi)發(fā)板的IO口對應關(guān)系如下:
LCD_LED對應PC10;
LCD_CS對應PC9;
LCD _RS對應PC8;
LCD _WR對應PC7;
LCD _RD對應PC6;
LCD _D[17:1]對應PB[15:0];
基本GUI接口函數簡(jiǎn)介(一)
80并口時(shí)序圖:

(一) :
//------寫(xiě)數據函數---------這里我們采用了宏定義的方式,以提高速度(由于顯示圖像寫(xiě)入讀出頻繁):
#define LCD_WR_DATA(data){

LCD_RS_SET; //選擇數據
LCD_CS_CLR; //選擇片
DATAOUT(data); //把數據放入端口
LCD_WR_CLR; //WR寫(xiě)數據來(lái)個(gè)上升沿(將數據寫(xiě)入)
LCD_WR_SET;
LCD_CS_SET; //CS上升沿 寫(xiě)入數據完成
}
上面函數中的‘’是C語(yǔ)言中的一個(gè)轉義字符,用來(lái)連接上下文,因為宏定義只能是一個(gè)串,而當你的串過(guò)長(cháng)(超過(guò)一行的時(shí)候),就需要換行了,此時(shí)就必須通過(guò)反斜杠來(lái)連接上下文。這里的‘’正是起這個(gè)作用
(二):
因為該函數使用頻率不是很高,不使用宏定義
//----向寄存器發(fā)送指令函數------
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR; //選擇指令
LCD_CS_CLR; //選中芯片
DATAOUT(data); //端口放上指令
LCD_WR_CLR; //WR寫(xiě)數據來(lái)個(gè)上升沿(將數據寫(xiě)入)
LCD_WR_SET;
LCD_CS_SET; //CS上啦完成操作
}
(三) :
由下面2個(gè)adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=18&is_app=0&jk=beac235ac5bc9a59&k=%BC%C4%B4%E6%C6%F7&k0=%BC%C4%B4%E6%C6%F7&kdi0=0&luki=5&mcpm=0&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=599abcc55a23acbe&ssp2=1&stid=0&t=tpclicked3_hc&td=1831118&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fbbs%2Fdpj%2D33647%2D1%2Ehtml&urlid=0" id="0_nwl" mpid="0" rel="nofollow" target="_blank">寄存器設置快速I(mǎi)O


//-------讀取寄存器值函數---------
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t;
LCD_WR_REG(LCD_Reg); //寫(xiě)入要讀的寄存器號
GPIOB->CRL=0x88888888; //將端口PORTB設置成輸入模式
GPIOB->CRH=0x88888888;
GPIOB->ODR=0xffff; //端口上拉預備輸入
#ifdef LCD_FAST_IO //判斷快速I(mǎi)O口是否宏定義過(guò)
LCD_RS_SET; //運用快速I(mǎi)O口 (例:#define LCD_CS_SETGPIOC->BSRR=1<<9 //片選口PC9)
LCD_CS_CLR;
LCD_RD_CLR;
LCD_RD_SET; //RD腳產(chǎn)生上升沿
t=DATAIN;
LCD_CS_SET;
#endif
GPIOB->CRL=0x33333333; //恢復輸出狀態(tài)
GPIOB->CRH=0x33333333;
GPIOB->ODR=0xffff;
return t;
}



關(guān)鍵詞: STM32TFTLCD液

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>