當(dāng)前位置:首頁 > 顯示光電 > 顯示光電
[導(dǎo)讀]0 引 言 人們在日常生活中,LCD占有很大的地位。人們使用的電腦、手機(jī)、車載系統(tǒng)、各種測量設(shè)備、顯示設(shè)備等等,都把LCD作為重要的人機(jī)接口,它把使用者需要的信息及時反應(yīng)出來。目前市場上存在著各種LCD和相


0 引 言
    人們在日常生活中,LCD占有很大的地位。人們使用的電腦、手機(jī)、車載系統(tǒng)、各種測量設(shè)備、顯示設(shè)備等等,都把LCD作為重要的人機(jī)接口,它把使用者需要的信息及時反應(yīng)出來。目前市場上存在著各種LCD和相對應(yīng)的驅(qū)動模塊,驅(qū)動模塊所帶的驅(qū)動程序都是針對本身模塊開發(fā)的,各種驅(qū)動程序之間通用性差,而且在不同的平臺上很難移植。每換一種LCD產(chǎn)品,都要根據(jù)它的驅(qū)動模塊重寫驅(qū)動程序。這樣產(chǎn)品開發(fā)資源浪費(fèi),開發(fā)周期長,成本增加。本文將介紹一種LCD圖形液晶驅(qū)動器的使用方法以及程序裁剪、移植和擴(kuò)展,實(shí)現(xiàn)在任意坐標(biāo)上顯示圖形和漢字。這款驅(qū)動器不帶字庫,對需要顯示的漢字和字母通過字模產(chǎn)生器產(chǎn)生數(shù)據(jù),通過程序設(shè)計把字體在LCD通過描點(diǎn)描述出來(本文所用的字模采用陽碼)。


1 典型圖形LCD驅(qū)動器NHC_313簡介
1.1 驅(qū)動器簡介
    NHC_313驅(qū)動器驅(qū)動最大點(diǎn)陣數(shù)為640(列)×480(行),顯示顏色為65536色(16位色)。本文所用的LCD為SHARP公司產(chǎn)品,產(chǎn)品型號為LQ104V1DG52。NHC_313有8位復(fù)用并行接口一數(shù)據(jù)總線和控制總線。MCU可以通過總線對LCD進(jìn)行操作,隨時寫顯示存儲器,而不影響顯示效果,即顯示不會出現(xiàn)“雪花”。NHC_313內(nèi)部有兩頁顯示緩存,使用人員可以讓一頁緩存的數(shù)據(jù)在LCD上顯示出來,同時可以對第二頁的緩存進(jìn)行操作。此驅(qū)動器與微處理器接口連接簡單,接口的讀、寫操作兼容8031總線時序。這款驅(qū)動器只是單純的圖形圖像顯示,沒有內(nèi)置字庫、圖形庫。如果設(shè)計人員要顯示漢字,必須要把需要的漢字用字模生成器產(chǎn)生字模的16進(jìn)制文件,然后通過程序控制把需要的字體逐一描到LCD上。驅(qū)動器的控制引腳如下:
    WR:數(shù)據(jù)寫入,低電平有效
    CS:片選端,低電平有效
    A0:地址信號線0
    A1:地址信號線1
    DB0~DB7:數(shù)據(jù)總線
    對NHC_313讀寫的時候采用8031時序,如圖1為NHC_313接口電路8031時序圖,在表1中列出了接口的時序特征參數(shù)。

    當(dāng)驅(qū)動器與8051等I/O口讀寫速度不是很快的MCU連接時,I/O的特性其本上可以滿足表1的時序特征參數(shù),圖2給出的是MCU和驅(qū)動器無縫連接的接口電路,這種方法是采用IO模擬時序的時候用到的引腳(不止局限于圖中列出的引腳),本文建議采用I/O口模擬時序的方法控制驅(qū)動器。要注意的是如果I/O的讀寫速度過快則不能滿足接口時序特性參數(shù)。例如采用Silab公司的C8051F340作為NHC_313的MCU,由于C8051F340的內(nèi)部晶振為48MHz,I/O讀寫速度不能很好滿足時序特性(寫周期不能滿足),所以在程序設(shè)汁中會看到有延時程序。而Atmel 8051系列單片機(jī)I/O可以滿足表1的時序參數(shù)特性,不需要加入延時程序。

    表2為驅(qū)動器命令,由于顯示的像素點(diǎn)數(shù)為640(列)×480(行),對于8位的I/O不能一次的把行和列的信息完全表示出來,由此設(shè)置了行列的高低地址(8位地址線只能表示0~255的地址信息)。

    對驅(qū)動器進(jìn)行寫操作要遵循以下規(guī)律:
    a)設(shè)定顯示頁和操作頁地址(A1=A0=1,CS=0,WR=0)

    D1-D0設(shè)定列地址高字節(jié);D2設(shè)定行地址高字節(jié)。開機(jī)時先執(zhí)行此操作再執(zhí)行其他操作。
    b)寫行地址低字節(jié)。(A1=0,A0=1)
    c)寫列地址低字節(jié)字節(jié)。(A1=1,A0=0)
    d)連續(xù)寫兩次8位字節(jié)對應(yīng)一個像素點(diǎn)顏色(A1=0,A0=0)。第一個字節(jié):

    R4、R3、R2、R1、R0表示紅色灰度;G5、G4、G3、G2、G1、G0表示綠色灰度;B4、B3、B2、B1、B0表示藍(lán)色灰度。如在同一行內(nèi)連續(xù)寫數(shù)據(jù)不用每次重寫行坐標(biāo)和列坐標(biāo),每一次“寫數(shù)據(jù)”操作后列地址自動加1,即每寫兩個字節(jié)顯示數(shù)據(jù)列地址自動加1。
1.2 關(guān)于液晶屏的簡單說明
    本文中的液晶顯示器顯示的顏色數(shù)量為65536種一16位色,對一個像素點(diǎn)所要顯示的顏色需要用兩個字節(jié)的數(shù)據(jù)來表示。需要注意的是,LCD的坐標(biāo)系同數(shù)學(xué)上的坐標(biāo)系有所不同,LCD的坐標(biāo)系如圖3所示。

    坐標(biāo)系上的點(diǎn)和LCD的像素點(diǎn)是一一對應(yīng)的,每一個像素點(diǎn)用坐標(biāo)系的橫縱坐標(biāo)唯一標(biāo)識。由于八位的數(shù)據(jù)線只能表示0~255的范圍,所以把LCD分割成了圖3中的幾個區(qū)域,這些區(qū)域保證了橫縱坐標(biāo)范圍在0~255之內(nèi),通過設(shè)置行列高低地址選擇所要顯示的區(qū)域。每個區(qū)域獨(dú)立為一個小的坐標(biāo)系,如圖3中的F區(qū)域所示,區(qū)域中的點(diǎn)用這個小坐標(biāo)系的坐標(biāo)唯一表示。例如在選擇LCD上點(diǎn)(630,420),通過整體坐標(biāo)軸把這個點(diǎn)定位到F區(qū),通過簡單的計算得知此點(diǎn)在F區(qū)域坐標(biāo)下的新坐標(biāo)值為(118,108)。選擇區(qū)域的過程就是設(shè)置行列高低地址的過程,也可以理解為地址的寫入為先寫如高地址,后寫入低地址,且地址的長度為11位,最高位為行列地址選擇位。為了方便理解和使用,本文把地址用區(qū)域來表示。例如選擇F區(qū)域,執(zhí)行操作:A1=A0=1,CS=0,WR=0,然后向控制器寫入D2D1D0=110。


2 程序設(shè)計、移植和剪裁方法
2.1 LCD驅(qū)動器I/O操作基本程序
    對驅(qū)動器控制是完成液晶產(chǎn)品開發(fā)的第一步也是關(guān)鍵部分,下面的程序是采用I/O模擬8031時序方法完成對控制器進(jìn)行控制,通過這個方法有助于理解對控制器控制的操作步驟。圖1為C8051F340同驅(qū)動器的連接方法,本文所有例程編寫都遵循這種連接方式。操作基本程序清單如下:


    上述的dlcd,clcd1,clcd2,clcd3函數(shù)中,如果把控制器的片選信號接到低電平,cs這個管腳在程序可以略去;假如P4端口和其他端口相連接,cs管腳要通過I/O口控制驅(qū)動器是否選通。注意函數(shù)中的延遲函數(shù):數(shù)據(jù)出現(xiàn)在端口上要經(jīng)過T6的時間在wr的上升沿把數(shù)據(jù)寫入控制器。
2.2 LCD高級程序設(shè)計
    函數(shù)draw_point功能:把有顏色的點(diǎn)在LCD指定位置顯示出來。函數(shù)參數(shù)意義(參考圖3):
    word_which_display:設(shè)置顯示頁;
    word_which_write:設(shè)置操作頁;
    word_x,:新坐標(biāo)O'在原坐標(biāo)O下橫坐標(biāo);
    word_y:新坐標(biāo)O'在原坐標(biāo)O下縱坐標(biāo);
    line_x:點(diǎn)G在坐標(biāo)系O'下橫坐標(biāo)
    line_y:點(diǎn)G在坐標(biāo)系O'下縱坐標(biāo)
    yanse1,yanse2:連續(xù)寫入的8位像素字節(jié)
    說明:顯示頁的設(shè)置是為了顯示兩頁緩存中的一頁數(shù)據(jù)到LCD上,操作頁的設(shè)置是為了把數(shù)據(jù)寫入到兩頁緩存當(dāng)中的一頁。如果顯示頁為第1頁,操作頁為第0頁,此時LCD顯示的是第一頁的緩存的數(shù)據(jù),此時把數(shù)據(jù)寫入到第0頁緩存中,寫入的數(shù)據(jù)在LCD上不被顯示;如果顯示頁為第0頁,操作頁為第0頁,此時LCD顯示的是第0頁的緩存的數(shù)據(jù),此時把數(shù)據(jù)寫入到第0頁緩存中,寫入的數(shù)據(jù)可以在LCD上實(shí)時的顯示出來。程序依據(jù)圖3中對坐標(biāo)軸設(shè)計方法和LCD區(qū)域劃分手段判斷點(diǎn)G在新坐標(biāo)系O'中坐標(biāo)值。在程序中一定要注意每寫兩個字節(jié)顯示數(shù)據(jù)列地址(列坐標(biāo))自動加1。為此設(shè)計如下函數(shù):


    這個函數(shù)功能比較多樣化,是用新坐標(biāo)系O'來確認(rèn)點(diǎn)G的坐標(biāo)。執(zhí)行函數(shù)draw_point(0,0,511,255,8,9,0xf8,0x07)結(jié)果為,當(dāng)前顯示第0頁,點(diǎn)為紅色且被置到第0頁。新坐標(biāo)O'在原坐標(biāo)O的(511,255)處,點(diǎn)G在坐標(biāo)系O'的位置為(8,9),也就是被置到圖3中的F區(qū);如果執(zhí)行函數(shù)draw_point(0,0,0,0,、520,364,0xf8,0x07),那么此點(diǎn)和上一個點(diǎn)將重合,此時坐標(biāo)系O’和原坐標(biāo)O重合。
    函數(shù)display_word功能:把字體寫入到控制器緩沖區(qū)指定位置中,并控制字體是否顯示。函數(shù)參數(shù)意義:
    word:顯示字體字庫的首地址;
    word_line,word_row:字庫行數(shù)和列數(shù)(列數(shù)等于字模的列數(shù)/8);
    word1,word2:字體顯示的顏色的16進(jìn)制表示;
    backdrop1,backdrop2:字體和背景的顏色其他參數(shù)含義同clear_region。函數(shù)原型和參數(shù)如下:


2.3 其他主要函數(shù)編寫說明
    清屏程序:可以通過draw_point函數(shù)編寫得到,建議清屏函數(shù)具有清理任何緩存頁中的數(shù)據(jù)并控制數(shù)據(jù)顯示的功能。如函數(shù)及參數(shù)列表如下:
void clear_region(char word_which_display,char
    word_which_write,int word_x,int word_y,
    unsigned int word_row,unsigned int
    word_line,unsigned char with_color)
在這個函數(shù)中,參數(shù)word_row:清理的矩形區(qū)域距離word_x的長度;參數(shù)word_line:清理的矩形區(qū)域距離word_y的長度;參數(shù)with color:清理區(qū)域的顏色。此函數(shù)所清理的是矩形區(qū)域。函數(shù)改寫可以采用連續(xù)置點(diǎn)的方法,通過draw_piont函數(shù)連續(xù)的向清屏區(qū)域內(nèi)置入一定顏色的點(diǎn)。由于篇幅所限,本文不給出程序清單。
    畫線程序:把LCD上任意兩點(diǎn)連接成直線。設(shè)LCD上兩點(diǎn)坐標(biāo)M(x1,y1)和N(x2,y2),得斜率由于x方向地增量△x=1,則△y=k。通過循環(huán)置點(diǎn)就可以得到直線。
    本文所用的函數(shù)如下:
void draw_line(char word_which_display,char word_which_write,unsigned int x1,unsigned int y1,int x2,int y2,char colour)
參數(shù)功能:x1,y1:LCD上任意一點(diǎn)M的坐標(biāo)
    x2,y2:LCD上任意一點(diǎn)N的坐標(biāo)
    colour:連線的顏色
    同種LCD驅(qū)動器可應(yīng)用在不同的MCU上,如果采用I/O模擬時序的方法,需改動管腳設(shè)置并注意讀寫的時間要求。如本文的程序在8051單片機(jī)上運(yùn)行時候基本程序中的不需要加延時,在C8051F單片機(jī)(晶振48MHz)上需要加延時。另外MCU和LCD驅(qū)動器必須共地處理,否則可能會產(chǎn)生不必要的干擾。
    對驅(qū)動器的控制還可以采用直接訪問外部存儲器的方法,這個時候相當(dāng)于向固定的寄存器寫數(shù)據(jù)和控制字,接口程序如下:

   
    如果向外部存儲器寫數(shù)據(jù),采用dlcd=0x04的形式,它的含義是把數(shù)0x04存儲到外部地址為0x0000中。使用此方法要注意MCU的EMIF的接口讀寫時序。有一些控制器的功能更豐富一些,如clcd1=0x81,驅(qū)動器會執(zhí)行0x81所代表的功能。本文使用的是C8051F340單片機(jī),這款單片機(jī)有自帶的EMIF接口,在使用之前需要對其進(jìn)行配置:
    P1SKIP=0x80;//跳過WR和RD引腳
    XBR1=0x41;//Enable crossbar and enable
//EMIF工作在地址/數(shù)據(jù)復(fù)用方式
//只用外部存儲器
//ALE高和ALE低脈沖寬度=4個SYSCLK周期EMI0CF=0x0c;
//地址建立時間=0個SYSCLK周期。
///WR和/RD脈沖寬度=2個SYSCLK周期。
//地址保持時間=1個SYSCLK周期
    EMI0TC=0X05;


3 使用舉例及顯示效果
    如圖4是使用本文程序設(shè)計的飛機(jī)操縱性能檢測評估儀操作使用界面,界面中左邊的箭頭可以通過按鍵控制下上下移動,并進(jìn)入到相應(yīng)的操作界面。

    首先要了解,LCD顯示圖像的實(shí)質(zhì)是在屏幕上置入一定顏色的點(diǎn),曲線y=f(x)也基于這個原理產(chǎn)生,當(dāng)x軸連續(xù)時且函數(shù)值y幅度很小的時候在LCD上顯示的圖形是連續(xù)的,當(dāng)幅度很大時會產(chǎn)生幅度離散的圖形,如果可以把兩個離散的點(diǎn)用一條線連上,那么離散圖形可以變得連續(xù),圖4中有正弦函數(shù)顯示的事例。程序?qū)嵗缦拢?br />for(i=0;i<640;i++)
    {y1=200*sin(0.05*i);y2=200*sin(0.05*(i+1));
    draw_line(0,0,0,240,y1,y1-y2,i,’g’);}


4 結(jié)束語
    上述控制程序是當(dāng)今通用的使用方法??刂乞?qū)動器的函數(shù)如顯示字體、清屏幕和置點(diǎn)等都要人為編寫,但這更有助于對LCD顯示的過程的理解?,F(xiàn)如今市場上LCD驅(qū)動器的品種多,且有很大一部分控制起來要優(yōu)于本文所使用的驅(qū)動器,本文的目的旨在給予大家一種通用有效的方法,希望在以后遇到LCD驅(qū)動器的時候能快速入門,縮短開發(fā)周期,節(jié)約成本。本文中所有列舉出來的函數(shù)都經(jīng)過C8051F340單片機(jī)的測試和偉福的硬件仿真。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(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)中有升 落實(shí)提質(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)閉