久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 56858|回復: 10
收起左側

STM32之TFT-LCD液晶學習

  [復制鏈接]
ID:70941 發表于 2015-4-19 02:38 | 顯示全部樓層 |閱讀模式
TFT-LCD即薄膜晶體管液晶顯示器。其英文全稱為:Thin Film Transistor-Liquid Crystal Display。TFT-LCD與無源TN-LCD、STN-LCD的簡單矩陣不同,它在液晶顯示屏的每一個象素上都設置有一個薄膜晶體管(TFT),可有效地克服非選通時的串擾,使顯示液晶屏的靜態特性與掃描線數無關,因此大大提高了圖像質量。TFT-LCD也被叫做真彩液晶顯示器。

TFT液晶原理:


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

液晶特性:

TFT-LCD使用的液晶為TNTwist Nematic)型液晶,分子成橢圓狀。TN型液晶一般是順著長軸方向串接,長軸間彼此平行方式排列;當接觸到槽狀表面時,液晶分子就會順著槽的方向排列與槽


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

當線性偏極光射入上層槽狀表面時,此光線隨著液晶分子的旋轉也產生旋轉。
    當線性偏極光射出下層槽狀表面時,此光線已經產生了90度的旋轉


當在上下表面之間加電壓時,液晶分子會順著電場方向排列,此時入射光線不再會旋轉,因而光線直線射出下表面  

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

偏振光透過液晶分子,偏振方向發生旋轉,光線可通過偏光片


當液晶分子呈如圖方向排列時,光線偏振方向將不再發生旋轉,最終無法通過偏光片

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



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


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

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

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

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


本人使用ALIENTEK MiniSTM32開發板自配2.8寸液晶
液晶驅動芯片硬件接口:


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

ILI9320常用寄存器指令:


R0,這個命令,有兩個功能,如果對它寫,則最低位為OSC,用于開啟或關閉振蕩器。而如果對它讀操作,則返回的是控制器的型號。這個命令最大的功能就是通過讀它可以得到控制器的型號,而我們代碼在知道了控制器的型號之后,可以針對不同型號的控制器,進行不同的初始化。因為93xx系列的初始化,其實都比較類似,我們完全可以用一個代碼兼容好幾個控制器。
R3,入口模式命令。我們重點關注的是I/D0、I/D1、AM這3個位,因為這3個位控制了屏幕的顯示方向。
//------------------------------------------------------------------------------------------------------------------------------------------

AM:控制GRAM更新方向。當AM=0的時候,地址以行方向更新。當AM=1的時候,地址以列方向更新。
I/D[1:0]:當更新了一個數據之后,根據這兩個位的設置來控制地址計數器自動增加/減少1,
/--------------------------------------------------------------------------------------------------------------------------------------------



R7:顯示控制命令。該命令CL位用來控制是8位彩色,還是26萬色。為0時26萬色,為1時八位色。D1、D0、BASEE這三個位用來控制顯示開關與否的。當全部設置為1的時候開啟顯示,全0是關閉。我們一般通過該命令的設置來開啟或關閉顯示器,以降低功耗。

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

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

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

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

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

LCD_RS_SET;\                              //選擇數據      
LCD_CS_CLR;\                             //選擇片
DATAOUT(data);\                         //把數據放入端口
LCD_WR_CLR;\                           //WR寫數據來個上升沿(將數據寫入)
LCD_WR_SET;\
LCD_CS_SET;\                               //CS上升沿 寫入數據完成
}
上面函數中的‘\’是C語言中的一個轉義字符,用來連接上下文,因為宏定義只能是一個串,而當你的串過長(超過一行的時候),就需要換行了,此時就必須通過反斜杠來連接上下文。這里的‘\’正是起這個作用
(二):
因為該函數使用頻率不是很高 ,不使用宏定義
//----向寄存器發送指令函數------
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR;       //選擇指令
LCD_CS_CLR;       //選中芯片
DATAOUT(data);   //端口放上指令
LCD_WR_CLR;      //WR寫數據來個上升沿(將數據寫入)
LCD_WR_SET;
LCD_CS_SET;       //CS上啦完成操作
}
(三) :
由下面2個寄存器設置快速IO


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



















評分

參與人數 2黑幣 +20 收起 理由
1109 + 15 很給力!
kaishuiping1314 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

ID:77562 發表于 2015-4-20 23:59 | 顯示全部樓層
# 很不錯# 51黑有你更精彩!!
回復

使用道具 舉報

ID:38212 發表于 2015-4-21 21:00 | 顯示全部樓層
不錯!!!!!!!!!!
回復

使用道具 舉報

ID:137898 發表于 2016-8-30 09:26 | 顯示全部樓層
原理很形象
回復

使用道具 舉報

ID:137903 發表于 2016-8-30 09:54 | 顯示全部樓層
不錯  很有用
回復

使用道具 舉報

ID:99453 發表于 2016-9-6 18:43 | 顯示全部樓層
2.4寸和這個類似嗎
回復

使用道具 舉報

ID:247847 發表于 2017-11-10 19:14 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:412044 發表于 2018-10-27 09:54 | 顯示全部樓層
一直不明白液晶顯示屏的讀操作是什么意思,想要在屏幕上顯示字符或者顏色直接寫入相應的位置就行了,為什么還要讀數據和命令呢?這不是多此一舉嗎?大神求解釋啊,這個問題困擾了我好久
回復

使用道具 舉報

ID:517951 發表于 2024-8-17 15:38 | 顯示全部樓層
火云白羽 發表于 2018-10-27 09:54
一直不明白液晶顯示屏的讀操作是什么意思,想要在屏幕上顯示字符或者顏色直接寫入相應的位置就行了,為什么 ...

在液晶屏上顯示圖片,文字等信息的時候, 都是通過寫操作完成的. 至于為什么要讀取內容, 主要是兩個目的: 第一: 讀取可以獲得液晶屏驅動IC的id號. 第二: 讀回來顯示內容, 做一些運算, 可以完成一些特效,如疊加兩個圖片,達到兩個圖層顯示的特效.
回復

使用道具 舉報

ID:1110792 發表于 2025-2-26 19:43 | 顯示全部樓層
描述詳細,回答及時,有幫助,謝謝!
回復

使用道具 舉報

ID:1145041 發表于 2025-3-25 16:21 | 顯示全部樓層
感謝分享,TFT液晶屏的原理解釋的非常到位!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 97视频在线观看网站 | 日本中文在线视频 | 国产精品久久久久久久久久久久 | 国产性色视频 | 久久99视频精品 | 国产精品一区二区三区久久久 | av一级在线观看 | 精国产品一区二区三区 | 黄免费看 | 91视频一区 | 99久久影院 | 一级做a | 亚洲国产精品视频 | 黄色成人亚洲 | 国产在线麻豆精品入口 | 午夜精品一区二区三区免费视频 | 免费看色 | 精精久久| 精品亚洲永久免费精品 | av在线亚洲天堂 | 久久久国产一区 | 在线免费av电影 | 午夜精品视频在线观看 | 一级a性色生活片久久毛片 午夜精品在线观看 | 欧美激情综合 | 国产精品免费一区二区三区四区 | 久久国产免费 | 一区二区三区在线 | a在线免费观看 | 亚洲国产成人久久久 | 波多野结衣二区 | 韩日一区二区三区 | 一区二区三区在线 | 欧美日韩亚洲一区 | 国产精品一区二区无线 | 日韩在线欧美 | 看片天堂| 激情黄色在线观看 | 日韩国产一区 | 不卡视频在线 | 国产偷自视频区视频 |