《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 虛擬LCD顯示模塊的設(shè)計(jì)
虛擬LCD顯示模塊的設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第2期
江曉軍, 瞿丹晨, 徐 潔, 劉正國(guó)
上海第二工業(yè)大學(xué) 電子與電氣工程學(xué)院, 上海201209
摘要: 通過(guò)在BTF020單片機(jī)的RAM中建立緩沖區(qū)數(shù)組并對(duì)虛擬LCD的顯示數(shù)據(jù)進(jìn)行存儲(chǔ),然后通過(guò)單片機(jī)的串口將該數(shù)據(jù)傳送給PC機(jī),再用VB6.0語(yǔ)言對(duì)這些數(shù)據(jù)進(jìn)行處理并構(gòu)建虛擬LCD的界面,使其能夠正確顯示字符或者圖形。實(shí)驗(yàn)結(jié)果表明,所建的虛擬LCD顯示模塊具有開發(fā)簡(jiǎn)便、快速、通用性強(qiáng)的特點(diǎn)。
關(guān)鍵詞: LCD BTF020 顯示模塊
中圖分類號(hào): TH85
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)用越來(lái)越廣泛,手機(jī)、車載系統(tǒng)及工業(yè)測(cè)量設(shè)備等都把LCD作為重要的人機(jī)接口,將使用者需要的信息顯示出來(lái)。這種方法是通過(guò)微處理器如單片機(jī)輸出圖形數(shù)據(jù),再由LCD顯示模塊根據(jù)該圖形數(shù)據(jù)進(jìn)行顯示[1-3]。其缺點(diǎn)是需要在LCD的像素排列和程序邏輯設(shè)計(jì)中花費(fèi)大量的時(shí)間,而且在進(jìn)行不同LCD顯示模塊的驅(qū)動(dòng)設(shè)計(jì)時(shí),要根據(jù)該LCD的驅(qū)動(dòng)模塊重寫驅(qū)動(dòng)程序,導(dǎo)致系統(tǒng)開發(fā)周期長(zhǎng)、成本增加[4]。
    本文介紹一種使用虛擬技術(shù)實(shí)現(xiàn)LCD顯示模塊的方法以彌補(bǔ)前述方法的不足。該方法通過(guò)在單片機(jī)的RAM中建立緩沖區(qū)數(shù)組并對(duì)虛擬LCD的顯示數(shù)據(jù)進(jìn)行存儲(chǔ)后,將顯示數(shù)據(jù)傳遞給PC機(jī),再對(duì)這些數(shù)據(jù)進(jìn)行處理后構(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單片機(jī)存儲(chǔ)在緩沖區(qū)單元中;緩沖區(qū)單元通過(guò)所建的二維數(shù)組將數(shù)據(jù)分配給不同的存儲(chǔ)單元;串口通信單元根據(jù)BTF020單片機(jī)的命令負(fù)責(zé)將緩沖區(qū)單元中的數(shù)據(jù)發(fā)送給PC機(jī);PC機(jī)中的數(shù)據(jù)接收單元負(fù)責(zé)接收串口通信單元發(fā)出的數(shù)據(jù);顯示數(shù)據(jù)處理單元根據(jù)數(shù)據(jù)接收單元送出的數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換和處理,以便構(gòu)建虛擬LCD界面;虛擬LCD界面負(fù)責(zé)將送入的字符或者圖形數(shù)據(jù)顯示出來(lái)。

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

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


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


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


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

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

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

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