舉例如下:
/** 改變調色盤為一種顏色
* 輸入引數:
* color: 顏色值,格式為0xaarrggbb /*aa為透明度*/
*/red = (color >> 19) & 0x1f;
green = (color >> 10) & 0x3f;
blue = (color >> 3) & 0x1f;
color = (red << 11) | (green << 5) | blue; // 格式5:6:5
vd[0~23],我們開發板只用了16位。frambuffer記憶體大小為240*2*320
硬體時序學習:
vclk:每來乙個時鐘就向下移動乙個畫素。
vd0~vd23:資料寬度,但是我們只用了16位。
vline:(hysnc,行同步型號,水平方向的,從上一行的行尾調到下一行的行首),
vsync:(垂直同步訊號,從最後一行行尾跳轉到第一行的行首)
vden:有效才列印顏色
每乙個畫素
就是乙個點,每個畫素用多少位來表示顏色。畫素深度是用多少位來表示顏色,如果是16bpp,那麼畫素深度就是16,
當使用畫素深度是16bpp的時候,就只需要把顏色取出來組成16位就可以了,組成方法上面就4行**所寫的,32位的color第四位元組代表透明度,第三位元組代表紅色,第二位元組代表綠色,第一位元組代表藍色,我們取出紅色的高五位,綠色的高六位,藍色的高五位
然和組合成乙個16位的資料剛好和資料頻寬能夠吻合。(資料寬度是24位,這裡我們用16bpp就夠了,其實24bpp應該也可以,只是這樣造成系統負擔更重,而得不償失)。
那麼當使用畫素深度為8pp時候,畫素深度和我們的頻寬不一致,我們的顏色要用16位表示,如果直接用上肯定不可能,那我們就可以選擇用調色盤,調色盤中存放了256種16bpp的顏色,這時候我們color存放的就不是真實的顏色值了,而是存放的是調色盤中256種顏色的索引,成線性關係一一對應,這樣我們大大減輕了系統的負擔。用16bpp還是8bpp這得取決實際情況,16bpp肯定比8pp清晰,但同時帶來的負荷也更加重。
下面是分析的更加詳細,上面紅色部分是自己總結了一下。
對於乙個顯示裝置,資料的更新率正比於畫面的畫素數和色彩深度的乘積。在嵌入式linux系統 中,受處理器資源配置和運算能力的制約,當使用大解析度顯示時(如在一些螢幕尺寸較大的終端上,往往需要640×480以上),需要降低顯示的色彩深度。 否則,由於資料處理負擔過重會造成畫面的抖動和不連貫。這時,
調色盤技術將發揮重要作用。arm9核心的s3c2410在國內的嵌入式領域有著廣泛的應用,晶元中帶有lcd控制器,可支援多種解析度、多種顏色深度的lcd顯示輸出。在此,將
s3c2410
的調色盤技術,以及嵌入式
linux
系統下調色盤顯示的實現方法進行分析。
1 s3c2410調色盤技術概述
1.1 調色盤的概念
在計算機影象技術中,乙個畫素的顏色是由它的r,g,b分量表示的,每個分量又經過量化,乙個畫素總的量化級數就是這個顯示系統的顏色深度。量 化級數越高,可以表示的顏色也就越多,最終的影象也就越逼真。當量化級數達到16位以上時,被稱為真彩色。但是,量化級數越高,就需要越高的資料寬度,給 處理器帶來的負擔也就越重;量化級數在8位以下時,所能表達的顏色又太少,不能夠滿足使用者特定的需求。
為了解決這個問題,可以採取調色盤技術。所謂調色盤,就是在低顏色深度的模式下,在有限的畫素值與rgb顏色之間建立對應關係的乙個線性表。比 如說,從所有的16位彩色中抽取一定數量的顏色,編制索引。當需要使用某種彩色時,不需要對這種顏色的rgb分量進行描述,只需要引用它的索引號,就可以 使使用者選取自己需要的顏色。索引號的編碼長度遠遠小於rgb分量的編碼長度,因此在彩色顯示的同時,也大大減輕了系統的負擔。
以256色調色盤為例,調色盤中儲存256種顏色的rgb值,每種顏色的rgb值是16位。用這256種顏色編制索引時,從ooh~ffh只需 要8位資料寬度,而每個索引所對應的顏色卻是16位寬度的顏色資訊。在一些對色彩種類要求不高的場合,如儀表終端、資訊終端等,調色盤技術便巧妙地解決了 資料寬度與顏色深度之間的矛盾。
1.2 s3c2410中的調色盤
arm9核的s3c2410晶元可通過內建的lcd控制器來實現對lcd顯示的控制。以tft lcd為例,s3c2410晶元的lcd控制器可以對tft lcd提供1位、2位、4位、8位調色盤彩色顯示和16位、24位真彩色顯示,並支援多種不同的螢幕尺寸。
s3c2410的調色盤其實是256個16位的儲存單元,每個單元中儲存有16位的顏色值。根據16位顏色資料中,rgb分量所佔位數的不同, 調色盤還可以採取5:6:5(r:g:b)和5:5:5:1(r:g:b:1)兩種格式。當採用5:6:5(r:g:b)格式時,它的調色盤如表1所示。
表1中,第一列為顏色索引,中間三列是r,g,b三個顏色分量對應的資料位,分別是5位、6位和5位,最後一列是對應顏色條目的實體地址。當採用5:5:5:1(r:g:b:1)格式時,r,g,b三個顏色分量的資料位長度都是5位,最低位為1。
使用者程式設計時,應首先對調色盤進行初始化處理(可由作業系統提供的驅動程式來完成),賦予 256色調色盤相應的顏色值;在進行影象程式設計時,可以將影象物件賦予所需的顏色索引值。程式執行時,由晶元的lcd控制器查詢調色盤,按相應的值進行輸 出。s3c2410晶元影象資料輸出埠vd[23:o]有24位,當使用不同的色彩深度時,這24位資料可以表示乙個或多個點的顏色資訊
調色盤工作原理
來自於 http blog.csdn.net pkeel archive 2007 03 27 1542425.aspx 調色盤工作原理 顯示器可以被設定成16 256 64k 真彩色等顯示模式,前兩種模式需要調色盤。在16或256色模式下,程式必須將想要顯示的顏色正確地設定到調色盤中,這樣才能顯示...
調色盤工作原理
調色盤工作原理 顯示器可以被設定成16 256 64k 真彩色等顯示模式,前兩種模式需要調色盤。在16或256色模式下,程式必須將想要顯示的顏色正確地設定到調色盤中,這樣才能顯示出預期的顏色。如圖為乙個256色顯示模式中的調色盤的工作原理 createpalette 只是建立了邏輯調色盤,此時調色盤...
Linux LCD 驅動調色盤原理
舉例如下 red color 19 0x1f green color 10 0x3f blue color 3 0x1f color red 11 green 5 blue 格式5 6 5 vd 0 23 我們開發板只用了16位。frambuffer記憶體大小為2402320 硬體時序學習 vclk...