LCD屏的工作原理是什么,主要作用是什么
時間:2023-09-11 來源:華清遠見
一、概述
LCD即Liquid Crystal Display 的首字母縮寫,意為“液態晶體顯示器”,即液晶顯示器。我們在日常的教學活動中,或者企業的開發當中,對于lcd屏幕的需求是很多的,因為無論利用stm32還是應用stmp157a系統級芯片,都需要輸出設備,而lcd就是首選之一。本文將介紹lcd的方方面面,希望能給讀者一些有意義的知識和體驗。
二、LCD液晶顯示器是如何構造的?
LCD 的構造是在兩片平行的玻璃基板當中放置液晶盒,下基板玻璃上設置TFT(薄膜晶體管),上基板玻璃上設置彩色濾光片,通過TFT上的信號與電壓改變來控制液晶分子的轉動方向,從而達到控制每個像素點偏振光出射與否而達到顯示目的。LCD已經替代CRT成為主流,價格也已經下降了很多,并已充分普及。

LCD屏幕包括一層薄薄的液晶材料,夾在玻璃基板上的兩個電極之間,每側有兩個偏振器。偏振片是一種濾光片,它讓特定偏振的光波通過,同時阻擋其他偏振的光波。電極需要透明,因此最受歡迎的材料是ITO(氧化銦錫)。

由于LCD本身不能發光,因此通常將背光放置在LCD屏幕后面,以便在黑暗環境中看到。背光源可以是LED(發光二極管)或CCFL(冷陰極熒光燈)。LED背光最受歡迎。當然,如果你喜歡有彩色顯示器,一層濾色片可以做成一個LCD單元。濾色器由 RGB 顏色組成。您還可以在 LCD 前面添加觸摸面板。
三、LCD的工作原理是什么
第一個大規模生產的LCD面板技術稱為TN(扭曲向列)。LCD背后的原理是,當液晶分子不施加電場時,分子在LCD單元中扭曲90度。當來自環境光或背光的光通過第一偏振器時,光被偏振并被液晶分子層扭曲。當它到達第二個偏振片時,它被阻擋了。查看者看到顯示為黑色。
當對液晶分子施加電場時,它們是未扭曲的。當偏振光到達液晶分子層時,光直接穿過而不會被扭曲。當它到達第二個偏振器時,它也會通過,觀看者看到顯示器是明亮的。由于LCD技術使用電場而不是電流(電子通過),因此功耗低。

四、液晶顯示器的基礎知識
上面介紹的最基本的LCD稱為無源矩陣LCD,主要可以在低端或簡單的設備中找到,如計算器,公用事業儀表,早期數字手表,鬧鐘等。 無源矩陣LCD有很多局限性,例如視角窄,響應速度慢,昏暗,但功耗很大。為了改善缺點,科學家和工程師開發了有源矩陣LCD技術。應用最廣泛的是TFT(薄膜晶體管)LCD技術。基于TFT LCD,開發了更現代的LCD技術。最著名的是IPS(平面切換)LCD。它具有超寬視角,卓越的圖像圖像質量,快速響應,對比度高,老化缺陷少等。IPS液晶顯示器廣泛應用于液晶顯示器,液晶電視,iPhone,平板電腦等。三星甚至徹底改變了LED背光,成為QLED(量子點),以在不需要光線產生更深的黑色的地方關閉LED。

五、不同類型的液晶顯示器
扭曲向列顯示:TN(扭曲向列)LCD的生產可以最頻繁地進行,并在整個行業中使用不同類型的顯示器。這些顯示器最常被游戲玩家使用,因為與其他顯示器相比,它們便宜且響應時間快。這些顯示器的主要缺點是它們的質量以及部分對比度,視角和色彩再現。但是,這些設備足以滿足日常操作。
平面內切換顯示器:IPS顯示器被認為是最好的LCD,因為它們提供良好的圖像質量,更高的視角,鮮艷的色彩精度和差異。這些顯示器主要由平面設計師使用,在其他一些應用中,LCD需要最大的潛在標準來再現圖像和顏色。
垂直對齊面板:垂直對齊 (VA) 面板位于扭曲向列和平面內切換面板技術中的中心任何位置。與TN型顯示器相比,這些面板具有最佳的視角以及具有更高質量功能的色彩再現。這些面板的響應時間很短。但是,這些更合理,更適合日常使用。
與扭曲的向列顯示相比,該面板的結構可生成更深的黑色以及更好的顏色。與TN型顯示器相比,幾種晶體排列可以提供更好的視角。這些顯示器需要權衡,因為與其他顯示器相比,它們很昂貴。而且它們的響應時間慢,刷新率低。
高級條紋場切換 (AFFS):與IPS顯示器相比,AFFS LCD提供最佳性能和廣泛的色彩再現。AFFS的應用非常先進,因為它們可以在不影響寬視角的情況下減少色彩失真。通常,這種顯示器用于高度先進和專業的環境中,例如飛機駕駛艙。
無源和有源矩陣顯示:無源矩陣型LCD與簡單的網格一起工作,因此可以將電荷提供給LCD上的特定像素。一層玻璃層提供列,而另一層玻璃層提供使用透明導電材料(如銦錫氧化物)設計的行。無源矩陣系統具有主要缺點,特別是響應時間慢且電壓控制不準確。顯示器的響應時間主要是指顯示器刷新顯示圖像的能力。
有源矩陣型LCD主要依賴于TFT(薄膜晶體管)。這些晶體管是小型開關晶體管以及放置在玻璃基板上的矩陣內的電容器。當正確的行被激活時,電荷可以沿著確切的列傳輸,以便可以尋址特定的像素,因為列相交的所有其他行都被關閉,只需指定像素旁邊的電容器獲得電荷。
六、與其他顯示器相比的優勢
LCD技術具有輕,薄,低功耗的巨大優勢,使壁掛式電視,筆記本電腦,智能手機,墊子成為可能。在進步的道路上,它消滅了許多顯示技術的競爭。我們的辦公桌上看不到CRT顯示器,家里的等離子顯示器電視也不再了。LCD技術現在主導著顯示器市場。但任何技術都有局限性。
LCD技術的響應時間較慢,特別是在低溫下,視角有限,需要背光。針對LCD的缺點,開發了OLED(有機發光二極管)技術。一些高端電視和手機開始使用AMOLED(有源矩陣有機發光二極管)顯示器。與LCD技術相比,這項尖端技術提供了更好的色彩再現,清晰的圖像質量,更好的色域,更低的功耗。請注意,OLED顯示器包括AMOLED和PMOLED(無源矩陣有機發光二極管)。
七如何用stm32驅動LCD屏幕?
7.1接口:

7.2使用流程圖

7.3例題程序
//配置FSMC
void LCD_FSMC_Config()
{
GPIO_InitTypeDef GPIO_InitStructure;
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef readWriteTiming;
FSMC_NORSRAMTimingInitTypeDef writeTiming;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG, ENABLE);
RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);//使能FSMC時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PF10 推挽輸出,控制背光
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //輸出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化PF10
GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用輸出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化
GPIO_InitStructure.GPIO_Pin = (0X1FF<<7); //PE7~15,AF OUT
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用輸出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PG2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用輸出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PG12
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用輸出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化
GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource2,GPIO_AF_FSMC);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource12,GPIO_AF_FSMC);
readWriteTiming.FSMC_AddressSetupTime = 0XF; //地址建立時間(ADDSET) 16個HCLK 1/168M=6ns*16=96ns
readWriteTiming.FSMC_AddressHoldTime = 0x00; //地址保持時間(ADDHLD)
readWriteTiming.FSMC_DataSetupTime = 60; //數據保存時間 60個HCLK= 6*60=360ns
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
readWriteTiming.FSMC_CLKpision = 0x00;
readWriteTiming.FSMC_DataLatency = 0x00;
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;
writeTiming.FSMC_AddressSetupTime =8; //地址建立時間(ADDSET)9個HCLK =54ns
writeTiming.FSMC_AddressHoldTime = 0x00; //地址保持時間
writeTiming.FSMC_DataSetupTime = 7; //數據保存時間 6ns*9個HCLK=54ns
writeTiming.FSMC_BusTurnAroundDuration = 0x00;
writeTiming.FSMC_CLKpision = 0x00;
writeTiming.FSMC_DataLatency = 0x00;
writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //數據寬度為16bit
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //寫使能
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; //讀寫使用不同的時序
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //讀寫時序
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming; //寫時序
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //初始化FSMC
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE); //使能Bank1
delay_ms(50);
}

