當(dāng)前位置:首頁 > 顯示光電 > 顯示光電
[導(dǎo)讀]摘要: 以中文液晶顯示模塊CM320240-7為例, 給出了使用LCD顯示模塊CM320240-7來實現(xiàn)文本、圖形和實時曲線顯示的系統(tǒng)設(shè)計方法。0 引言為了提高顯示程序的可讀性和可維護(hù)性, 軟件程序通常采用C語言來編寫。從總體上說

摘要: 以中文液晶顯示模塊CM320240-7為例, 給出了使用LCD顯示模塊CM320240-7來實現(xiàn)文本、圖形和實時曲線顯示的系統(tǒng)設(shè)計方法。

0 引言

為了提高顯示程序的可讀性和可維護(hù)性, 軟件程序通常采用C語言來編寫。從總體上說, 液晶顯示軟件的編程主要分為主程序、液晶顯示模塊、鍵盤輸入模塊和通信模塊等。其中主程序主要完成初始化、鍵盤掃描等; 鍵盤輸入模塊主要完成各功能鍵的按鍵響應(yīng); 液晶模塊主要完成菜單界面的切換顯示; 通信模塊主要實現(xiàn)數(shù)據(jù)的接收與發(fā)送。本文重點(diǎn)介紹液晶顯示部分的內(nèi)容。

液晶顯示的內(nèi)容主要是一些用戶關(guān)心的實時參數(shù)和狀態(tài), 其基本操作流程為: 初始化、清屏、顯示。初始化主要是復(fù)位液晶, 等待對液晶進(jìn)行操作; 清屏主要是清除掉液晶屏上所顯示的內(nèi)容, 為下一次顯示的內(nèi)容做準(zhǔn)備; 顯示主要是顯示當(dāng)前想要顯示的內(nèi)容。

1 中文液晶顯示模塊CM320240-7

中文液晶顯示模塊CM320240-7是一個中英文文字與繪圖模式的點(diǎn)矩陣液晶顯示模塊, 其內(nèi)建有12Kbyte的ROM字型碼, 可以顯示中文字型,數(shù)字符號, 英日歐文等字母。同時, 該模塊還內(nèi)建雙圖層的顯示內(nèi)存, 可支持文字與繪圖兩種混合顯示模式。并可提供全角(16×16) 與半角(×8)文字顯示模式。CM320240-7的最大特點(diǎn)就是在強(qiáng)光照射下, 用戶依然可以清晰地看到屏幕上顯示的內(nèi)容, 因而非常適合在戶外使用。

CM320240-7可以很方便地與ARM9相連接。它具有24個管腳, 其中有8位數(shù)據(jù)線(DB0~DB7),6 位控制線(RS-數(shù)據(jù)/命令控制, WR-讀寫控制,CS2-片選2, CS1-片選1, EN-使能端, /RST-復(fù)位端, ) , 4 位電源線( AVSS, AVDD, VSS,VDD), 2位狀態(tài)線(BUSY-用以回應(yīng)模塊內(nèi)部的執(zhí)行使用狀況, INT-用以回應(yīng)模塊內(nèi)部的中斷狀況), 同時包括背光源正、負(fù)端(LED+、LED-),LCD驅(qū)動電源輸入端和輸出端(V0、VEE)。

2 字符和漢字的顯示

對于點(diǎn)陣液晶顯示器來說, 漢顯菜單的設(shè)計就是如何通過編程將漢字按一定的格式在屏幕上顯示出來。

在LCD上顯示字符和漢字之前, 通常都需要先提取點(diǎn)陣碼。由于要顯示的漢字和字符非常多, 而且它們是任意的, 因而必須要有常用的字符和漢字字庫。由于ASCⅡ字符字庫比較小, 一般的字模軟件就可以生成, 故筆者使用的軟件是任意點(diǎn)陣字體生成器, 其操作界面如圖1所示。


 

圖1 任意點(diǎn)陣字體生成器的操作界面

任意點(diǎn)陣字體生成器軟件界面風(fēng)格簡潔, 操作簡便。常用漢字和字符的ASCⅡ碼保存在以.dat為后綴的文件里。故以打開文件的方式就可取得漢字和字符的ASCⅡ碼, 其操作語句如下:

fp_ST_16_08_ASC =fopen ( " /mnt/Nand1/ST_16_08_ASC.Dat" ," r")

有關(guān)在文本和圖形顯示方式下寫入字符和漢字的方法, 在與顯示有關(guān)的相關(guān)資料中已經(jīng)介紹得很清楚。這里給出的是一個在本程序中用到的顯示漢字的函數(shù)。通過這個函數(shù), 可以將想要顯示的任意漢字和字符顯示在液晶屏幕的任意位置上。具體如下:

static void HanZi ( U32 x, U8 y, U8 *data, U8size, U8 reverse_log)

其中, x為橫坐標(biāo), y為縱坐標(biāo), *data為數(shù)據(jù)內(nèi)容, size為字體, reverse_log為反白標(biāo)記。

3 圖形曲線的顯示

3.1 描點(diǎn)

對屏幕上每一個點(diǎn)進(jìn)行繪制是繪圖的基本條件。在用液晶顯示器顯示圖形曲線時, 首先要給屏幕上的每一個點(diǎn)分配一個二維的坐標(biāo)。對于CM320240-7所用的320×240點(diǎn)陣液晶, 其左上角第一個點(diǎn)的坐標(biāo)為(0, 0), 右下角最后一個點(diǎn)的坐標(biāo)為(319, 239)。這樣, 根據(jù)二維坐標(biāo)就可以計算出各點(diǎn)所對應(yīng)的內(nèi)存單元, 并給其賦值“1”。而中文液晶顯示模塊在顯示圖形的時候,一般是以字符映像(Bit Map) 的方式寫入RAM,若RAM的某個位置被填滿為“1”, 其LCD面板相對應(yīng)的位置就會被顯示出黑點(diǎn)。因此, 在RAM上所存儲的像素資料, 就會對應(yīng)到顯示屏幕(LCD)上, 從而構(gòu)成文字、符號或圖形等顯示效果。為了便于運(yùn)算, 可將每8個點(diǎn)的狀態(tài)存放在一個字節(jié)的內(nèi)存單元中, 圖2給出了顯示數(shù)據(jù)從RAM到LCD顯示的映射方式。由此可見, 全屏的320×240個點(diǎn)的狀態(tài)將存放在(320 / 8) ×240=40×240個字節(jié)的內(nèi)存單元中。


 

圖2 顯示數(shù)據(jù)從RAM到LCD顯示的映射方式

填充某一矩形區(qū)域的函數(shù)為Box_full (U16x_1, U16 y_1, U16 x_2, U16 y_2) , 其中,(x_1, y_1), (x_2, y_2) 為所填充的矩形區(qū)域的左上角和右下角的坐標(biāo)。描一個點(diǎn)就相當(dāng)于填充一個點(diǎn)陣區(qū)域。

清除某矩形區(qū)域的函數(shù)為Box_eraser (U16x_1, U16 y_1, U16 x_2, U16 y_2) , 其中,(x_1, y_1), (x_2, y_2) 分別為所清除的矩形區(qū)域的左上角和右下角的坐標(biāo)。消除一個點(diǎn)即清除一個點(diǎn)陣區(qū)域。通過這個函數(shù)可以很方便地清空某個矩形區(qū)域的內(nèi)容, 例如清除圖形區(qū)域, 或清除需要改變的數(shù)據(jù)區(qū)域等。

3.2 畫線

曲線可以視為是由若干直線段首尾相連而成。繪制直線是繪制曲線的基礎(chǔ), 所以首先考慮直線的繪制方法。一般的斜線段也可以看作是由若干水平或垂直的線段首尾連接而成的, 而對于水平直線和垂直直線這兩種特殊情況, 則相當(dāng)于填充某矩形區(qū)域, 這可以用前面提到的Box_full() 函數(shù)來完成。因此, 曲線的繪制全部都可以轉(zhuǎn)換為直線的繪制, 而其關(guān)鍵就在于確定各個水平或垂直線段首尾兩個端點(diǎn)的坐標(biāo)。下面將重點(diǎn)介紹繪制直線的算法。

處理曲線段首尾兩個端點(diǎn)的方法相對比較簡單, 即每個端點(diǎn)都沿X軸正向繪制2個相同Y值的像素點(diǎn), Y為當(dāng)前點(diǎn)所對應(yīng)的縱坐標(biāo)。對于兩端點(diǎn)之間剩余的3個像素點(diǎn), 可分以下三種情況進(jìn)行討論。

首先, 當(dāng)y_0等于y_past時, 很顯然, 兩端點(diǎn)之間是一條水平線, 其線形如圖3 (1) 所示。其函數(shù)描述為: Box_full (x_0-3,y_0,x_0+1,y_0)。


 

圖3 幾種情況下線段的繪制情形

其次, 如果y_0大于y_past, 此時將分為以下4種情況進(jìn)行討論:

第一, 當(dāng)y_0-y_past=1時, 其情形如圖3 (2)所示。其函數(shù)描述為:

Box_full (x_0-1,y_0,x_0+1,y_0) ;

Box_full (x_0-3,y_past,x_0-2,y_past) ;

第二, 當(dāng)y_0-y_past=2時, 其情況如圖3 (3)所示。函數(shù)描述為:

Box_full (x_0,y_0,x_0+1,y_0) ;

Box_full (x_0-3,y_0+1,x_0-1,y_0+1) ;

第三, 當(dāng)y_0-y_past=3時, 其情況如圖3 (4)所示。函數(shù)描述為:

Box_full (x_0-1,y_0+1,x_0-1,y_0+1) ;

Box_full ( x_0 -3,y_past -1,x_0 -2,y_past -1) ;

Box_full (x_0,y_0,x_0+1,y_0) ;

第四, 當(dāng)y_0-y_past=4時, 其情況如圖3 (5)和(6) 所示。函數(shù)描述為:

Box_full (x_0,y_0,x_0+1,y_0) ;

Box_full (x_0-1,y_0+1,x_0-1,y_0+1) ;

Box_full ( x_0 -3,y_past -1,x_0 -3,y_past -1) ;

Box_full (x_0-2,y_0+2,x_0-2,y_past-2) ;

而當(dāng)y_0小于y_past時, 其分析方法與y_0大于y_past時相似, 這里不再重復(fù)。

3.3 動態(tài)曲線的顯示

圖4所示是實現(xiàn)動態(tài)曲線顯示的顯示界面。

圖4 動態(tài)曲線的界面顯示

實際上, 該界面可劃分為以下3種顯示區(qū)域: 文本區(qū)、數(shù)字區(qū)、圖形區(qū)。文本區(qū)是指圖中的文字部分, 用于說明和提示; 數(shù)字區(qū)是指圖中的數(shù)字部分, 用于顯示一些實時的數(shù)據(jù), 例如時間、直流值、交流值、存儲器容量等; 圖形區(qū)則是指界面中間顯示波形的部分, 主要用于顯示實時動態(tài)波形。

在確定實時曲線點(diǎn)地址時, 其二維坐標(biāo)的任意一點(diǎn)都是由橫坐標(biāo)和縱坐標(biāo)來確定的。對于橫坐標(biāo), 它們是一組等間隔的整數(shù), 因此, 每畫完當(dāng)前一個點(diǎn)后, 再在其水平坐標(biāo)加上某一固定的整數(shù), 即可得到下一個要畫的點(diǎn)的水平坐標(biāo)。例如, 若橫坐標(biāo)間隔為5, 則橫坐標(biāo)X就依次加5。

對于縱坐標(biāo)則相對復(fù)雜些, 假設(shè)A/D轉(zhuǎn)換后得到的數(shù)據(jù)為y, Y為所求點(diǎn)在動態(tài)顯示區(qū)中所在的行, 橫軸所在的行為H, 則Y=H- (int) (y×20)。

20實際上是為了方便運(yùn)算而取的一個幅值, 該值可以根據(jù)不同的數(shù)據(jù)情況來設(shè)定其大小。

為了在液晶屏幕上實時動態(tài)地顯示曲線, 刷新是一個很重要的環(huán)節(jié)。傳統(tǒng)的刷新方法是不斷地刷新每個顯示單元。顯示的控制過程實際上就是對圖形區(qū)RAM 數(shù)據(jù)的控制過程, 從左到右按單位掃描時間逐一置動態(tài)圖形區(qū)RAM 中的顯示數(shù)據(jù), 直到掃描到LCD 最右邊時, 再清除所有動態(tài)圖形區(qū)RAM的數(shù)據(jù), 之后, 又按單位掃描時間從左到右繼續(xù)逐一置動態(tài)圖形區(qū)RAM 中的顯示數(shù)據(jù), 并以逐點(diǎn)顯示方式來實現(xiàn)整幅圖形的刷新。由于圖形顯示數(shù)據(jù)的運(yùn)算量大、讀寫次數(shù)較多, 液晶屏的讀操作要連續(xù)進(jìn)行兩次, 第一次讀操作將地址輸出讀到一個無效數(shù)據(jù), 第二次讀操作才讀到有效數(shù)據(jù)。所以, 用這種方法實現(xiàn)的顯示會感到刷新不及時、視覺效果較差。本文采用靜態(tài)隨機(jī)存取存儲器(SRAM) 的映射方式, 即在(SRAM) 中開辟一個與液晶屏動態(tài)圖形變化區(qū)域相同容量的存儲區(qū)域, 并使圖形的刷新全部在(SRAM) 中進(jìn)行, 然后重新寫屏。由于采用的是相同的地址指針, 從而減少了ARM地址指針切換所帶來的延遲, 這樣就使得圖形曲線更新的動態(tài)性能大大提高。除此之外, 本文還采用了指定有變化的部分刷新的方法, 即讓沒有變化的部分保留原樣, 而不采取任何操作, 只改變有變化的部分。因此, 刷新的效率也大大地提高了。刷新操作的具體程序如下:




 

對于波形動態(tài)顯示的效果, 現(xiàn)假設(shè)一整屏波形顯示56個數(shù)據(jù), 那么第一屏應(yīng)依次描點(diǎn), 即從X軸最左邊起, 一個單位時間描一個點(diǎn)且描一個點(diǎn)刷新一次。當(dāng)?shù)谝黄撩铦M, 即56個點(diǎn)全部描完時, 圖形區(qū)域?qū)@示一個完整的波形。之后從第二屏開始, 將一次性顯示滿屏的56個點(diǎn), 然后再刷新。其中第56個點(diǎn), 即最新的點(diǎn)顯示在圖形區(qū)域的最右邊, 它的縱坐標(biāo)是最新讀到的數(shù)據(jù)轉(zhuǎn)換值。左邊的55個點(diǎn)的縱坐標(biāo)是之前顯示的舊的55個點(diǎn)的縱坐標(biāo)。之后, 繪制每一屏的方法都與繪制第二屏的相同。通過這種方法, 波形將呈現(xiàn)不斷往前平移的效果, 從而實現(xiàn)一個連續(xù)波形的動態(tài)顯示。

4 結(jié)束語

本文所討論的液晶顯示應(yīng)用技術(shù)的實現(xiàn)方法, 已在工程實踐中表明是可行的, 并且運(yùn)行比較穩(wěn)定。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉