TFT液晶彩色圖像顯示方法點陣LCD驅(qū)動顯控原理(下冊)_第1頁
TFT液晶彩色圖像顯示方法點陣LCD驅(qū)動顯控原理(下冊)_第2頁
TFT液晶彩色圖像顯示方法點陣LCD驅(qū)動顯控原理(下冊)_第3頁
TFT液晶彩色圖像顯示方法點陣LCD驅(qū)動顯控原理(下冊)_第4頁
TFT液晶彩色圖像顯示方法點陣LCD驅(qū)動顯控原理(下冊)_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

TFT液晶彩色圖像顯示方法——點陣LCD驅(qū)動顯控原理下冊——小丑powerintV1.0–Mz出品目

錄12345

關(guān)于本書........................................................................................................................................................1基于通用版LCD驅(qū)動程序.....................................................................................................................1與操作系統(tǒng)無關(guān).....................................................................................................................................1一些建議.................................................................................................................................................1LPC2000系列與MzT24................................................................................................................................2使用LPC2000作為MCU本書平臺........................................................................................................22.2MzT24彩色TFT模塊..............................................................................................................................22.2.1MzT24模塊簡介........................................................................................................................2顯示RAM區(qū)映射情況................................................................................................................32.2.3MzT24操作時序........................................................................................................................4控制方法及LCD顯示特性.........................................................................................................52.2.5MzT24的控制寄存器................................................................................................................82.3LPC2292驅(qū)動控制MzT24......................................................................................................................82.3.1LPC2292與MzT24模塊的連接................................................................................................8修改文件..................................................................................................10的配置修改.......................................................................................................15為了速度作一些簡單的優(yōu)化...................................................................................................16利用外部總線連接MzT24....................................................................................................................16TFT模塊的擴展功能驅(qū)動程序...................................................................................................................19LCD_Extend...........................................................................................................................................19一些有用的功能擴展...............................................................................................................19功能代碼分析...........................................................................................................................203.2Dis_Window...........................................................................................................................................233.2.1Dis_Window的理解..................................................................................................................26RGB565格式圖像取模顯示.......................................................................................................................27圖像取模...............................................................................................................................................27代碼分析...............................................................................................................................................30顯示效果參考.......................................................................................................................................33BMP文件解碼顯示......................................................................................................................................345.1BMP文件格式........................................................................................................................................345.1.1BMP文件構(gòu)成分析..................................................................................................................34位圖文件頭結(jié)構(gòu)詳解...............................................................................................................38位圖信息頭結(jié)構(gòu)詳解...............................................................................................................39色表結(jié)構(gòu)分析...........................................................................................................................39圖像數(shù)據(jù)分析...........................................................................................................................40將BMP文件數(shù)據(jù)整合進(jìn)Keil的工程....................................................................................................415.3BMP文件的解碼分析............................................................................................................................43應(yīng)用參考...............................................................................................................................................536

JPG文件解碼顯示........................................................................................................................................56有關(guān)JPG解碼算法庫.............................................................................................................................566.1.1JPG解碼庫的相關(guān)說明............................................................................................................566.1.2JPG解碼庫的特點....................................................................................................................566.1.3JPG解碼顯示的軟件架構(gòu)........................................................................................................57將JPG文件數(shù)據(jù)整合進(jìn)Keil的工程......................................................................................................586.3JPG文件的解碼顯示代碼分析..............................................................................................................596.4應(yīng)用參考...............................................................................................................................................64TFT液晶彩色圖像顯示方法1關(guān)于本書基于通用版LCD驅(qū)動程序在《點陣LCD驅(qū)動顯控原理》一書中,已經(jīng)對我們所提供的通用LCD驅(qū)動程序作了詳細(xì)的介紹,在本書所介紹的的利用TFT顯示彩色圖像的方法(或者說是代碼、算法都無所謂)是基于上述書中所介紹的通用LCD驅(qū)動程序的,在此就不會再多花費筆墨對它們進(jìn)行一一詳述了。而對于我們介紹過的通用版LCD驅(qū)動程序,在那本書中介紹的都是單色的點陣LCD屏的驅(qū)動程序,不過這份驅(qū)動程序是可以適應(yīng)彩色TFT模塊的應(yīng)用接口的,在書中亦有提過。其實就簡單而言,彩色的TFT液晶模塊也是點陣的LCD,只不過相比單色LCD模塊,它的每個像素點所需要使用的數(shù)據(jù)量增多了而已。不過,需要說明一下,本書中所介紹的方法是針對于那些TFT屏上帶有控制器的模塊,也就是可以使用MCU的端口或者外部總線直接控制它的,與控制顯示單色屏差不多。而一些RGB接口的TFT數(shù)字屏以及模擬屏,或者是VGA接口的各種TFT屏,在使用方法上還是不太一樣的,這里就暫不涉及討論它們了。與操作系統(tǒng)無關(guān)本書所介紹的顯示方法以及所提供的例程全部是在MCU上祼跑的代碼,不基于任何嵌入式操作系統(tǒng),如果有感興趣的朋友,也可以自行進(jìn)行將它們往操作系統(tǒng)上移植,這里介紹的還是方法和參考。一些建議與上一本書《點陣LCD驅(qū)動顯控原理》類似,我們?yōu)榱俗尦绦蚋菀桌斫庖约案阌谝浦驳讲煌腗CU或者液晶模塊上面,在一些速度以及性能上作了犧牲,比如BMP文件解碼顯示以及JPG文件解碼顯示的處理上,如果單照著某一塊TFT屏以及某一個MCU作優(yōu)化,顯示的速度還是會比所提供的代碼要快一倍以上的,這些我們都在給客戶訂制的產(chǎn)品方案中使用過。而如果您在使用我提供的例程中,感覺有些功能程序在使用上不能完全符合你的設(shè)計要求,也請多多見諒,畢竟條條大路通羅馬,不大可能把它做得符合所有人的使用習(xí)慣;一般來說,我希望能夠給讀本書的朋友提供的是一種方法和參考,有些問題請參閱本書的朋友盡量能夠自行體會和理解,當(dāng)然您想與我聯(lián)系的話,還是歡迎的,你可以通過QQ或者郵件與我取得聯(lián)系。歡迎有限度的騷擾?!〕螅ɑ蛘呓形摇靶姟保㏎Q:6442726442009-2-23于北京1TFT液晶彩色圖像顯示方法2LPC2000系列與MzT24使用LPC2000作為MCU本書平臺彩色TFT模塊的顯示往往需要較為大量的數(shù)據(jù),特別是要顯示彩色圖像時動則上百Kbyte的數(shù)據(jù)量,這對驅(qū)動它的平臺提出了要求,所以本書將會使用NXP公司的LPC2000系列ARM7作為范例的平臺。書中所介紹的代碼以及所附帶的例程,都是在LPC2292上跑過的,如果讀者需要將它們移植到別的平臺,有些工作是需要自己進(jìn)行的,包括對LCD驅(qū)動程序的移植,以及一些與編譯器有關(guān)的代碼。LPC2292是ARM7核心的MCU,144腳封裝,片內(nèi)256Kbyte的程序Flash,以及16Kbyte的片內(nèi)SRAM,并且可以通過其片上引出的最大32位寬度的外部總線來連接片外Flash/ROM以及SRAM,或者一些可以用總線來連接的外設(shè)。在此就不對LPC2292多作介紹了,感興趣的朋友可以從網(wǎng)絡(luò)上下載相關(guān)的資料進(jìn)行查閱;不過,請放心,書中介紹的代碼基本上是與CPU無關(guān)的,也就是與你使用什么樣的MCU平臺沒有太多關(guān)系,重要的是方法和思路。2.2MzT24彩色TFT模塊MzT24彩色TFT模塊是一個英寸的TFT模塊,內(nèi)置TFT控制器,對外連接直接通過8位的8080總線進(jìn)行指令和數(shù)據(jù)的傳輸。MzT24有像素點數(shù)為240×320,色彩深度為16位色,也就是每一個像素點需要用16位的數(shù)據(jù)來表示其顯示的內(nèi)容。有關(guān)MzT24模塊的介紹,請參考它的編程手冊,在那里有詳盡的說明,在此僅介紹一些在本書的介紹中所涉及的一部分。2.2.1MzT24模塊簡介MzT24彩色TFTLCD顯示模塊的LCD驅(qū)動控制IC為SPFD5408,用戶在對MzT24模塊進(jìn)行操作時,實際上是對SPFD5408進(jìn)行相關(guān)的控制寄存器、顯示數(shù)學(xué)據(jù)存儲器進(jìn)行操作的。下圖是實物圖:2TFT液晶彩色圖像顯示方法顯示RAM區(qū)映射情況MzT24模塊的英寸TFT-LCD顯示面板上,共分布著240×320個像素點,而模塊內(nèi)部的TFT-LCD驅(qū)動控制芯片內(nèi)置有與這些像素點對應(yīng)的顯示數(shù)據(jù)RAM(簡稱顯存)。模塊中每個像素點需要16位的數(shù)據(jù)(即2字節(jié)長度)來表示該點的RGB顏色信息,所以模塊內(nèi)置的顯存共有240×320×16bit的空間,通常我們以字節(jié)(byte)來描述其的大小。MzT24模塊的顯示操作非常簡便,需要改變某一個像素點的顏色時,只需要對該點所對應(yīng)的2個字節(jié)的顯存進(jìn)行操作即可。而為了便于索引操作,模塊將所有的顯存地址分為X軸地址(XAddress)和Y軸地址(YAddress),分別可以尋址的范圍為XAddress=0~239,YAddress=0~319,XAddress和YAddress交叉對應(yīng)著一個顯存單元(2byte);這樣只要索引到了某一個X、Y軸地址時,并對該地址的寄存器進(jìn)行操作,便可對TFT-LCD顯示器上對應(yīng)的像素點進(jìn)行操作了。提示:以上的描述意味著,當(dāng)我們對某一個地址上的顯示進(jìn)行操作時,需要對該地址進(jìn)行連續(xù)兩次的8位數(shù)據(jù)寫入或讀出的操作,方可完成對一個顯存單元的操作。MzT24模塊的像素點與顯存對應(yīng)關(guān)系如下圖所示:Everydothave16bitDisplayRAM(2bytes)XAddress=0~~~~XAddress=239YAddress=0XAddr=0YAddr=0TFT-LCD顯示面板YAddress=319顯存與像素點對應(yīng)關(guān)系示意圖3RGBD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0RGBD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0TFT液晶彩色圖像顯示方法MzT24模塊內(nèi)部有一個顯存地址累加器AC,即用于在讀寫顯存時對顯存地址進(jìn)行自動的累加,這在連續(xù)對屏幕顯示數(shù)據(jù)操作時非常有用,特別是應(yīng)用在圖形顯示、視頻顯示時。此外,AC累加器可以設(shè)置為各種方向的累加方式,如通常情況下為對XAddress累加方式,具體為當(dāng)累加到一行的盡頭時,會切換到下一行的開始累加;還可以為對YAddress累加方式,具體為當(dāng)累加到一列(垂直方向)的盡頭時,會切換到下一個XAddress所對應(yīng)的列開始累加,詳細(xì)介紹請參見。另外,MzT24模塊還提供了窗口操作的功能,可以對顯示屏上的某一個矩形區(qū)域進(jìn)行連續(xù)操作,詳細(xì)介紹也請參見。2.2.3MzT24操作時序MzT24模塊支持標(biāo)準(zhǔn)intel8080總線,總線的最高速度可達(dá)8MHz,也就是說,如果控制MCU速度足夠快的話,是可以支持視頻的顯示的。下圖為MzT24模塊的總線時序圖:MzT24模塊總線時序圖注意:MzT24模塊的總線接口是8位的,也就意味著對顯存的某一個地址操作時,需要連續(xù)進(jìn)行兩次操作方可完成,先傳高字節(jié)再傳低字節(jié)。表時序特性(~,TA=25℃)4參數(shù)符號單位最小值典型參數(shù)符號單位最小值典型最大值總線周期時間寫周期tCYCWns125----總線周期時間讀周期tCYCRns450----控制低脈沖寬度(RW)PWLWns45----控制低脈沖寬度(RD)PWLRns170----控制高脈沖寬度(RW)PWHWns70----TFT液晶彩色圖像顯示方法復(fù)位時序的示意圖如下圖所示:表復(fù)位時序特性控制方法及LCD顯示特性MzT24模塊控制方法對MzT24模塊的操作主要分為兩種,一是對控制寄存器的讀寫操作,二是對顯存的讀寫操作;而這兩種操作實際上都是通過對LCD控制器(SPFD5408)的寄存器(register)進(jìn)行操作完成的,SPFD5408提供了一個索引寄存器(Indexregister),對該Indexregister寄存器的寫入操作可以指定操作的寄存器索引,以便于完成控制寄存器、顯存操作寄存器的讀寫操作。MzT24提供了RS(有些資料稱A0)控制線,并以此線的高低電平狀態(tài)來區(qū)別這對Indexregister操作還是對所指向的寄存器進(jìn)行操作:當(dāng)RS為低電平時,表示當(dāng)前的總線操作是對Indexregister進(jìn)行操作,即指明接下去的寄存器操作是針對哪一個寄存器的;當(dāng)RS為高電平時,表示為對寄存器操作。MzT24模塊內(nèi)部有控制寄存器,用戶在使用MzT24之前以及對其進(jìn)行操作過程當(dāng)中,需要對一些寄存器進(jìn)行寫操作以完成對LCD的初始化,或者是完成某些功能的設(shè)置(如當(dāng)前顯存操作地址設(shè)置等)。對控制寄存器進(jìn)行操作前,需要先對索引寄存器(Indexregister)進(jìn)行定入操作,以指明接下去的寄存器讀寫操作是針對哪一個寄存器的。操作的步驟如下:1、在RS為低電平的狀態(tài)下,寫入兩個字節(jié)的數(shù)據(jù),第一個字節(jié)為零,第二字節(jié)為寄存器索引值。2、然后在RS為主電平的狀態(tài)下,寫入兩個字節(jié)數(shù)據(jù),第一字節(jié)為高八位,第二字節(jié)為低八位;如5參數(shù)符號單位最小值典型參數(shù)符號單位最小值典型最大值控制高脈沖寬度(RD)PWHRns250----讀/寫控制信號上升/下降時間tWRr,tWRrns----25建立時間寫(RStoCS,RW)tASns0----建立時間讀(RStoCS,RD)tASns10----地址保持時間tAHns2----寫數(shù)據(jù)建立時間tDSWns25----寫數(shù)據(jù)保持時間tHns10----讀數(shù)據(jù)延遲時間tDDRns----200讀數(shù)據(jù)保持時間tDDRns5----參數(shù)參數(shù)符號單位最小值典型最大值復(fù)位低電平寬度tRESms1----復(fù)位上升沿時間trRESus----10TFT液晶彩色圖像顯示方法要讀出指定寄存器的數(shù)據(jù),則需要連續(xù)三次讀操作方能完成一次讀出操作,第一個字節(jié)為無效數(shù)據(jù),第二字節(jié)為高八位,第三字節(jié)為低八位。注意:MzT24的顯存操作也是通過寄存器操作來完成的,即對0x22寄存器進(jìn)行操作時,就是對當(dāng)前位置點的顯示進(jìn)行讀寫操作。MzT24模塊的控制寄存器當(dāng)中,最常被調(diào)用的是寄存器除了對顯存操作的0x22寄存器外,還有當(dāng)前顯存地址的寄存器displayRAMbusaddresscounter(AC),一共由兩個的寄存器組成,分別存放有XAddress和YAdderss,表示當(dāng)前對顯存數(shù)據(jù)的讀寫操作是針對于該地址所指向的顯存單元;而每一個顯存單元在前面已經(jīng)用圖示意過,每個單元有16位,最高的5位為R(紅)的分量,最低的5位為B(藍(lán))的分量,中間6位為G(綠)分量。如下圖所示:顯存單元示意圖所以,當(dāng)需要對LCD顯示面板上某一個點(X,Y)進(jìn)行操作時,需要先設(shè)置AC,以指向需要操作的點所對應(yīng)的顯存地址,然后連續(xù)寫入或者讀出數(shù)據(jù),才完成對該點的顯存單元的數(shù)據(jù)操作。而當(dāng)對某一個顯存單元完成寫入數(shù)據(jù)操作后,AC會自動的進(jìn)行調(diào)整,或者是不進(jìn)行調(diào)整(根據(jù)控制寄存器中的設(shè)置而決定)保持原來指向。AC的這個特性對于MzT24模塊來說非常有用,可以根據(jù)此特性設(shè)計出快速的LCD顯示操作功能函數(shù),以適應(yīng)不同用戶的需求。顯存地址指針MzT24內(nèi)部含有一個用于對顯存單元地址自動索引的顯存地址指針displayRAMbusaddresscounter(AC);AC會根據(jù)當(dāng)前用戶操作的顯存單元,在用戶完成一次顯存單元的寫操作后進(jìn)行調(diào)整,以指向下一個顯存單元;可以通過對相關(guān)的寄存器當(dāng)中的控制位的設(shè)置,來選擇合適的AC調(diào)整特性。這些用于設(shè)置AC調(diào)整特性(實際上也就是顯存操作地址的自動調(diào)整特性)的位分別是:AM(bit3ofR03h)、ID0(bit4ofR03h)、ID1(bit5ofR03h);下面將說明這些控制位的特性。而配合AM位的設(shè)置,可以得到多種AC調(diào)整方式,以適應(yīng)不同用戶的不同需要??梢酝ㄟ^下面的列表了解具體的設(shè)置對應(yīng)的特性:6TFT液晶彩色圖像顯示方法顯存的窗口工作模式MzT24除了一般的對全屏的工作模式外,還提供了一種局部的窗口工作模式,這樣可以簡化對局部顯示區(qū)域的讀寫操作;窗口工作模式允許用戶對顯存操作時僅僅是對所設(shè)置的局部顯示區(qū)域?qū)?yīng)的顯存進(jìn)行讀寫操作。而設(shè)置的局部區(qū)域可以通過設(shè)置R50來確定最小的XAddress,設(shè)置R51來確定窗口的最大XAddress,設(shè)置R52來確定窗口的最小YAddress,設(shè)置R53來確定窗口的最大YAddress;這時再對顯存進(jìn)行讀寫操作的話,AC將只會在所設(shè)置的局部顯示區(qū)域(簡稱窗口)進(jìn)行調(diào)整;。而當(dāng)設(shè)置好窗口后,需要確認(rèn)對顯存操作時,地址范圍為:而前面所述的顯存地址指針AC的調(diào)整特性,在窗口工作模式當(dāng)中也是有效的,也就是說在一般顯存操作模式(全屏范圍顯存)設(shè)置的AC調(diào)整特性,在工作在窗口模式時,也是有效的。下圖為當(dāng)AM=0、ID0和ID1都設(shè)置為1時的示意圖:7TFT液晶彩色圖像顯示方法窗口工作模式2.2.5MzT24的控制寄存器有關(guān)MzT24模塊上的控制器的寄存器介紹,在此就不列出,請參考該模塊的手冊,以及TFT控制器的數(shù)據(jù)手冊。2.3LPC2292驅(qū)動控制MzT24要想利用LPC2292將MzT24模塊點亮,與單色的LCD屏一樣,這里首先也需要將通用版LCD驅(qū)動程序移植到LPC2292的平臺上,并修改底層的LCD驅(qū)動函數(shù),使之對應(yīng)上MzT24模塊的控制方法。在上一本書《點陣LCD驅(qū)動顯控原理》的第二版當(dāng)中,簡單介紹了一些將通用版的LCD驅(qū)動程序移植到LPC2292的內(nèi)容,在此為了讓初學(xué)者能更簡單的理解,首先我們介紹一下利用LPC2292的GPIO連接MzT24模塊來進(jìn)行驅(qū)動控制時,程序需要修改的地方。2.3.1LPC2292與MzT24模塊的連接LPC2292與MzT24模塊的連接主要是LPC2292的端口與液晶模塊之間的連接關(guān)系,而諸如LPC2292的其它外圍電路這里就省掉不寫了,感興趣的可以參考別的電路,只要能讓它正常工作起來就可以了。端口連接MzT24的示意圖如下:8TFT液晶彩色圖像顯示方法這與一些并行總線接口的單色LCD類似,應(yīng)該很好理解。確定了端口的連接后,首先要修改的是當(dāng)中的宏定義,修改后的代碼如下:#include"LPC22XX.h"#defineLCD_Ctrl_GPIO()#defineLCD_Ctrl_Out()#defineLCD_Ctrl_Set(n)#defineLCD_Ctrl_Clr(n)#defineLCD_CS#defineLCD_CS_SET()#defineLCD_CS_CLR()#defineLCD_RE#defineLCD_RE_SET()#defineLCD_RE_CLR()#defineLCD_A0#defineLCD_A0_SET()#defineLCD_A0_CLR()#defineLCD_RW#defineLCD_RW_SET()#defineLCD_RW_CLR()#defineLCD_RD#defineLCD_RD_SET()

PINSEL1&=~(0x0fff0000)IODIR0|=(LCD_CS+LCD_RE+LCD_A0+LCD_RW+LCD_RD)IOSET0=nIOCLR0=n(0x01<<29)IOSET0=LCD_CSIOCLR0=LCD_CS(0x01<<24)IOSET0=LCD_REIOCLR0=LCD_RE(0x01<<25)IOSET0=LCD_A0IOCLR0=LCD_A0(0x01<<27)IOSET0=LCD_RWIOCLR0=LCD_RW(0x01<<28)IOSET0=LCD_RD

9TFT液晶彩色圖像顯示方法#defineLCD_RD_CLR()#defineLCD_Data_GPIO()#defineLCD_Data_Out()#defineLCD_Data_In()#defineLCD_Data_BUS_Clr()#defineLCD_Data_BUS_Set(n)#defineLCD_Data_Read()

IOCLR0=LCD_RDPINSEL1&=~(0x0000ffff)IODIR0|=(0xff<<16)IODIR0&=~(0xff<<16)IOCLR0=(0xff<<16)IOSET0=(n<<16)((IOPIN0&(0xff<<16))>>16)上述代碼不需要作重復(fù)的解釋了,而有關(guān)LPC2000系列ARM7芯片的相關(guān)寄存器,請大家各自查找手冊來進(jìn)行了解。修改文件首先要修改的是三個基本的函數(shù),即LCD寄存器寫入、數(shù)據(jù)寫入以及數(shù)據(jù)讀出函數(shù),當(dāng)然它們的程序控制流程是需要參考MzT24的控制時序的,在前面的小節(jié)中已有描述。LCD寄存器寫入函數(shù):voidLCD_RegWrite(LCDBYTECommand){LCD_Ctrl_Clr(LCD_A0|LCD_CS);LCD_RW_CLR();LCD_RW_SET();LCD_Data_BUS_Clr();LCD_Data_BUS_Set(Command);LCD_RW_CLR();LCD_RW_SET();

//LCD_CS_SET();}代碼中首先對A0控制線清零,以指明將要進(jìn)行的是寄存器寫入操作,即寫入當(dāng)前操作的寄存器索引號,同時將CS置低,以選定MzT24模塊;而MzT24模塊的寄存器索引號僅低八位有效,但模塊的TFT控制器要求所有對總線的寫入操作都必須完成16位數(shù)據(jù)的寫入,即并行總線要操作兩次寫入操作,先寫入高八位再寫入低八位,只不過在寄存器寫入操作時(寫入當(dāng)前要操作的寄存器索引號)高八位是無效的操作而已;因此,在CS置低后,先在RW線上進(jìn)行一次寫入的操作(不管當(dāng)有LCD的數(shù)據(jù)端口上的狀態(tài)如何,反正是無效的,但只是必須的而已);而后對LPC2292連接著MzT24模塊的8位數(shù)據(jù)口線狀態(tài)進(jìn)行清零(LCD_Data_BUS_Clr()),然后再將要寫入的數(shù)值載入端口:LCD_Data_BUS_Set(Command)。此時要寫入的數(shù)值已經(jīng)在端口上準(zhǔn)備好了,則再在RW線上進(jìn)行一次有效的寫入操作(一次RW線的低電平,隨后即恢復(fù)到高電平狀態(tài)),完成后CS置高。LCD數(shù)據(jù)寫入函數(shù)如前面的內(nèi)容所述,實際上MCU對MzT24模塊的操作就是對MzT24模塊上的TFT控制器的寄存器進(jìn)行數(shù)據(jù)寫入操作,只不過在剛才介紹的寄存器寫入函數(shù)僅是指定當(dāng)前要操作的TFT控制器的寄存器索引號而已;數(shù)據(jù)的寫入需要寫入完整的16位數(shù)據(jù),即高低八位的數(shù)據(jù)都將是有效的,代碼如下:10TFT液晶彩色圖像顯示方法voidLCD_DataWrite(LCDBYTEDat){LCD_Ctrl_Set(LCD_A0+LCD_RD);LCD_CS_CLR();LCD_Data_BUS_Clr();LCD_Data_BUS_Set((unsignedchar)(Dat>>8));LCD_RW_CLR();LCD_RW_SET();

//LCD_Data_BUS_Clr();LCD_Data_BUS_Set((unsignedchar)Dat);LCD_RW_CLR();LCD_RW_SET();

//LCD_CS_SET();}LCD數(shù)據(jù)讀出函數(shù)與大多數(shù)的液晶模塊類似,MzT24模塊要讀出顯存中的數(shù)據(jù)時,如果是第一次讀取數(shù)據(jù)(第一次指的是之前的一次或一次以上的對模塊的操作不是讀操作),則需要先進(jìn)行一次完整的空讀操作。代碼如下:LCDBYTELCD_DataRead(void){LCDBYTERead_Data;LCD_Data_In();LCD_Ctrl_Set(LCD_A0);LCD_CS_CLR();LCD_RD_CLR();LCD_RD_SET();LCD_RD_CLR();LCD_RD_SET();LCD_RD_CLR();Read_Data=LCD_Data_Read();Read_Data=Read_Data<<8;LCD_RD_SET();LCD_RD_CLR();Read_Data|=LCD_Data_Read();LCD_Ctrl_Set(LCD_CS+LCD_RD);LCD_Data_Out();returnRead_Data;}11TFT液晶彩色圖像顯示方法LCD繪點函數(shù)相比單色的LCD模塊,彩色的TFT模塊更是應(yīng)該基于繪點函數(shù)來進(jìn)行圖形界面的繪制了,這里是繪點函數(shù)的代碼:voidWrite_Dot_LCD(DOTBYTEx,DOTBYTEy,LCDBYTEi){LCD_RegWrite(0x20);LCD_DataWrite(x);LCD_RegWrite(0x21);LCD_DataWrite(y);LCD_RegWrite(0x22);LCD_DataWrite(i);}LCD初始化程序同樣,MzT24模塊也需要進(jìn)行初始化之后方可顯示,而端口亦需要進(jìn)行初始化(這個是針對LPC2000系列ARM7來說了),有關(guān)初始化的幾個函數(shù)如下:unsignedshortLCD_IndexAuto=0;voidLCD_Init(void){//LCD驅(qū)動所使用到的端口的初始化LCD_PortInit();//根據(jù)LCD顯示的配置,設(shè)置LCD的數(shù)據(jù)地址指針自動增加特性if(LCD_XY_Switch==1){LCD_IndexAuto|=0x0008;if(LCD_X_Rev==0)LCD_IndexAuto|=0x0020;elseLCD_IndexAuto&=~0x0020;if(LCD_Y_Rev==0)LCD_IndexAuto|=0x0010;elseLCD_IndexAuto&=~0x0010;}else{LCD_IndexAuto&=~0x0008;if(LCD_X_Rev==0)LCD_IndexAuto|=0x0010;12TFT液晶彩色圖像顯示方法elseLCD_IndexAuto&=~0x0010;if(LCD_Y_Rev==0)LCD_IndexAuto|=0x0020;elseLCD_IndexAuto&=~0x0020;}LCD_IndexAuto|=0x1100;//endLCD_RE_CLR();TimeDelay(200);LCD_RE_SET();TimeDelay(20);LCD_RegWrite(0x01);LCD_DataWrite(0x0100);LCD_RegWrite(0x02);LCD_DataWrite(0x0700);LCD_RegWrite(0x03);LCD_DataWrite(LCD_IndexAuto);

//DriverOutputContralRegister//LCDDrivingWaveformContral//EntryMode設(shè)置//指針從左至右自上而下的自動增模式//NormalMode(WindowModedisable)//RGB格式//16位數(shù)據(jù)2次傳輸?shù)?總線設(shè)置LCD_RegWrite(0x04);LCD_DataWrite(0x0000);LCD_RegWrite(0x08);LCD_DataWrite(0x0207);LCD_RegWrite(0x09);LCD_DataWrite(0x0000);LCD_RegWrite(0x0A);LCD_DataWrite(0x0000);LCD_RegWrite(0x0C);LCD_DataWrite(0x0000);LCD_RegWrite(0x0D);LCD_DataWrite(0x0000);LCD_RegWrite(0x0F);LCD_DataWrite(0x0000);TimeDelay(20);LCD_RegWrite(0x07);LCD_DataWrite(0x0101);

//ScallingControlregister//DisplayControl2//DisplayControl3//FrameCycleControl//ExternalDisplayInterfaceControl1//FrameMakerPosition//ExternalDisplayInterfaceControl2//DisplayControlTimeDelay(20);13TFT液晶彩色圖像顯示方法LCD_RegWrite(0x10);LCD_DataWrite(0x16B0);LCD_RegWrite(0x11);LCD_DataWrite(0x0001);LCD_RegWrite(0x17);LCD_DataWrite(0x0001);LCD_RegWrite(0x12);LCD_DataWrite(0x0138);LCD_RegWrite(0x13);LCD_DataWrite(0x0800);LCD_RegWrite(0x29);LCD_DataWrite(0x0009);LCD_RegWrite(0x2a);LCD_DataWrite(0x0009);LCD_RegWrite(0xa4);LCD_DataWrite(0x0000);LCD_RegWrite(0x50);LCD_DataWrite(0x0000);LCD_RegWrite(0x51);LCD_DataWrite(0x00EF);LCD_RegWrite(0x52);LCD_DataWrite(0x0000);LCD_RegWrite(0x53);LCD_DataWrite(0x013F);LCD_RegWrite(0x60);LCD_DataWrite(0xA700);

//0x14B0//0x0007//0x0000//0x013B//0x0800

//PowerControl1//PowerControl2//PowerControl3//PowerControl4//PowerControl5//NVMreaddata2//NVMreaddata3//設(shè)置操作窗口的X軸開始列//設(shè)置操作窗口的X軸結(jié)束列//設(shè)置操作窗口的Y軸開始行//設(shè)置操作窗口的Y軸結(jié)束行//DriverOutputControl//設(shè)置屏幕的點數(shù)以及掃描的起始行LCD_RegWrite(0x61);LCD_DataWrite(0x0001);LCD_RegWrite(0x6A);LCD_DataWrite(0x0000);LCD_RegWrite(0x80);LCD_DataWrite(0x0000);LCD_RegWrite(0x81);LCD_DataWrite(0x0000);LCD_RegWrite(0x82);LCD_DataWrite(0x0000);LCD_RegWrite(0x83);LCD_DataWrite(0x0000);

//DriverOutputControl//VerticalScrollControl//DisplayPosition–PartialDisplay1//RAMAddressStart–PartialDisplay1//RAMaddressEnd-PartialDisplay1//DisplayPosition–PartialDisplay2LCD_RegWrite(0x84);14TFT液晶彩色圖像顯示方法LCD_DataWrite(0x0000);LCD_RegWrite(0x85);LCD_DataWrite(0x0000);LCD_RegWrite(0x90);LCD_DataWrite(0x0013);LCD_RegWrite(0x92);LCD_DataWrite(0x0000);LCD_RegWrite(0x93);LCD_DataWrite(0x0003);LCD_RegWrite(0x95);LCD_DataWrite(0x0110);

//RAMAddressStart–PartialDisplay2//RAMaddressEnd–PartailDisplay2//FrameCycleControl//PanelInterfaceControl2//PanelInterfacecontrol3//FrameCycleControlLCD_RegWrite(0x07);LCD_DataWrite(0x0173);LCD_Fill(LCD_INITIAL_COLOR);}需要說明一下的是,MzT24模塊的0x03寄存器的設(shè)置,它的設(shè)置可以根據(jù)需要配置MzT24模塊的地址指針AC的自動增長方式以及順序,以及TFT像素點的三元色信息排布選擇等,這將會在一些特殊的應(yīng)用中很有用,特別是對于在使用MzT24模塊時,用戶需要將屏幕的顯示進(jìn)行軟件的坐標(biāo)變換時,非常有用;從代碼中就可以看到,0x03寄存器的值的設(shè)置是與X和Y軸的坐標(biāo)關(guān)系來決定的。其它的函數(shù)就不作過多的說明了,建議在理解程序的時候,多參考一下器件或者模塊的手冊,或者在有條件的情況下多動手做做實驗。的配置修改MzT24模塊相比MzL02模塊點數(shù)多了許多,而且數(shù)據(jù)的位寬也變成了16位的寬度(此處的數(shù)據(jù)位寬并不指總線端口的位寬,而是指每個像素點需要用多少位的數(shù)據(jù)來表示其顯示的狀態(tài)),所以必需要對配置文件進(jìn)行一些修改,如下:typedefunsignedshortLCDBYTE;typedefunsignedshortDOTBYTE;

//重定義有關(guān)LCD的,也即LCD當(dāng)中的數(shù)據(jù)位寬//重定義有關(guān)LCD的,也即LCD的點陣數(shù)量typedefsignedshort

DISWORD;

//重定義在文件中一些中間處理的數(shù)據(jù)的寬度typedefconstunsignedcharFLASH;

//重定義驅(qū)動當(dāng)中存放到CODE的數(shù)據(jù)類型聲明#defineLCD_X_MAX#defineLCD_Y_MAX

240-1320-1

//屏幕的X軸的物理寬度//屏幕的Y軸的物理寬度

15TFT液晶彩色圖像顯示方法為了速度作一些簡單的優(yōu)化到此,通用版LCD驅(qū)動程序基本上已經(jīng)修改完成了,其實除了去理解TFT模塊的控制方法以及相關(guān)的寄存器的設(shè)置方法比較費勁之外,整個程序修改的過程還是很簡單的,只不過是去修改一些宏的定義,然后改一些基本的函數(shù)而已,相信多做過幾個液晶顯示程序的老手都能很快的理解這點。如前所述,相比單色的液晶模塊,彩色TFT液晶模塊在驅(qū)動顯示時,在繪制圖形時,在顯示圖片時,需要傳輸?shù)臄?shù)據(jù)量將會大大增多,所以有一些需要頻繁調(diào)用的子程序,可以將其進(jìn)行一下優(yōu)化;在此我們將LCD_DataWrite函數(shù)和LCD_RegWrite函數(shù)進(jìn)行了調(diào)整,將它們用宏定義的形式封裝成函數(shù),這樣可以在它們被頻繁調(diào)用時省掉一些參數(shù)傳遞以及堆棧操作的時間。因此,我們將前面所介紹的LCD_DataWrite函數(shù)和LCD_RegWrite函數(shù)從中移除,而在當(dāng)中對其進(jìn)行宏定義,如下:#defineLCD_RegWrite(n)#defineLCD_DataWrite(n)

LCD_Ctrl_Clr(LCD_A0|LCD_CS);LCD_RW_CLR();\LCD_RW_SET();LCD_Data_BUS_Clr();\LCD_Data_BUS_Set(n);\LCD_RW_CLR();LCD_RW_SET();LCD_CS_SET()LCD_Ctrl_Set(LCD_A0+LCD_RD);LCD_CS_CLR();\LCD_Data_BUS_Clr();\LCD_Data_BUS_Set((unsignedchar)(n>>8));\LCD_RW_CLR();LCD_RW_SET();LCD_Data_BUS_Clr();\LCD_Data_BUS_Set((unsignedchar)n);LCD_RW_CLR();\LCD_RW_SET();LCD_CS_SET()于此,基本上LPC2292控制MzT24模塊顯示的基本驅(qū)動程序算是完成了。利用外部總線連接MzT24LPC2292芯片擁有寬度為32位的外部總線,可以根據(jù)使用情況將其配置為8位數(shù)據(jù)寬度、16位數(shù)據(jù)寬度或者32位的數(shù)據(jù)寬度,因此為了能夠更好的驅(qū)動MzT24模塊,在此將介紹使用LPC2292的外部總線連接MzT24模塊,包括電路的連接以及代碼的修改。LPC2292的外部總線端口是與GPIO復(fù)用的,在使用前需要配置好LPC2292的相關(guān)寄存器,主要是PINSEL2寄存器(設(shè)置端口的功能,它可以設(shè)置LPC2292的P0端口之外的端口的功能,包括配置JTAG、外部總線等等)、BCFG0~3(可以分別配置四個區(qū)塊的地址對應(yīng)的外設(shè));但需要提醒各位,配置PINSEL2寄存器時千萬要詳細(xì)閱讀LPC芯片的手冊,小心設(shè)置,否則可能會將JTAG口禁用;在此就不多作詳述。當(dāng)然,在改用外部總線來對MzT24模塊進(jìn)行驅(qū)動連接后,也是需要對驅(qū)動程序的相關(guān)內(nèi)容進(jìn)行修改,在此我們假設(shè)前面使用GPIO來對MzT24的連接的驅(qū)動程序已經(jīng)是好的,則僅需要修改的配置以及中的一個函數(shù)即可。16TFT液晶彩色圖像顯示方法下圖為連接示意圖:LPC2292的外存空間的分配在一些資料中都有詳細(xì)的說明,這里就不多說了,圖中我們使用了CS2經(jīng)過一個與非門后,再和外部總線的地址線XA19進(jìn)行與非,也就是說,當(dāng)CS2為低電平,且XA19為高時,連接到LCD的片選CS上的與非門輸出才會是低電平,此時正好選中LCD的CS;由此可以確定如要通過外部總線來操作MzT24模塊時,只需要對0x82080000~0x820FFFFF的外部空間進(jìn)行操作就可以了;而為了確定對MzT24的讀寫操作是針對寄存器的還是針對數(shù)據(jù)的操作,我們將LPC2292的XA0地址線連接至LCD的RS線上,以XA0的狀態(tài)來決定;那在此確定,對MzT24模塊進(jìn)行寄存器寫入操作時,對應(yīng)的地址是:0x82080000;而對數(shù)據(jù)進(jìn)行讀寫的地址是:0x82080001。此外,在上圖中,使用端口來控制MzT24模塊的復(fù)位。而在當(dāng)中,需要改為如下代碼:#defineLCD_DAT_W#defineLCD_DAT_R#defineLCD_COM_W#defineLCD_COM_R#defineLCD_RE#defineLCD_RE_SET()#defineLCD_RE_CLR()#defineLCD_Ctrl_GPIO()

(*((volatileunsignedchar*)0x82080001))(*((volatileunsignedchar*)0x82080001))(*((volatileunsignedchar*)0x82080000))(*((volatileunsignedchar*)0x82080000))(0x01<<24)IOSET1=LCD_REIOCLR1=LCD_REIODIR1|=LCD_RE;IOSET1=LCD_RE;#defineLCD_DataWrite(nW)LCD_DAT_W=(unsignedchar)(nW>>8);\LCD_DAT_W=(unsignedchar)nW17TFT液晶彩色圖像顯示方法#defineLCD_RegWrite(n)

LCD_COM_W=0x00;\LCD_COM_W=n然后在當(dāng)中,修改LCD_PortInit函數(shù),代碼如下:voidLCD_PortInit(void){BCFG2=0x00000440;PINSEL2=0x0fe041c4;LCD_Ctrl_GPIO();}18TFT液晶彩色圖像顯示方法3TFT模塊的擴展功能驅(qū)動程序在之前介紹的通用版LCD驅(qū)動程序當(dāng)中,其實對于一些字符顯示、簡單繪圖操作是足夠了的,當(dāng)然它們也是作為圖形界面編程的最底層功能程序模塊了;但往往我們在使用液晶模塊進(jìn)行人機界面的設(shè)計時,經(jīng)常會結(jié)合液晶模塊的自身特點來作一些擴展功能的程序,以充分利用模塊的特點來達(dá)到所其望的目標(biāo);比如,MzT24模塊就提供了一個很好的功能:窗口操作,即在顯存對應(yīng)的顯示區(qū)域內(nèi),設(shè)置一個指定的顯示區(qū)域窗口,然后可以對其進(jìn)行連續(xù)的數(shù)據(jù)寫入/讀出操作,此時MzT24模塊的TFT控制器的AC地址指針是按照設(shè)置的增長方向在該窗口范圍內(nèi)進(jìn)行依次(每進(jìn)行一次數(shù)據(jù)操作移動一次AC)變化;這對于進(jìn)行矩形區(qū)域填充數(shù)據(jù)是非常有用的。當(dāng)然,我們設(shè)計的這幾個擴展功能驅(qū)動程序也是基于通用版LCD驅(qū)動程序上的,整合了一些在圖形界面繪制時會經(jīng)常使用到的功能函數(shù)。在此,將主要介紹兩個擴展功能驅(qū)動程序:它們與通用版LCD驅(qū)動程序的關(guān)系如下圖所示:為了簡化設(shè)計,在本書附帶的例程當(dāng)中,對基于底層的通用版LCD驅(qū)動程序提出了要求:在X和Y軸坐標(biāo)系不進(jìn)行交換的前提下擴展的確和。也就是說,在此中有關(guān)于X和Y軸坐標(biāo)體系的定義,都要為0。3.1LCD_Extend一些有用的功能擴展就實而言,如果我們沒有編寫這個擴展功能程序,單純是利用通用版LCD驅(qū)動程序19TFT液晶彩色圖像顯示方法的功能程序也是一樣可以實現(xiàn)所需要的繪圖效果的,只是這樣不能夠充分發(fā)揮液晶模塊上的控制器的自有特性而已。比如文件當(dāng)中,目前我們提供的代碼基本上都是針對窗口操作的功能進(jìn)行設(shè)計的,不單單只是為了充分發(fā)揮LCD控制器的特性,亦是為了將一些TFT液晶模塊在進(jìn)行各種繪圖操作時,常使用到的功能程序接口;這點又會回到在上一本書中所提到的:為了程序的通用性和可移植性。在當(dāng)中,提供了一個窗口填充的功能函數(shù),實際上,它所完成的繪圖效果就與通用版LCD驅(qū)動程序當(dāng)中的填充矩形是一樣的,只不過,利用LCD的特性之后,完成的速度會加快了而已。功能代碼分析在當(dāng)中,大概也分了兩層的功能函數(shù),一類是前面帶有“LCD_”前綴的,一類是沒有的,顯然,希望用戶在應(yīng)用層直接調(diào)用該文件的功能函數(shù)時調(diào)用的是后者。先來了解一下設(shè)置窗口函數(shù)://================================================================//函數(shù):voidLCD_SetWindow(unsignedintx_s,unsignedinty_s,//

unsignedintx_e,unsignedinty_e)//描述:設(shè)置窗口模式,并將地址指向窗口的首地址//參數(shù):x_s

窗口在LCD屏上的物理X軸開始位置////////版本:

y_s窗口在LCD屏上的物理Y軸開始位置x_e窗口在LCD屏上的物理X軸結(jié)束位置y_e窗口在LCD屏上的物理Y軸結(jié)束位置//

2008/01/15

Firstversion//================================================================voidLCD_SetWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,unsignedinty_e){if(x_e>Dis_X_MAX)x_e=Dis_X_MAX;if(y_e>Dis_Y_MAX)y_e=Dis_Y_MAX;LCD_RegWrite(0x50);LCD_DataWrite(x_s);LCD_RegWrite(0x51);LCD_DataWrite(x_e);LCD_RegWrite(0x52);LCD_DataWrite(y_s);LCD_RegWrite(0x53);LCD_DataWrite(y_e);

//設(shè)置操作窗口的X軸開始列//設(shè)置操作窗口的X軸結(jié)束列//設(shè)置操作窗口的Y軸開始行//設(shè)置操作窗口的Y軸結(jié)束行LCD_RegWrite(0x03);Set_Dot_Addr(x_s,y_s);}窗口的設(shè)置很簡單,只需要重新設(shè)置0x50~0x53的寄存器值即可,相當(dāng)于重新設(shè)置一個對應(yīng)在原TFT20TFT液晶彩色圖像顯示方法屏上的顯示區(qū)域當(dāng)中的一個窗口范圍,分別要設(shè)置窗口在原坐標(biāo)系的X、Y軸起點以及X、Y軸終點。在設(shè)置完成后,調(diào)用Set_Dot_Addr函數(shù)將當(dāng)前操作的顯存地址指針指向該窗口左上角原點位置。結(jié)束窗口操作的設(shè)置,很簡單,只需要把窗口的范圍設(shè)置成實際的屏蔽大小就可以了,也就是把起點的X、Y軸坐標(biāo)設(shè)回0,然后終點的X、Y軸坐標(biāo)設(shè)置回到最大即可,代碼如下:voidLCD_EndWindow(void){LCD_RegWrite(0x50);LCD_DataWrite(0x0000);LCD_RegWrite(0x51);LCD_DataWrite(0x00EF);LCD_RegWrite(0x52);LCD_DataWrite(0x0000);LCD_RegWrite(0x53);LCD_DataWrite(0x013F);

//設(shè)置操作窗口的X軸開始列//設(shè)置操作窗口的X軸結(jié)束列//設(shè)置操作窗口的Y軸開始行//設(shè)置操作窗口的Y軸結(jié)束行}而在當(dāng)中,提供了一個填充矩形區(qū)域的函數(shù),與通用版LCD驅(qū)動程序當(dāng)中繪制矩形塊是一樣的作用,只不過利用了窗口特性,運行速度會加快而已,代碼如下://========================================================================//函數(shù):voidLCD_FillWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,////描述:填充窗口

unsignedinty_e,unsignedintColor)//參數(shù):x_s

窗口在LCD屏上的物理X軸開始位置//////

y_s窗口在LCD屏上的物理Y軸開始位置x_e窗口在LCD屏上的物理X軸結(jié)束位置y_e窗口在LCD屏上的物理Y軸結(jié)束位置////版本://

Color2008/01/15

填充色Firstversion//========================================================================voidLCD_FillWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,unsignedinty_e,unsignedintColor){unsignedintDot_Nums=0;if(x_e>LCD_X_MAX)x_e=Dis_X_MAX;if(y_e>LCD_Y_MAX)y_e=Dis_Y_MAX;LCD_RegWrite(0x50);21TFT液晶彩色圖像顯示方法LCD_DataWrite(x_s);LCD_RegWrite(0x51);LCD_DataWrite(x_e);LCD_RegWrite(0x52);LCD_DataWrite(y_s);LCD_RegWrite(0x53);LCD_DataWrite(y_e);LCD_RegWrite(0x03);Dot_Nums=(x_e-x_s+1)*(y_e-y_s+1);Set_Dot_Addr(x_s,y_s);LCD_Fill_s(Dot_Nums,Color);LCD_RegWrite(0x50);LCD_DataWrite(0x0000);LCD_RegWrite(0x51);LCD_DataWrite(0x00EF);LCD_RegWrite(0x52);LCD_DataWrite(0x0000);LCD_RegWrite(0x53);LCD_DataWrite(0x013F);

//設(shè)置操作窗口的X軸開始列//設(shè)置操作窗口的X軸結(jié)束列//設(shè)置操作窗口的Y軸開始行//設(shè)置操作窗口的Y軸結(jié)束行//設(shè)置操作窗口的X軸開始列//設(shè)置操作窗口的X軸結(jié)束列//設(shè)置操作窗口的Y軸開始行//設(shè)置操作窗口的Y軸結(jié)束行}在LCD_FillWindow函數(shù)當(dāng)中,先根據(jù)要填充的區(qū)域,設(shè)置好該區(qū)域的窗口范圍,然后連續(xù)的填充數(shù)據(jù)至該窗口當(dāng)中,而無需在填充的過程中判斷以及改變填充的點的地址,它會從該窗口起始的點開始將數(shù)據(jù)填入顯存,填充的數(shù)量由該窗口范圍內(nèi)像素點的數(shù)量決定。在前面的程序的基礎(chǔ)之上,我們再將其進(jìn)行封裝,并將這幾個函數(shù)作為用戶調(diào)用的接口,代碼如下://========================================================================//函數(shù):voidFillWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,//

unsignedinty_e,unsignedintColor)//描述:填充窗口//參數(shù):無//返回:無//========================================================================voidFillWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,unsignedinty_e,unsignedintColor){Match_xy(x_s,x_e);Match_xy(y_s,y_e);LCD_FillWindow(x_s,y_s,x_e,y_e,Color);22TFT液晶彩色圖像顯示方法}//========================================================================//函數(shù):voidSetWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,//

unsignedinty_e)//描述:設(shè)置LCD進(jìn)入窗口模式//參數(shù)://========================================================================voidSetWindow(unsignedintx_s,unsignedinty_s,unsignedintx_e,unsignedinty_e){Match_xy(x_s,x_e);Match_xy(y_s,y_e);LCD_SetWindow(x_s,y_s,x_e,y_e);}//========================================================================//函數(shù):voidEndWindow(void)//描述:設(shè)置LCD結(jié)束窗口模式//參數(shù):無//========================================================================voidEndWindow(void){LCD_EndWindow();}3.2Dis_Window當(dāng)中定義的函數(shù),實際上與中的函數(shù)在功能是是基本類似的,只不過,當(dāng)中的代碼基本上就是為了本書介紹的BMP文件、JPG文件解碼顯示而使用的,更多偏向于軟件的層面,基于之上,銜接BMP文件、JPG文件解碼顯示;這樣做是為了在移植解碼顯示程序到另外的MCU平臺或者TFT液晶模塊上時,不會由于MCU或TFT模塊的特性不一樣而導(dǎo)至改動的代碼變得繁雜,盡可能的把需要改動的地方限制在Dis_Window當(dāng)中即可。當(dāng)中的代碼偏向軟件層面,在當(dāng)中,定義有一個結(jié)構(gòu)體:typedefstructDIS_WINDOW{unsignedshortx_s;unsignedshortx_e;unsignedshorty_s;unsigne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論