1 引言 點(diǎn)陣式液晶顯示器(Liquid Crystal Display,LCD)以?xún)?yōu)越的性?xún)r(jià)比早已成為電子設計者的常用器件,被廣泛應用于各種工業(yè)電子設備中。起初,點(diǎn)陣式液晶只是用來(lái)消除段碼式液晶顯示過(guò)于粗糙、容易混淆等的缺點(diǎn),實(shí)現標準ASCII字符的顯示。為了擺脫英文顯示的限制,人們通過(guò)查詢(xún)內碼從標準字庫中得到所需漢字的點(diǎn)陣值,進(jìn)而實(shí)現漢化菜單,使設備的使用更加直觀(guān)、方便。于是,漢化顯示也成為許多國產(chǎn)設備在與進(jìn)口設備競爭中的主要優(yōu)勢之一。后來(lái),人們又通過(guò)手工的方法,實(shí)現了某些簡(jiǎn)單圖像的顯示,使顯示界面有了一定程度的提高。然而,如何通過(guò)簡(jiǎn)單的途徑在沒(méi)有圖形驅動(dòng)模塊的點(diǎn)陣式液晶顯示器中顯示各種靜態(tài)圖像以及動(dòng)畫(huà),成為長(cháng)期困擾設計者的問(wèn)題。我們現在可以通過(guò)掃描儀、互聯(lián)網(wǎng)、高級圖形處理軟件很方便地獲得各種各樣的圖像,但是這些文件最終都以各種特定的格式儲存在計算機中,怎樣通過(guò)比較簡(jiǎn)單的手段把它移植到液晶顯示器中,就是本文闡述的主要內容。文章通過(guò)分析傳統圖像點(diǎn)陣獲取原理以及BMP圖像的存儲格式,找到了它們間的內在聯(lián)系,從而實(shí)現了圖像點(diǎn)陣的快速獲取,并以T6963C〔3〕控制器為例進(jìn)一步探討了在點(diǎn)陣式液晶中的靜態(tài)圖像以及動(dòng)畫(huà)的顯示步驟。 2 傳統的點(diǎn)陣獲取法 在點(diǎn)陣式液晶中顯示圖像,首先要獲得圖像的點(diǎn)陣值。最傳統、最簡(jiǎn)單直接的點(diǎn)陣獲取方法就是坐標掃描法。其基本步驟為:將圖像置于坐標系中,根據坐標格上象素的存在與否決定該點(diǎn)值為1還是0;然后將每八個(gè)象素值拼成一個(gè)字節,從而得到該圖像的點(diǎn)陣數據。圖1為一個(gè)燈泡圖像掃描成16×16點(diǎn)陣的示意。 可以看出,坐標掃描方法不需要太多技巧,直觀(guān)明了。然而對于高象素圖像(即點(diǎn)陣數量比較多的圖像),坐標掃描法就顯得非常繁瑣。試想,要獲得象素高達 240×128的圖像點(diǎn)陣值,需要手工清點(diǎn)30,720個(gè)點(diǎn)陣,然后再組成3,840個(gè)字節的點(diǎn)陣表供程序讀取,其工作量之大可想而知。另外,當需要顯示的畫(huà)面比較多時(shí)工作量也成比例增加。 3 BMP位圖格式分析 BMP位圖是微軟公司(Microsoft)和國際商用機器公司(IBM)共同倡導的一種圖像格式。它按點(diǎn)陣排列順序,將每個(gè)象素的色彩值以規定的方式把整個(gè)圖像記錄下來(lái)。BMP格式還可細分為兩種類(lèi)型,即Microsoft Windows型和IBM OS/2型,兩者的差別主要在于說(shuō)明部分(文件頭)。由于IBM OS/2類(lèi)型的BMP用得比較少,所以在絕大多數情況下,BMP默認為Microsoft Windows類(lèi)型。根據色彩位深度不同,Windows BMP文件象素描述部分差別較大,如256色每個(gè)象素需要8位(即1個(gè)字節)來(lái)描述,而16色的圖像每個(gè)象素描述者只需4位(即半個(gè)字節)。對于絕大部分電子設計者來(lái)說(shuō),黑白二色的點(diǎn)陣式液晶顯示器價(jià)格適中、接口簡(jiǎn)單,因而最為常用。因此,這里僅分析Microsoft Windows類(lèi)型1位(Bit)描述的二色BMP圖像文件。詳見(jiàn)表1。 4 圖像點(diǎn)陣的獲取 從上述對二色BMP文件的分析,我們發(fā)現BMP文件的象素描述段中點(diǎn)陣的存放格式跟液晶圖像顯示所需的格式很類(lèi)似。因此,我們不難想到液晶顯示所需的圖像點(diǎn)陣借助于計算機高級軟件從BMP文件中讀取。 4.1 目標圖像的編輯與處理 目標圖像通常并不是BMP格式,原始尺寸跟液晶顯示中所需的也相差很多。因此,在從圖像文件中讀取點(diǎn)陣前必須對目標圖像進(jìn)行適當的編輯與處理。其步驟如下: (1)通過(guò)圖像處理軟件編輯或調整目標圖像尺寸,使得圖像跟液晶顯示的尺寸要求一致。常用的有Photoshop、Capture Professional等軟件。 (2)將圖像轉換為二色Windows格式的BMP文件。注意,如果是彩色圖像,則在轉換為黑白圖像時(shí)需要調節黑白對比效果,以適合黑白顯示。本步驟筆者使用的是Capture Professional3.0版本Operations菜單下的Convert to->Black and White,轉換時(shí)會(huì )彈出消息框,調整其Threshold的值可以預覽到其黑白對比效果。 (3)將圖像上下翻轉(以水平線(xiàn)為軸)。從上面的分析可知,BMP文件中圖像象素的內容是由下而上、由左及右存儲的。所以按照習慣的由上而下、由左及右的順序往液晶的顯示RAM寫(xiě)圖像點(diǎn)陣,必須將上述處理后的圖像進(jìn)行翻轉,并存儲為最終的圖像文件。本步驟用Photoshop和Capture Professional都比較方便。 4.2 BMP文件中讀取點(diǎn)陣的程序設計 在完成對目標圖像編輯與處理后,就可以從最終得到的黑白二色Windows BMP文件中讀出圖像點(diǎn)陣了。假設點(diǎn)陣值按照傳統的X86匯編語(yǔ)言格式存放在名為fign.inc的文件中。設計點(diǎn)陣讀取程序框圖如圖2所示。 設圖像水平方向及垂直方向尺寸(點(diǎn)陣數)分別為ohr__size、ver__size,則圖2的框圖中: (1)所要掃描的總行數為ver__size。 (2)判斷每行是否結束的方法為:當hor__size被8整除時(shí),則每行應讀取的字節數Bytenum=horsize/8;否則Bytenum=取整(horsize/8)+1。 (3)一行掃描完后,確定下一行指針位置的方法為:如每行字節數能被4整除時(shí),則指針加1即可,否則指針應加上(4--取余(Byte__unm/4)+1)。 5 圖像在液晶中的顯示 5.1 靜態(tài)圖像顯示 經(jīng)過(guò)前面的處理,生成的點(diǎn)陣文件fign.inc中點(diǎn)陣存放順序跟我們習慣的方向已經(jīng)一致。因此,只要在初始化液晶后,按順序從點(diǎn)陣文件中讀取點(diǎn)陣值,再寫(xiě)往液晶相應的顯示區,就能完成整幅靜態(tài)圖像的顯示。圖3是以常見(jiàn)的用T6963C作控制器的液晶顯示模塊為例來(lái)說(shuō)明圖像顯示的靜態(tài)流程。 5.2 動(dòng)畫(huà)顯示 眾所周知,動(dòng)畫(huà)顯示的基本原理是利用人眼的視覺(jué)殘留,將一序列靜止的畫(huà)面按一定的時(shí)間間隔連續播放?梢(jiàn),只要獲得各靜態(tài)子畫(huà)面的點(diǎn)陣值,就可以實(shí)現在點(diǎn)陣式液晶中的動(dòng)畫(huà)顯示。圖4是實(shí)現一個(gè)包括N個(gè)子畫(huà)面的動(dòng)畫(huà)顯示流程。其中時(shí)間間隔T根據實(shí)際效果設置。 6 結束語(yǔ) 計算機存儲圖像除了BMP外,還有多種其它格式。本文之所以選擇用BMP,是因為它是一種沒(méi)有壓縮的點(diǎn)陣型的圖像文件格式,而且幾乎所有的Windows應用軟件都支持這種格式,從而處理起來(lái)特別方便。在網(wǎng)絡(luò )資源日益豐富的今天,多數情況下設計者可不必自己繪制而直接利用各種現成的圖像、圖標、動(dòng)畫(huà),然后對之加以處理。在筆者參與的電力系統新一代數字式保護研制中,上述方法的成功運用使產(chǎn)品在很短的開(kāi)發(fā)周期內取得了非常理想的人機界面效果。實(shí)踐證明,一個(gè)好的界面對塑造產(chǎn)品形象,增強產(chǎn)品競爭力起著(zhù)不可低估的作用。本文給出的基于BMP的圖像點(diǎn)陣獲取方法,原理簡(jiǎn)單,實(shí)現方便,具有很高的實(shí)際應用價(jià)值。 |