關於LCD顯示屏顏色的適配方法

2021-10-11 05:25:36 字數 1493 閱讀 6219

一、基礎知識

光的頻率是連續的,可見光的頻率介於380nm ~ 750nm之間,所以從理論上來講光的顏色是無窮無盡的。從硬體實現上顯示所有的可見光是不可能的,那麼顯示器是遵循什麼策略來實現色彩顯示的呢?小時候學過三原色r、g、b可以疊加出各種不同的顏色,這種疊加原理同樣應用在顯示器上。如果使用放大鏡仔細觀察手機、電腦等螢幕,或許就能看出螢幕是由紅色、綠色、藍色三種不同的發光二極體(led)組成的。或許這些led排布方式不同,但都有這3種顏色的led。

這下我們清楚顯示屏顏色由rgb組成的了,那麼乙個畫素點由幾個r、g、b構成呢?這裡涉及到乙個叫色彩深度

現在大部分顯示裝置都是真彩色,色彩深度至少有24位,其中r、g、b各佔8位,這樣能夠顯示出全部色彩。當然有的螢幕色彩深度達到了32位,這是因為它增加8位可用來控制透明度的alpha通道。色彩深度越高,可用的顏色就越多。

二、顏色適配

一般需要使用顏色適配的時候我們已經知道這個顏色是什麼樣子的,或者已經除錯出這種顏色了。比如在做畢業設計的時候,想通過顯示屏全屏顯示出學校的校旗和校訓,如果簡單地把整個轉換成由rgb565組成的影象檔案當然沒問題,但是這樣太佔記憶體空間了。rgb565佔2個位元組的記憶體空間,128*160*2=40kbyte。如果簡單地儲存2張的話需要耗費80kb的儲存空間,這對只有64k flash的stm32f103c8t6來說好似是行不通的。

但方法總比困難多,如果將兩張縮小顯為原來的1/4,每張直接由40kb縮減為10kb,這樣我還是可以接受的。此外,在lcd顯示屏後面預留了spi介面的sd卡讀寫介面,不過設計時沒有使用,而是採用iic型的at24c256(eeprom)作為的儲存介質。縮小後不能佔滿全屏,便想到填充邊緣,這就是寫這篇顏色適配的原因。效果如下圖所示:

將rgb換算成二進位制,即r=0b00000000,g=0b01100111,b=0b10101010

由於使用的rgb565 lcd不是真彩屏,只能捨掉顏色低位的精度(不能還原真實色彩,不過沒辦法),我們取rgb的高5、6、5位,低位補0

得出rgb=0b00000

011001

10101=0x0335  //學校校旗的藍底

筆記 顯示屏LCD

之前有個屏廠家講過背光液晶屏的原理,液晶是特殊狀態。可能不太記得講了什麼,也沒留下ppt,遺憾。後來有一樣機,裝過,觸控螢幕是薄薄一層,下面是顯示屏,從物理上是分離的。這次從網上收集資料,先學習一下顯示屏是什麼。現在,pc顯示屏已經有led 發光方式 屏了。但是貌似手機都是lcd 背光方式 lcd ...

Arduino連線LCD1602顯示屏

材料大麵包板 x1 3腳電位器 x1 lcd 1602 x1 arduino uno x1 接線示意圖 lcd1602 arduino uno 說明 gnd gnd 接地 vcc 5v 5v電源 v0 連線3腳繼電器中間,用於調節對比度 rs 3 隨便接乙個輸出口,方便接線 畫圖 r w gnd 接...

段式LCD液晶顯示屏的玩法

本次任務用華大微控制器hc32l136驅動定製的段式液晶,4com,34seg,1 3偏壓。由於微控制器本身有段式液晶驅動,根據資料手冊可以知道其工作過程及控制方法。過程分2步 1,配置硬體驅動暫存器。2,根據具體液晶情況,取模,定義聯合結構體。步驟1可以檢視資料手冊,根據步驟配置寫程式配置程式如下...