天天看點

LCD如何顯示圖像 - 濤少&

LCD如何顯示圖像

1、LCD顯示主要相關概念

(1)像素(pixel)

整個圖像是由一個個的像素組成的,像素就是一個顯示點。像素就是組成圖像的最基本元素,或者說顯示中可以被控制的最小機關,整個圖像就是由很多個像素組成的。

像素可以被單獨控制,或控制其亮或不亮(單色屏)、或控制其亮度強弱(譬如亮50%,35%,這樣叫灰階屏,以前的黑白電視機)、或控制其顯示一定的顔色(這就

是我們現在最常用的彩色顯示屏)。

總結:像素很重要,整個顯示圖像是由一個個的像素組成的。我們要在顯示器上顯示一個圖像,就是把這個圖像離散化成一個一個的點,然後把各個點的顔色對應在顯示

器的像素上。

(2)像素間距(pitch)

pitch是連續2個像素的像素中心的距離。一般的像素是方形的,是以橫向pitch和縱向的pitch一樣的。但是也有不一樣的。

像素間距會影響螢幕的最佳觀看距離。像素間距大的适合遠距離看,像素間距小的适合近距離看。

(3)分辨率(resolution)

整個螢幕的橫向和縱向的像素個數就叫分辨率,譬如X210開發闆用的螢幕是1024X600。

螢幕尺寸和分辨率無關的,像開發闆的螢幕尺寸是7寸的(純螢幕對角線尺寸是7英寸)。螢幕尺寸和分辨率和像素間距三者之間有關聯。

(4)清晰度

清晰度是一個主觀概念,是人眼對顯示效果的一個主觀判斷。說白了就是人看起來感覺清晰不清晰。

客觀來講,清晰度由分辨率和像素間距共同決定。一般的,螢幕尺寸固定時分辨率越高越清晰,分辨率越低就越不清晰;分辨率固定下,螢幕尺寸越小越清晰,越大越不清晰。

清晰度還由其他很多因素共同決定。

(5)像素深度(bits per pixel,簡稱bpp)

一個像素的顔色在計算機中由多少個位元組資料來描述。計算機中用二進制位來表示一個像素的資料,用來表示一個像素的資料位越多,則這個像素的顔色值更加豐富、分的更細,顔色深度就更深。

一般來說像素深度有這麼幾種:1位、8位、16位、24位、32位。下面會詳細分析這些bpp所代表的含義。

(6)掃描

掃描是一個動作而不是一個名字,掃描就是依次将顔色數值放入螢幕中所有的像素的這個過程。

掃描這個詞是由最早的CRT顯示器遺留下來的,到LCD顯示器的年代本來已經失去意義了,但是我們還是延續着這麼叫。

顯示器的掃描顯示原理依賴于人眼的視覺暫留。隻要顯示器掃描頻率大于人眼的發現頻率,人眼看到的圖像就是恒定的。如果掃描頻率偏小人眼就會看到閃動。(掃描頻率的概念就叫做重新整理率)。

(7)驅動器&控制器

LCD驅動器一般和LCD顯示面闆內建在一起(本來是分開的,做面闆的是隻做面闆的,譬如說三星、LG、台灣的友達、奇美都是做面闆的;驅動器也由專門的IC廠商生産;集

成廠商買來面闆和驅動器後內建在一起做成LCD螢幕),面闆隻負責裡面的液晶分子旋轉透光,面闆需要一定的模拟電信号來控制液晶分子;LCD驅動器晶片負責給面闆提供控制

液晶分子的模拟電信号,驅動器的控制信号(數字信号)來自于自己的數字接口,這個接口就是LCD螢幕的外部接口。

LCD控制器一般內建在SoC内部,他負責通過數字接口向遠端的LCD驅動器提供控制像素顯示的數字信号。LCD控制器的關鍵在于時序,它必須按照一定的時序和LCD驅動器通

信;LCD控制器受SoC控制,SoC會從記憶體中拿像素資料給LCD控制器并最終傳給LCD驅動器。

(8)顯示記憶體(簡稱:顯存)

SoC在記憶體中挑選一段記憶體(一般來說是程式員随便挑選的,但是挑選的時候必須符

合一定規矩),然後通過配置将LCD控制器和這一段記憶體(以後稱為顯存)連接配接起來構成

一個映射關系。一旦這個關系建立之後,LCD控制器就會自動從顯存中讀取像素資料傳輸

給LCD驅動器。這個顯示的過程不需要CPU的參與。

顯示體系建立起來後,CPU就不用再管LCD控制器、驅動器、面闆這些東西了;以後

CPU就隻關心顯存了,因為我隻要把要顯示的圖像的像素資料丢到顯存中,其他的顯示過

程都是硬體自動完成的,不需要CPU幹預,硬體就會自動響應(螢幕上就能自動看到顯示

的圖像了)。

總結:LCD顯示是分為2個階段的:第一個階段就是建立顯示體系的過程,目的就是CPU初

始化LCD控制器使其和顯存聯系起來構成映射;第二個階段就是映射建立之後,此階段主

要任務是将要顯示的圖像丢到顯存中去。

2、顔色在計算機中的表示

(1)顔色的本質

顔色是主觀存在,顔色其實是自然光在人的眼睛中和大腦中産生的一種映像。顔色的本質決定于光的波長。

(2)自然光的顔色是連續的

光的波長是連續的,導緻顔色也是連續的。理論上,隻要你的眼睛分辨能力足夠好,可以在自然界中發現無數中顔色。

(3)計算機中的顔色是離散的

計算機中不可能存儲無數種顔色,是以必須将顔色有限化,是以就用有限種顔色來代表自然界中的無限種顔色。這個理論非常類似于之前學過的AD轉換。

種離散化表達顔色的缺點是不夠真實,漏掉了很多種顔色。是以計算機中所能表達的顔色沒有自然界中豐富(計算機螢幕上顯示的圖像和真實圖像有差别)。

計算機所能表達的顔色種類個數,這個參數叫:像素深度bpp。

(4)常見的像素深度:1位、8位、16位、24位、32位

1位:用1個二進制位來表示顔色,這種就叫單色顯示。示例就是小飯店、理發店門口的LED屏。

8位:用8個二進制位來表示顔色,此時能表示256種顔色。這種叫灰階顯示。這時候是黑

白的,沒有彩色,我們把純白到純黑分别對應255到0,中間的數值對應不同的灰。示例

就是以前的黑白電視機。

16位:用16個二進制位表示顔色,此時能表示65536種顔色。這時候就可以彩色顯示了,

一般是RGB565的顔色分布(用5位二進制表示紅色、用6位二進制表示綠色、用5位二進制

表示藍色)。這種紅綠藍都有的顔色表示法就是一種模拟自然界中所有顔色的表示方式

。但是因為RGB的顔色表達本身二進制位數不夠多(導緻紅綠藍三種顔色本身分的都不夠

細緻),是以這樣顯示的彩色失真比較重,人眼能明顯看到顯示的不真實。

24位:用24個二進制位來表示顔色,此時能表示16777216種顔色。這種表示方式和16位

色原理是一樣的,隻是RGB三種顔色各自的精度都更高了(RGB各8位),叫RGB888。此時

顔色比RGB565更加真實細膩,雖然說比自然界無數種顔色還是少了很多,不過由于人眼

的不理想性是以人眼幾乎不能區分1677萬種顔色和無數種顔色的差别了。于是乎就把這

種RGB888的表示方法叫做真彩色。(RGB565就是假彩色)

32位:總共用32位二進制來表示顔色,其中24位表示紅綠藍三元色(還是RGB888分布)

,剩下8位表示透明度。這種顯色方式就叫ARGB(A是阿爾法,表示透明度),現在PC機

中一般都用ARGB表示顔色。

補充:顔色的組成,三元色(三基色)是RGB,也就是說所有的顔色都可以由紅綠藍三種顔色組成。

3、顔色的編碼方式

上面說的RGB其實是一種能夠顔色的編碼格式,大部分用的都還是這種。除此之外還有一些其他的顔色的編碼格式,例如:YUV

(1)RGB

RGB色彩模式是工業界的一種顔色标準,是通過對紅(R)、綠(G)、藍(B)三個顔色通道的變化以及它們互相之間的疊加來得到各式各樣的顔色的,RGB即是代表紅、

綠、藍三個通道的顔色,這個标準幾乎包括了人類視力所能感覺的所有顔色,是目前運用最廣的顔色系統之一。

主要有16位表示RGB565、24位表示RGB888和32位表示的ARGB(A表示透明度)。

(2)YUV

YUV(亦稱YCrCb)是被歐洲電視系統所采用的一種顔色編碼方法(屬於PAL)。

YUV,分為三個分量,“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色

彩及飽和度,用于指定像素的顔色。與我們熟知的RGB類似,YUV也是一種顔色編碼方法,主要用于電視系統以及模拟視訊領域,它将亮度資訊(Y)與色彩資訊

(UV)分離,沒有UV資訊一樣可以顯示完整的圖像,隻不過是黑白的,這樣的設計很好地解決了彩色電視機與黑白電視的相容問題。并且,YUV不像RGB那樣要

求三個獨立的視訊信号同時傳輸,是以用YUV方式傳送占用極少的頻寬。

主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0。

4、圖像檔案的編碼格式

圖像格式即圖像檔案存放的格式,通常有JPEG、TIFF、RAW、BMP、GIF、PNG等。

由于圖像資料很大,因為對于一副源圖像資料都會進行壓縮之後再進行存儲,也就是說上面的格式其實指的是圖像資料的壓縮格式。

同理,當我們的LCD需要對儲存的一副圖像進行顯示時,則需要做相反的處理,先将資料進行解壓,解壓之後再丢到顯存中去進行顯示。

至于這些壓縮格式算法什麼的,我是一竅不通,當然如果工作當中有這個需求,那就得好好學學。

5、圖檔縮小和放大顯示

(1)圖檔資料源本來是400×200的,但是顯示時我希望顯示成100×50的,這時候就要顯

示函數背景對源圖像進行先縮小,然後再顯示。這時候就需要一個縮小算法。(譬如最

簡單的算法就是抽點采樣,當然還有更加進階的算法)

(2)圖檔資料源是100×50的,但是顯示時希望全屏顯示(800×480),這時候就需要對

源圖像進行放大然後再顯示(當然了顯示出來圖像清晰度肯定比較低),這時候就需要

一種放大算法(譬如插點方式,這也有更加進階的算法)

好了,今天的東西基本上不是我寫的,我是從老師的課程筆記中整理出來的。

參考:《朱友鵬嵌入式Linux開發\1.ARM裸機全集\1.14.ARM裸機第十四部分-LCD顯示器》

發表于

2016-11-12 16:35 

濤少& 

閱讀(8129) 

評論(0) 

編輯 

收藏 

舉報