《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 虛擬LCD顯示模塊的設(shè)計
虛擬LCD顯示模塊的設(shè)計
來源:電子技術(shù)應(yīng)用2011年第2期
江曉軍, 瞿丹晨, 徐 潔, 劉正國
上海第二工業(yè)大學(xué) 電子與電氣工程學(xué)院, 上海201209
摘要: 通過在BTF020單片機的RAM中建立緩沖區(qū)數(shù)組并對虛擬LCD的顯示數(shù)據(jù)進行存儲,然后通過單片機的串口將該數(shù)據(jù)傳送給PC機,再用VB6.0語言對這些數(shù)據(jù)進行處理并構(gòu)建虛擬LCD的界面,,使其能夠正確顯示字符或者圖形,。實驗結(jié)果表明,所建的虛擬LCD顯示模塊具有開發(fā)簡便,、快速,、通用性強的特點,。
關(guān)鍵詞: LCD BTF020 顯示模塊
中圖分類號: TH85
文獻標(biāo)識碼: A
文章編號: 0258-7998(2011)02-0127-03
Design of virtual LCD module
Jiang Xiaojun, Qu Danchen, Xu Jie, Liu Zhengguo
School of Electronic & Electrical Engineering, Shanghai Second Polytechnic University, Shanghai 201209, China
Abstract: The display data of the virtual LCD is stored by creating the buffering arrays in RAM of BTF020 MCU, and the data is delivered to PC by the serial port of the MCU. The delivered data is processed and the interface of the virtual LCD is established by using VB6.0, and the character and the graph can be displayed rightly. The experimental results show that the established virtual LCD module has the characteristic of convenience, speediness and commonality.
Key words : LCD,; BTF020,; display module


    LCD在人們生活中的應(yīng)用越來越廣泛,手機,、車載系統(tǒng)及工業(yè)測量設(shè)備等都把LCD作為重要的人機接口,,將使用者需要的信息顯示出來。這種方法是通過微處理器如單片機輸出圖形數(shù)據(jù),,再由LCD顯示模塊根據(jù)該圖形數(shù)據(jù)進行顯示[1-3],。其缺點是需要在LCD的像素排列和程序邏輯設(shè)計中花費大量的時間,而且在進行不同LCD顯示模塊的驅(qū)動設(shè)計時,,要根據(jù)該LCD的驅(qū)動模塊重寫驅(qū)動程序,,導(dǎo)致系統(tǒng)開發(fā)周期長、成本增加[4],。
    本文介紹一種使用虛擬技術(shù)實現(xiàn)LCD顯示模塊的方法以彌補前述方法的不足,。該方法通過在單片機的RAM中建立緩沖區(qū)數(shù)組并對虛擬LCD的顯示數(shù)據(jù)進行存儲后,將顯示數(shù)據(jù)傳遞給PC機,,再對這些數(shù)據(jù)進行處理后構(gòu)建虛擬LCD以顯示字符或者圖形,。
1 虛擬LCD顯示模塊的結(jié)構(gòu)
    虛擬LCD顯示模塊的功能結(jié)構(gòu)如圖1所示。虛擬LCD顯示模塊主要由4×4按鍵輸入單元,、緩沖區(qū)單元,、串口通信單元、數(shù)據(jù)接收單元,、顯示數(shù)據(jù)處理單元,、虛擬LCD界面組成。其中,4×4按鍵輸入單元負(fù)責(zé)選擇需要的虛擬LCD界面的大小及輸入顯示數(shù)據(jù),,這些信息由BTF020單片機存儲在緩沖區(qū)單元中,;緩沖區(qū)單元通過所建的二維數(shù)組將數(shù)據(jù)分配給不同的存儲單元;串口通信單元根據(jù)BTF020單片機的命令負(fù)責(zé)將緩沖區(qū)單元中的數(shù)據(jù)發(fā)送給PC機,;PC機中的數(shù)據(jù)接收單元負(fù)責(zé)接收串口通信單元發(fā)出的數(shù)據(jù),;顯示數(shù)據(jù)處理單元根據(jù)數(shù)據(jù)接收單元送出的數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換和處理,以便構(gòu)建虛擬LCD界面,;虛擬LCD界面負(fù)責(zé)將送入的字符或者圖形數(shù)據(jù)顯示出來,。

2 虛擬LCD顯示數(shù)據(jù)的處理
2.1顯示緩沖區(qū)及數(shù)組的建立

    虛擬LCD的分辨率可根據(jù)BTF020發(fā)送的數(shù)據(jù)確定并采用分頁縱向顯示。在BTF020中建立一個緩沖區(qū)來存放需要顯示的數(shù)據(jù),,然后將這個緩沖區(qū)中的數(shù)據(jù)發(fā)送給PC機,,由PC機將接收到的BYTE類型數(shù)據(jù)還原成8位二進制碼,然后再對該二進制碼進行逐位解析并按順序進行處理和顯示,。當(dāng)虛擬LCD的分辨率確定為256×256,,顯示色為單色時,,串口傳輸?shù)臄?shù)據(jù)為8位二進制碼,因此建立一個二維數(shù)組LCDdata[31][255]作為虛擬LCD的字符顯示緩沖區(qū),,共32頁(0~31),、256列(0~255)。該虛擬LCD的顯示緩沖區(qū)分布如圖2所示,。


2.2 字符的處理與顯示
    虛擬LCD顯示漢字前需先取模,。漢字的字模分成上下兩個部分,當(dāng)顯示規(guī)格為16×16點陣的漢字時,,取模走向為縱向且高位在前,。可先對上半部分從左到右取模,,然后對下半部分從左到右取模,,再將該漢字所占的像素點標(biāo)為“1”,其余標(biāo)為“0”,,從左到右開始取字模的結(jié)果并以十六進制表示,。以同樣的方法,再對下半部分取模,,其結(jié)果仍以十六進制表示,。此時,將這兩次的結(jié)果結(jié)合起來就可得該漢字的字模,。在取完字模后,,把該字的字模預(yù)先存儲到一個一維數(shù)組中,然后確定漢字顯示于屏幕的位置,。由于漢字顯示是以頁和列為定位坐標(biāo),,單個漢字不跨頁顯示,因此可以調(diào)用漢字顯示函數(shù)來顯示漢字,,這樣通過替換顯示緩沖區(qū)中的數(shù)據(jù)就可以達到顯示漢字的目的,。該漢字顯示函數(shù)為:
    void Write_word(int y,int x, unsigned char  word [ ]
    其中,y代表頁,x代表列,,word代表希望顯示的字的字模,。圖3為漢字顯示流程。虛擬LCD顯示規(guī)格為8×16點陣的數(shù)字0~9時,,取模走向為縱向,高位在前,,點陣格式為陰碼,取模方式為行列式,。


    通過調(diào)用數(shù)字顯示函數(shù)進行顯示,,這樣通過替換顯示緩沖區(qū)中的數(shù)據(jù)就可以達到顯示數(shù)字的目的。該數(shù)字顯示函數(shù)為:
    void Write_num(int y,int x,int number)
2.3 點,、直線和矩形的處理與顯示
    漢字在縱向的顯示處理是按頁計算,,而點在縱向的顯示處理是按行計算,,其計算方式與列的計算方式相同,。把整個虛擬LCD屏幕分成255行,、255列,則該虛擬LCD的圖形顯示緩沖區(qū)分布如圖4所示,。


    按照以上分布規(guī)則,,通過調(diào)用畫點函數(shù)可在屏幕上畫點。該畫點函數(shù)為:
    void Point(int x,int y)
    該函數(shù)中橫坐標(biāo)可被系統(tǒng)識別,,而縱坐標(biāo)須轉(zhuǎn)換成頁的表示形式才能被系統(tǒng)識別,。將縱坐標(biāo)轉(zhuǎn)換成頁地址時先確定畫點所在頁,由于一頁中縱方向上有8個坐標(biāo)點,,因此可用整除的方式得到確定的頁地址,。表1表示一頁中點亮像素點的數(shù)據(jù)與整除y時得到的余數(shù)的關(guān)系。

    設(shè):點亮像素點的數(shù)據(jù)為add值,,LCDdata [ ][ ]為顯示緩沖區(qū)數(shù)組,,y/8為頁地址,x為列地址,,則可得到顯示緩沖區(qū),。該顯示緩沖區(qū)的數(shù)據(jù)為:
    LCDdata[y/8][x]=add+LCDdata[y/8][x]
    按上述方法得到畫點的坐標(biāo)后,再根據(jù)虛擬LCD顯示線段的坐標(biāo),,在確定的方向上依次進行點的顯示,。畫橫線的函數(shù)定義為:
    void HLine(int x1,int x2,int y)
    式中,x1,、x2分別為橫線的橫坐標(biāo)起始,、結(jié)束點,y為縱坐標(biāo),。
    畫豎線的函數(shù)定義為:
    void SLine(int x,int y1,int y2)
    式中,x為豎線的橫坐標(biāo),,y1、y2分別為豎線縱坐標(biāo)起始,、結(jié)束點,。
 畫矩形的函數(shù)定義為:
    void Rectangle(int x1,int y1,int x2,int y2)
    式中,x1為矩形左上角橫坐標(biāo),,y1為矩形左上角縱坐標(biāo),,x2為矩形右下角橫坐標(biāo),y2為矩形右下角縱坐標(biāo),。
3 實驗
    進行實驗時采用VB6.0語言編程,,圖5是用上述方法虛擬的分辨率為256×256的LCD顯示界面,該虛擬LCD界面的左上角的坐標(biāo)為(0,0),右下角的坐標(biāo)為(255,,255),。界面中像素點以一個方格表示,,初始界面由綠色方格組成,當(dāng)期望的像素點進行點亮顯示時該位置為黑色方格,。

    完成上述界面中字符和圖形顯示功能的語句為
    Rectangle(50,30,200,100);    畫邊框
    Write_word(6,128,peng);      寫“鵬”
    Write_num(8,111,0);            寫“0”
    Write_num(8,119,5);            寫“5”
    Write_num(8,127,2);            寫“2”
    Write_num(8,135,2);            寫“2”
    Write_comm( );                   緩沖區(qū)發(fā)送到PC
    通過顯示緩沖區(qū)的數(shù)組存儲虛擬LCD的顯示數(shù)據(jù),,然后將數(shù)據(jù)傳送給PC機,再用VB6.0語言對這些數(shù)據(jù)進行處理并構(gòu)建虛擬LCD的顯示界面,,可以正確顯示字符,、點,、線和矩形等圖形。所建的虛擬LCD顯示模塊具有開發(fā)簡便,、快速,、通用性強的特點。
參考文獻
[1] 劉冬生,曾曉雁. 液晶顯示控制器SED1330/SED1335/SED1336/E1330的應(yīng)用[J].電子技術(shù)應(yīng)用,2004,30(2):
71-73.
[2] 吳捷,陸鋒,左劍. 圖形液品顯示控制器SI D13503在單片機系統(tǒng)中的應(yīng)用[J].信息化研究,2009,35(11):54-56.
[3] 潘敏,焦生杰,翁寅生. 基于DSP和ST7920的液晶顯示模塊的實現(xiàn). 電子技術(shù)應(yīng)用, 2007,33(6):48-50.
[4] 王震, 謝丁龍. 點陣LCD 顯示模塊通用驅(qū)動程序的開發(fā)[J]. 許昌學(xué)院學(xué)報, 2005,24(5):84-87.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。