本發(fā)明涉及顯示技術(shù)領(lǐng)域,尤其涉及一種在小內(nèi)存嵌入式系統(tǒng)中使用彩色屏幕的方法。
背景技術(shù):
像素由紅、綠、藍(lán)三基色組成,通過(guò)調(diào)節(jié)各基色分量大小即可顯示出各種顏色。在數(shù)字系統(tǒng)中,通過(guò)位(bit)數(shù)對(duì)各基色分量進(jìn)行量化描述,一個(gè)像素各基色位數(shù)總和被稱(chēng)為顏色深度?;炕?jí)數(shù)越高,表示的顏色越豐富,色階越小,顯示的東西越逼真,即顏色深度越深。
通常帶lcd控制器的彩色顯示屏默認(rèn)支持的都是16bit顏色深度。r(紅色)分量占用5bit,g(綠色)分量占用6bit,b(藍(lán)色)分量占用5bit。
現(xiàn)有傳統(tǒng)方法中,若內(nèi)存充裕,則可以在內(nèi)存空間中開(kāi)辟一個(gè)與lcd顯存等大的內(nèi)存區(qū)域(二維數(shù)組),每個(gè)屏幕上的點(diǎn)對(duì)應(yīng)內(nèi)存中兩個(gè)字節(jié),依次排列。更改顯示內(nèi)容時(shí)只修改二維數(shù)組內(nèi)數(shù)據(jù),更改完成后在再點(diǎn)對(duì)點(diǎn)的搬運(yùn)內(nèi)存數(shù)據(jù)到lcd顯存中驅(qū)動(dòng)顯示。假設(shè)驅(qū)動(dòng)分辨率為320×240的屏幕,則需要使用320×240×2=153.6kbyte內(nèi)存空間,這對(duì)于小內(nèi)存的嵌入式系統(tǒng)來(lái)說(shuō),內(nèi)存需求幾乎是不可滿(mǎn)足的。
現(xiàn)有傳統(tǒng)方法中,若內(nèi)存小,則使用屏幕lcd控制器中的顯存,但是這樣會(huì)導(dǎo)致顯示效果不佳,因?yàn)槊看涡薷娘@示內(nèi)容時(shí)通過(guò)修改寫(xiě)指針來(lái)指定位置,故需要在寫(xiě)控制命令和寫(xiě)數(shù)據(jù)之間進(jìn)行來(lái)回切換,使刷屏?xí)r間變長(zhǎng),刷新幀率降低,顯示效果差。且?guī)缀醪豢赡軐?shí)現(xiàn)顯示內(nèi)容的移動(dòng)、放大、縮小等各種變換,因?yàn)樾枰x出顯存內(nèi)容后修改,再之后才能顯示,存在耗時(shí)長(zhǎng)且占用內(nèi)存空間大的問(wèn)題。
現(xiàn)有技術(shù)中,通常使用彩色屏幕作為人機(jī)交互顯示系統(tǒng)均需大內(nèi)存作為支持,在小內(nèi)存嵌入式系統(tǒng)中由于內(nèi)存資源匱乏,一般使用數(shù)碼管、字型符或單色點(diǎn)陣型液晶顯示器作為人機(jī)交互顯示系統(tǒng),受限于顏色固定單一、分辨率較低等缺點(diǎn),顯示內(nèi)容有限、樣式單一,人機(jī)交互界面不友好。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種在小內(nèi)存嵌入式系統(tǒng)中使用彩色屏幕的方法,從而解決現(xiàn)有技術(shù)中存在的前述問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明所述在小內(nèi)存嵌入式系統(tǒng)中使用彩色屏幕的方法,所述方法包括:
s1,根據(jù)即將顯示的目標(biāo)資料,建立目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表之間的映射關(guān)系a及rgb顏色編碼表中顏色編碼與表內(nèi)顏色索引號(hào)之間的映射關(guān)系b,設(shè)置隨機(jī)存取存儲(chǔ)器ram中與所述目標(biāo)資料所需顯示位置相對(duì)應(yīng)的內(nèi)存區(qū)域的顏色索引號(hào);
s2,刷新顯示時(shí),依次遍歷隨機(jī)存儲(chǔ)器ram中顏色索引號(hào),依據(jù)隨機(jī)存取存儲(chǔ)器ram中的顏色索引號(hào)查詢(xún)與目標(biāo)資料存在映射關(guān)系a的rgb顏色編碼值表,根據(jù)顏色索引號(hào)與rgb顏色編碼映射關(guān)系b獲取與顏色索引號(hào)對(duì)應(yīng)的唯一顏色編碼真值;
s3,將所述顏色編碼真值通過(guò)顯示屏驅(qū)動(dòng)接口發(fā)送到顯示屏驅(qū)動(dòng)顯示。
優(yōu)選地,在步驟s1之前還包括以下步驟:根據(jù)界面顯示所需,在只讀存儲(chǔ)器rom中預(yù)設(shè)一組或多組rgb顏色編碼表,任意兩組rgb顏色編碼表中存儲(chǔ)的顏色編碼不完全相同,任意一個(gè)rgb顏色編碼表w內(nèi)的顏色編碼在rgb顏色編碼表w內(nèi)具有唯一顏色索引號(hào)。
優(yōu)選地,步驟s1,具體為:
s11,遍歷目標(biāo)資料像素,根據(jù)目標(biāo)資料在顯示屏上所需顯示的顏色建立所述目標(biāo)資料與只讀存儲(chǔ)器rom中一組rgb顏色編碼表的映射關(guān)系a;
s12,建立rgb顏色編碼表中的顏色編碼與顏色索引號(hào)之間的映射關(guān)系b;
s13,獲取目標(biāo)資料所需顯示顏色的顏色索引號(hào),設(shè)置隨機(jī)存取存儲(chǔ)器ram中與所述目標(biāo)資料所需顯示位置相對(duì)應(yīng)的內(nèi)存值為該顯示位置需顯示顏色的顏色索引號(hào)。
優(yōu)選地,所述rgb顏色編碼值表包括顏色索引號(hào)和rgb顏色編碼值,所述顏色索引號(hào)與所述顏色編碼一對(duì)一設(shè)置。
優(yōu)選地,rgb顏色編碼值表中每個(gè)顏色的索引描述占用log2nbit內(nèi)存,n為rgb顏色編碼值表中rgb顏色編碼數(shù)量。
優(yōu)選地,根據(jù)用戶(hù)更改目標(biāo)資料顯示顏色更換的需求,通過(guò)修改目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表之間的映射關(guān)系a,實(shí)現(xiàn)顯示的目標(biāo)資料顏色更換;具體為:步驟s1中,建立目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表m之間的映射關(guān)系a,當(dāng)獲取用戶(hù)更改目標(biāo)資料顯示顏色更換的請(qǐng)求時(shí),接觸映射關(guān)系a,建立目標(biāo)資料與只讀存儲(chǔ)器rom中除rgb顏色編碼表m外其它任意一個(gè)rgb顏色編碼表之間的映射關(guān)系d。
優(yōu)選地,在內(nèi)存中存儲(chǔ)顯示屏上當(dāng)前顯示顏色的rgb值所對(duì)應(yīng)的顏色索引號(hào)。
優(yōu)選地,所述rgb顏色編碼值表中存儲(chǔ)的顏色的數(shù)量至少為2種。
優(yōu)選地,通過(guò)修改rgb顏色編碼表中顏色編碼與表內(nèi)顏色索引號(hào)之間的映射關(guān)系b,實(shí)現(xiàn)顯示的目標(biāo)資料顏色反轉(zhuǎn):
建立rgb顏色編碼表中顏色編碼b與表內(nèi)顏色索引號(hào)b之間的映射關(guān)系b,在顯示屏顯示目標(biāo)資料時(shí),顏色索引號(hào)b對(duì)應(yīng)的顏色編碼為b;
根據(jù)用戶(hù)的需求,將映射關(guān)系b修改為映射關(guān)系c,所述映射關(guān)系c為rgb顏色編碼表中顏色編碼a與表內(nèi)顏色索引號(hào)b之間的映射關(guān)系,在顯示屏顯示目標(biāo)資料時(shí),隨機(jī)存取存儲(chǔ)器ram中的顏色索引號(hào)b對(duì)應(yīng)獲取的顏色編碼為a實(shí)現(xiàn)顯示。
本發(fā)明的有益效果是:
通過(guò)在內(nèi)存中存儲(chǔ)顏色索引替代直接存儲(chǔ)rgb顏色編碼值,有效降低內(nèi)存資源消耗,使小內(nèi)存嵌入式系統(tǒng)使用較大顯存的彩色屏幕成為可能;
在修改顯示內(nèi)容時(shí),先修改內(nèi)存中的顯存,修改完成后才一次性拷貝到lcd控制器顯存中,因?yàn)椴淮嬖趯?xiě)lcd控制命令與寫(xiě)lcd數(shù)據(jù)之間來(lái)回切換的問(wèn)題,縮短了刷屏?xí)r間,因此不容易察覺(jué)到lcd顯示內(nèi)容的變化過(guò)程,刷屏快,顯示效果好;
通過(guò)變換內(nèi)存中存儲(chǔ)的顯存數(shù)據(jù)(即二維數(shù)組)矩陣,即可在顯示屏幕上很方便的實(shí)現(xiàn)放大、縮小、滾動(dòng)等變化效果;
根據(jù)顯示顏色種類(lèi)需求與內(nèi)存資源情況,自由修改rom存儲(chǔ)器中存儲(chǔ)的rgb顏色編碼數(shù)量和rgb顏色編碼值及其映射關(guān)系,靈活性高。
附圖說(shuō)明
圖1是所述在小內(nèi)存嵌入式系統(tǒng)中使用彩色屏幕的方法中目標(biāo)資料、rom、ram及顯示屏幕的對(duì)應(yīng)關(guān)系。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
實(shí)施例
本實(shí)施例所述在小內(nèi)存嵌入式系統(tǒng)中使用彩色屏幕的方法,所述方法包括:
s1,根據(jù)即將顯示的目標(biāo)資料,建立目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表之間的映射關(guān)系a及rgb顏色編碼表中顏色編碼與表內(nèi)顏色索引號(hào)之間的映射關(guān)系b,設(shè)置隨機(jī)存取存儲(chǔ)器ram中與所述目標(biāo)資料所需顯示位置相對(duì)應(yīng)的內(nèi)存區(qū)域的顏色索引號(hào);
s2,刷新顯示時(shí),依次遍歷隨機(jī)存儲(chǔ)器ram中顏色索引號(hào),依據(jù)隨機(jī)存取存儲(chǔ)器ram中的顏色索引號(hào)查詢(xún)與目標(biāo)資料存在映射關(guān)系a的rgb顏色編碼值表,根據(jù)顏色索引號(hào)與rgb顏色編碼映射關(guān)系b獲取與顏色索引號(hào)對(duì)應(yīng)的唯一顏色編碼真值;
s3,將所述顏色編碼真值通過(guò)顯示屏驅(qū)動(dòng)接口發(fā)送到顯示屏驅(qū)動(dòng)顯示。
更詳細(xì)的解釋說(shuō)明,
(一)在步驟s1之前還包括以下步驟:根據(jù)界面顯示所需,在只讀存儲(chǔ)器rom中預(yù)設(shè)一組或多組rgb顏色編碼表,任意兩組rgb顏色編碼表中存儲(chǔ)的顏色編碼不完全相同,任意一個(gè)rgb顏色編碼表w內(nèi)的顏色編碼在rgb顏色編碼表w內(nèi)具有唯一顏色索引號(hào)。各rgb顏色編碼表中顏色編碼與索引號(hào)之間的映射關(guān)系不完全相同。
設(shè)計(jì)者可根據(jù)需要在撰寫(xiě)代碼的過(guò)程中在只讀存儲(chǔ)器rom中設(shè)置所需的多個(gè)rgb顏色編碼值,在使用過(guò)程中,根據(jù)要求,在一次運(yùn)行中調(diào)用所需的一個(gè)rgb顏色編碼值,實(shí)現(xiàn)了顏色的自由定義、靈活性高。
所述rgb顏色編碼值表中存儲(chǔ)的顏色的數(shù)量至少為2種。顏色數(shù)量根據(jù)需要預(yù)先設(shè)置,不局限與傳統(tǒng)的雙色屏的兩色。
(二)步驟s1,s11,遍歷目標(biāo)資料像素,根據(jù)目標(biāo)資料在顯示屏上所需顯示的顏色建立所述目標(biāo)資料與只讀存儲(chǔ)器rom中一組rgb顏色編碼表的映射關(guān)系a;
s12,建立rgb顏色編碼表中的顏色編碼與顏色索引號(hào)之間的映射關(guān)系b;
s13,獲取目標(biāo)資料所需顯示顏色的顏色索引號(hào),設(shè)置隨機(jī)存取存儲(chǔ)器ram中與所述目標(biāo)資料所需顯示位置相對(duì)應(yīng)的內(nèi)存值為該顯示位置需顯示顏色的顏色索引號(hào)。
所述rgb顏色編碼值表包括顏色索引號(hào)和rgb顏色編碼值,所述顏色索引號(hào)與所述顏色編碼一對(duì)一設(shè)置。rgb顏色編碼值表中每個(gè)顏色的索引描述占用log2nbit內(nèi)存,n為rgb顏色編碼值表中rgb顏色編碼數(shù)量。
在隨機(jī)存取存儲(chǔ)器ram中存儲(chǔ)像素rgb顏色編碼真值的索引號(hào),有效減小內(nèi)存占用。
當(dāng)更換目標(biāo)資料時(shí),先修改隨機(jī)存取存儲(chǔ)器ram中存儲(chǔ)的索引號(hào),然后在進(jìn)行后續(xù)操作,刷新顯示速度快。
(三)目標(biāo)資料顯示顏色的靈活展示
3.1顏色更換
根據(jù)用戶(hù)更改目標(biāo)資料顯示顏色更換的需求,通過(guò)修改目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表之間的映射關(guān)系a,實(shí)現(xiàn)顯示的目標(biāo)資料顏色更換;具體為:步驟s1中,建立目標(biāo)資料與只讀存儲(chǔ)器rom中rgb顏色編碼表m之間的映射關(guān)系a,當(dāng)獲取用戶(hù)更改目標(biāo)資料顯示顏色更換的請(qǐng)求時(shí),接觸映射關(guān)系a,建立目標(biāo)資料與只讀存儲(chǔ)器rom中除rgb顏色編碼表m外其它任意一個(gè)rgb顏色編碼表之間的映射關(guān)系d。
如本領(lǐng)域技術(shù)人員公知,上述設(shè)置——目標(biāo)資料與rgb顏色編碼表對(duì)應(yīng)關(guān)系的靈活修改,實(shí)現(xiàn)了目標(biāo)資料顯示顏色的更換。
如圖1所示,當(dāng)前目標(biāo)資料與顏色表1存在映射關(guān)系a,當(dāng)用戶(hù)需要將目標(biāo)資料的顯色進(jìn)行更換,增加另兩種顏色時(shí),則先解除目標(biāo)資料與顏色表1存在映射關(guān)系a,然后,建立目標(biāo)資料與顏色表2存在映射關(guān)系d,則在顯示目標(biāo)資料是,將會(huì)顯示四種顏色。
3.2顏色反轉(zhuǎn)
通過(guò)修改rgb顏色編碼表中顏色編碼與表內(nèi)顏色索引號(hào)之間的映射關(guān)系b,實(shí)現(xiàn)顯示的目標(biāo)資料顏色反轉(zhuǎn):
建立rgb顏色編碼表中顏色編碼b與表內(nèi)顏色索引號(hào)b之間的映射關(guān)系b,在顯示屏顯示目標(biāo)資料時(shí),顏色索引號(hào)b對(duì)應(yīng)的顏色編碼為b;
根據(jù)用戶(hù)的需求,將映射關(guān)系b修改為映射關(guān)系c,所述映射關(guān)系c為rgb顏色編碼表中顏色編碼a與表內(nèi)顏色索引號(hào)b之間的映射關(guān)系,在顯示屏顯示目標(biāo)資料時(shí),隨機(jī)存取存儲(chǔ)器ram中的顏色索引號(hào)b對(duì)應(yīng)獲取的顏色編碼為a實(shí)現(xiàn)顯示。
如圖1所示,當(dāng)前目標(biāo)資料與顏色表1存在映射關(guān)系a,顏色表1中0與白色編碼存在映射關(guān)系,1與黑色編碼存在映射關(guān)系,當(dāng)用戶(hù)需要目標(biāo)資料在顯示時(shí),顯示色彩反轉(zhuǎn)時(shí),則修改顏色表1中顏色與顏色索引號(hào)的映射關(guān)系,即修改為顏色表1中1與白色編碼存在映射關(guān)系,0與黑色編碼存在映射關(guān)系。
(四)在內(nèi)存中存儲(chǔ)顯示屏上當(dāng)前顯示顏色的rgb值所對(duì)應(yīng)的顏色索引號(hào)。
當(dāng)需要進(jìn)行對(duì)當(dāng)前顯示內(nèi)容做移動(dòng)、拉伸、縮放等變換時(shí),只需要變換內(nèi)存中索引號(hào)位置,之后刷新顯示即可。不需要先讀出顯示屏幕內(nèi)容,之后在修改,再進(jìn)行顯示。減少讀取屏幕內(nèi)容這一步,實(shí)現(xiàn)變換方便快速。
在小內(nèi)存嵌入式系統(tǒng)中,由于顯示需要的顏色種類(lèi)不需要那么多,因此可以將需要使用的這幾種顏色進(jìn)行編號(hào),顏色索引號(hào)與需要顯示的顏色一一對(duì)應(yīng),在內(nèi)存ram中只存儲(chǔ)顏色索引號(hào)值,在只讀存儲(chǔ)器rom中存儲(chǔ)需要使用的rgb顏色編碼真值表。在實(shí)際驅(qū)動(dòng)顯示時(shí)通過(guò)隨時(shí)存取存儲(chǔ)器ram中的索引號(hào)在rom中顏色真值表中查找相應(yīng)的rgb顏色編碼真值,再通過(guò)驅(qū)動(dòng)端口將顏色編碼真值發(fā)送給顯示屏驅(qū)動(dòng)顯示。因?yàn)樗饕?hào)的編碼長(zhǎng)度遠(yuǎn)小于rgb顏色分量編碼長(zhǎng)度,因此通過(guò)這種方式可以有效降低內(nèi)存使用量,且顏色與顏色的分辨率(顏色與顏色的色差分辨度)仍然保持為原來(lái)的水平。
假設(shè)滿(mǎn)足界面顯示需求需要四種顏色,分別是純白、純紅、純綠、純藍(lán)?,F(xiàn)設(shè)定顏色索引與rgb顏色編碼真值對(duì)應(yīng)關(guān)系如表1所示,描述4種顏色的索引需要占用2bit內(nèi)存。也即使用本專(zhuān)利方法每像素只需要占用2bit內(nèi)存空間,驅(qū)動(dòng)整個(gè)320x240分辨率的屏幕只需要19.2kbyte內(nèi)存。若只需要雙色,則只需要9.6kbyte內(nèi)存空間。這相比于傳統(tǒng)的153.6kbyte的內(nèi)存使用量分別降低了87.5%、93.75%。
依此類(lèi)推,若顯示系統(tǒng)需要n中顏色進(jìn)行界面表達(dá),則每像素只需要log2nbit進(jìn)行描述。假若系統(tǒng)界面開(kāi)發(fā)需要256中顏色,則每像素需要8bit進(jìn)行描述,內(nèi)存消耗也縮減了50%。rgb顏色編碼數(shù)量越少對(duì)內(nèi)存的占用需求越小,可以根據(jù)具體需求進(jìn)行靈活調(diào)整。
表1為顏色編碼真值表
表2為顏色編碼表
表2表示使用本申請(qǐng)中所述方法在小內(nèi)存嵌入式系統(tǒng)中彩色屏幕展示顏色所占用的內(nèi)存。
表3為現(xiàn)有技術(shù)中內(nèi)存占用的格式
因?yàn)樾?nèi)存嵌入式系統(tǒng)一般用于對(duì)于顏色種類(lèi)要求不高的領(lǐng)域,人機(jī)交互界面也不需要像windows系統(tǒng)界面一樣絢麗多彩,故,顯示界面開(kāi)發(fā)只需要少量幾種顏色即可,因此可以使用顏色深度來(lái)?yè)Q取顯示界面對(duì)內(nèi)存的占用率。即本申請(qǐng)通過(guò)改變顏色深度或顏色種類(lèi)實(shí)現(xiàn)降低內(nèi)存消耗。
通過(guò)采用本發(fā)明公開(kāi)的上述技術(shù)方案,得到了如下有益的效果:
通過(guò)在內(nèi)存中存儲(chǔ)顏色索引替代直接存儲(chǔ)rgb顏色編碼值,有效降低內(nèi)存資源消耗,使小內(nèi)存嵌入式系統(tǒng)使用彩色屏幕成為可能;
在修改顯示內(nèi)容時(shí),先修改內(nèi)存中的顯存,修改完成后才一次性拷貝內(nèi)存中顯示數(shù)據(jù)到lcd控制器顯存中,因?yàn)椴淮嬖趯?xiě)lcd控制命令與寫(xiě)lcd數(shù)據(jù)之間來(lái)回切換的問(wèn)題,縮短了刷屏?xí)r間。因此不容易察覺(jué)到lcd顯示內(nèi)容的變化過(guò)程,顯示效果好;
通過(guò)變換內(nèi)存中存儲(chǔ)的顯存數(shù)據(jù)(即二維數(shù)組)矩陣,即可在顯示屏幕上很方便的實(shí)現(xiàn)放大、縮小、滾動(dòng)等變化效果;
根據(jù)顯示顏色種類(lèi)需求與內(nèi)存資源情況,自由修改rom存儲(chǔ)器中存儲(chǔ)的rgb顏色編碼數(shù)量和rgb顏色編碼值及映射關(guān)系,靈活性高。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視本發(fā)明的保護(hù)范圍。