基于STM32F103的觸摸屏驅(qū)動(dòng)模塊設(shè)計(jì)之歐陽(yáng)家百創(chuàng)編_第1頁(yè)
基于STM32F103的觸摸屏驅(qū)動(dòng)模塊設(shè)計(jì)之歐陽(yáng)家百創(chuàng)編_第2頁(yè)
基于STM32F103的觸摸屏驅(qū)動(dòng)模塊設(shè)計(jì)之歐陽(yáng)家百創(chuàng)編_第3頁(yè)
基于STM32F103的觸摸屏驅(qū)動(dòng)模塊設(shè)計(jì)之歐陽(yáng)家百創(chuàng)編_第4頁(yè)
基于STM32F103的觸摸屏驅(qū)動(dòng)模塊設(shè)計(jì)之歐陽(yáng)家百創(chuàng)編_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編基于STM32F103x的LCD觸摸屏驅(qū)動(dòng)的設(shè)計(jì)歐陽(yáng)家百(2021.03.07)姓名:徐進(jìn)東學(xué)號(hào): 10030227班級(jí):10計(jì)卓目錄1概述LCD液晶顯示屏與觸摸屏在嵌入式系統(tǒng)中的應(yīng)用越來(lái)越普及。他們是非常簡(jiǎn)單、方便、自然的人機(jī)交互方式,目前廣泛應(yīng)用于便攜式儀器、智能家電、掌上設(shè)備等領(lǐng)域。觸摸屏與LCD液晶顯示技術(shù)的緊密結(jié)合,成了主流配置。LCD液晶顯示屏(LCDModule,LCM)是一種將液晶顯示器件、連接件、集成電路、PCB線路板、背光源以及結(jié)構(gòu)件裝配在儀器的組件。觸摸屏技術(shù)在我國(guó)的應(yīng)用時(shí)間不是太長(zhǎng),但它已經(jīng)成長(zhǎng)為人們最為接受的輸入方式。利用這種技術(shù)人們只需觸碰屏幕就可以對(duì)主機(jī)進(jìn)行操作,是人機(jī)交互更為方便,直截了當(dāng)。本文檔是對(duì)LCD液晶顯示屏和觸摸屏驅(qū)動(dòng)的設(shè)計(jì)做深入介紹。LCD液晶顯示屏LC液晶顯示屏原理液晶(LiquidCrystal):是一種介于固態(tài)和液態(tài)之間的具有規(guī)則性分子排列,及晶體的光學(xué)各向異性的有機(jī)化合物,液晶在受熱到一定溫度的時(shí)候會(huì)呈現(xiàn)透明狀的液體狀態(tài),而冷卻則會(huì)出現(xiàn)結(jié)晶顆粒的混濁固體狀態(tài),因?yàn)槲锢砩暇哂幸后w與晶體的特性,故稱之為“液晶”。液晶顯示器LCD(LiquidCrystalDisplay):是新型平板顯示器件。顯示器中的液晶體并不發(fā)光,而是控制外部光的通過(guò)量。當(dāng)外部光線通過(guò)液晶分子時(shí),液晶分子的排列扭曲狀態(tài)不同,使光線通過(guò)的多少就不同,實(shí)現(xiàn)了亮暗變化,可重現(xiàn)圖像。液晶分子扭曲的大小由加在液晶分子兩邊的電壓差的大小決定。因而可以實(shí)現(xiàn)電到光的轉(zhuǎn)換。即用電壓的高低控制光的通過(guò)量,從而把電信號(hào)轉(zhuǎn)換成光像。LCD液晶顯示屏分類位段型液晶顯示模塊位段型液晶顯示模塊是一種由位段型液晶顯示器件與專用的集成電路組裝成一體的功能部件。字符型液晶顯示模塊字符型液晶顯示模塊是由字符液晶顯示器件與專用的行、列驅(qū)動(dòng)器、控制器、必要的連接件以及結(jié)構(gòu)件裝配而成,可以顯示數(shù)字和西文字符。圖形點(diǎn)陣型液晶顯示模塊圖形點(diǎn)陣型顯示模塊就是可以動(dòng)態(tài)地顯示字符和圖片的LCD。圖形點(diǎn)陣液晶模塊的點(diǎn)陣像素連續(xù)排列,行和列在拍布中均沒(méi)有空隔,不僅可以顯示字符,還可以顯示連續(xù)完整的圖像。圖形點(diǎn)陣型液晶顯示模塊有三種類型可供選擇:行列驅(qū)動(dòng)型,行列驅(qū)動(dòng)控制型及行列控制型。歐陽(yáng)家百創(chuàng)編觸摸屏驅(qū)動(dòng)原理概述電阻觸摸屏工作原理電阻觸摸屏是采用電阻模擬量技術(shù)。它是一層玻璃作為基層,上面涂有一層透明氧化金屬(ITO氧化銦)導(dǎo)電層,再蓋有一層玻璃或是外表面硬化處理的光滑的塑料層;內(nèi)表面也涂有一層ITO導(dǎo)電層。它們之間有許多細(xì)小的透明隔離點(diǎn)把兩導(dǎo)電層隔開(kāi)絕緣,每當(dāng)有筆或是手指按下時(shí),兩導(dǎo)電層就相互接觸。而形成電路。導(dǎo)電層的兩端都涂有一條銀膠,稱為該工作面的一對(duì)電極。上下兩個(gè)導(dǎo)電層一個(gè)是水平方向,一個(gè)是豎直方向,分別用來(lái)測(cè)量X和Y的坐標(biāo)位置。在水平面上的電極稱為X+電極和X-電極,在豎直平面的電極稱為Y+電極和Y-電極。工作時(shí),兩個(gè)電極根據(jù)測(cè)量需要提供參考電壓或是作為測(cè)量端對(duì)接觸點(diǎn)的位置進(jìn)行測(cè)量。當(dāng)測(cè)量接觸點(diǎn)X坐標(biāo)的時(shí)候,導(dǎo)電層上的X+電極和X-電極分別上參考電壓和地;Y電極不加電壓,那么X電極間會(huì)形成均勻的電壓分布,用Y+電極作為測(cè)量點(diǎn),得到的電壓值通過(guò)A/D轉(zhuǎn)換,就可對(duì)應(yīng)地判斷出接觸點(diǎn)的X坐標(biāo)。Y坐標(biāo)亦是類似,只需改成對(duì)Y電極加電壓而X電極不加電壓即可。SubstratTouchcreatescontactbetweenITOlayersITOconductivecostingSpacerPETfilmSpacerSubstratTouchcreatescontactbetweenITOlayersITOconductivecostingSpacerPETfilmSpacerdot圖4-1電阻屏原理圖歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編歐陽(yáng)家百創(chuàng)編觸摸屏控制實(shí)現(xiàn)對(duì)觸摸屏的控制有專用的控制芯片。觸摸屏的控制芯片主要完成兩個(gè)任務(wù):一是完成電極電壓的切換,二是采集接觸點(diǎn)處的電壓值并實(shí)現(xiàn)A/D轉(zhuǎn)換。觸摸屏控制芯片主要由觸摸檢測(cè)部件和觸摸屏控制器組成。觸摸檢測(cè)部件安裝在顯示器屏幕前面,用于檢測(cè)用戶觸摸位置,接受位置信號(hào)后送至觸摸屏控制器;而觸摸屏控制器的主要作用是從觸摸點(diǎn)檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給MPU,同時(shí)它能接收MPU發(fā)來(lái)的命令并加以執(zhí)行。設(shè)計(jì)目標(biāo)基于STM32硬件開(kāi)發(fā)平臺(tái)與3寸液晶屏組成液晶顯示與觸摸屏人機(jī)交互系統(tǒng)。系統(tǒng)硬件設(shè)計(jì)本實(shí)驗(yàn)的主要硬件由STM32微處理器的FSMC接口,3寸屏?xí)r序轉(zhuǎn)換板以及觸摸屏控制板組成。LCD液晶模塊時(shí)序轉(zhuǎn)換與緩沖觸摸屏控制電路白色背光板LCD液晶模塊時(shí)序轉(zhuǎn)換與緩沖觸摸屏控制電路白色背光板圖5-1硬件系統(tǒng)結(jié)構(gòu)圖§1乂3微處理器FSMC接口FSMC模塊能夠與同步或異步的存儲(chǔ)器和16位的PC存儲(chǔ)器卡接口,它的主要作用是:將AHB傳輸信號(hào)轉(zhuǎn)換到適當(dāng)?shù)耐獠吭O(shè)備協(xié)議滿足訪問(wèn)外部設(shè)備的時(shí)序要求,所有的外部存儲(chǔ)器共享控制器輸出的地址、數(shù)據(jù)和控制信號(hào),每個(gè)外部設(shè)備可以通過(guò)一個(gè)唯一的片選信號(hào)加以區(qū)分。FSMC在任一時(shí)刻只訪問(wèn)一個(gè)外部設(shè)備。FSMC具有下列主要功能:具有靜態(tài)存儲(chǔ)器接口的器件包括:——靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)——只讀存儲(chǔ)器(ROM) NOR閃存PSRAM(4個(gè)存儲(chǔ)器塊)兩個(gè)NAND閃存塊,支持硬件ECC并可檢測(cè)多達(dá)8K字節(jié)數(shù)據(jù)16位的PC卡支持對(duì)同步器件的成組(Burst)訪問(wèn)模式,如NOR閃存和PSRAM8或16位數(shù)據(jù)總線每一個(gè)存儲(chǔ)器塊都有獨(dú)立的片選控制每一個(gè)存儲(chǔ)器塊都可以獨(dú)立配置時(shí)序可編程以支持各種不同的器件:—等待周期可編程(多達(dá)15個(gè)周期)—總線恢復(fù)周期可編程(多達(dá)15個(gè)周期)—輸出使能和寫(xiě)使能延遲可編程(多達(dá)15周期)——獨(dú)立的讀寫(xiě)時(shí)序和協(xié)議,可支持寬范圍的存儲(chǔ)器和時(shí)序PSRAM和SRAM器件使用的寫(xiě)使能和字節(jié)選擇輸出將32位的AHB訪問(wèn)請(qǐng)求,轉(zhuǎn)換到連續(xù)的16位或8位的,對(duì)外部16位或8位器件的訪問(wèn)具有16個(gè)字,每個(gè)字32位寬的寫(xiě)入FIFO,允許在寫(xiě)入較慢存儲(chǔ)器時(shí)釋放AHB進(jìn)行其它操作。在開(kāi)始一次新的FSMC操作前,F(xiàn)IFO要先被清空。通常在系統(tǒng)復(fù)位或上電時(shí),應(yīng)該設(shè)置好所有定義外部存儲(chǔ)器類型和特性的FSMC寄存器,并保持它們的內(nèi)容不變;當(dāng)然,也可以在任何時(shí)候改變這些設(shè)置。FSMC包含四個(gè)主要模塊:AHB接口(包含F(xiàn)SMC配置寄存器)NOR閃存和PSRAM控制器NAND閃存和PC卡控制器外部設(shè)備接口FSMC框圖如下:

FSMCinterrupttoNVICFromclockcontrollerHCLK5nqEH<NORmemorycon廿oilerConfigurationRegistersNAND/PCCardmemorycontroller與FSMCinterrupttoNVICFromclockcontrollerHCLK5nqEH<NORmemorycon廿oilerConfigurationRegistersNAND/PCCardmemorycontroller與4——□h.n—?Al^r-r■TFSMC_NE[4:1]FSMC_NL(orNADV)FSMC_NBL[1:0]FSMCCLKFSMC_A[25:0]FSMC_D[15:0]FSMC_NOEFSMC_NWEFSMC_NWAITFSMC_NCE[3:2]FSMC_INT[3:2]FSMC_INTRFSMC_NCE4_1FSMC二NCE4二之FSMJNIO疝FSMC_NIOWRFSMC_NIOS16FSMC_NREGFSMC_CDNOR甲SRAMsignalsSharedsignals〔NAND「signalsPCCard

signalsah471s圖5-2FSMC接口結(jié)構(gòu)框圖當(dāng)STM32微處理器使用FSMC接口模塊來(lái)控制LCD液晶顯示模塊時(shí),其接口信號(hào)用于驅(qū)動(dòng)LCD的對(duì)應(yīng)關(guān)系:FSMC接口信號(hào)線LCD接口信號(hào)功能NExCSX片選NWRWRX寫(xiě)使能NOERDX讀使能D[15:0]D[15:0]數(shù)據(jù)信號(hào)A[25:0]RS地址信號(hào)STM32微處理器使用FSMC接口模塊與LCD英特爾8080(類似)接口示意圖:NExwnerekcanbeito4Axirxherexcanbeolo25Si15105圖5-3FSMC接口模塊與LCD英特爾8080接口示意圖

5.2LC瞰晶顯示屏介紹本實(shí)驗(yàn)的LCD液晶顯示器采用宇順公司的3寸彩色液晶屏S95361,分辨率為240*400o3TFT顯示屏焊接在奮斗顯示轉(zhuǎn)接板上,在屏上貼有觸摸屏,通過(guò)40芯的接口與V5連接。40芯接口定義如下:XS1P.A5-SP]L-SCKGXD1.PB--SPI1[■CS3PE1-LCDRSTJ-156/a9 101.11213141516ris192G212223242525272SPA--SP1卜MOS1RA6-SPIl-NITSC)^TNTPDT-LrD-C'SPD11-A16-RSPEIO-D:PE9~E*PD心PES-D5PE1W12PE7-D4GNDPEPkDHPEB-D10PD154PE12-D9PD—DO29313233UPD9-D1+PEI心533Q373S3940PD13-UGffi-PWMPDltKDL?圖5-440芯接口40芯里包含了16位數(shù)據(jù)線,讀寫(xiě)線,命令/數(shù)據(jù)控制線,片選線,LCD硬件復(fù)位線,背光控制線以及觸摸控制線。奮斗板V3和MINI就是通過(guò)這個(gè)接口來(lái)控制顯示。奮斗板MINI和V3都是選用了具有16位FSMC接口STM32F103VET6作為MCU,F(xiàn)SMC接口也可以稱為16位并行接口,時(shí)序同I8080接口。按照顯示屏驅(qū)動(dòng)電路LGDP5420的手冊(cè),為了達(dá)到色彩與顯示效率的平衡,奮斗板采用了16位64K色接口模式。圖5-516位RGB真彩圖在這個(gè)模式每個(gè)像素用5位紅色6位綠色5位藍(lán)色總共16位來(lái)表示,根據(jù)分辨率,幀圖像占用400*240*2=192000字節(jié)。16位8080總線接口時(shí)序如下:i80 SystemBusInterfaceTimingWritetoregisternCS | TOC\o"1-5"\h\zRS |nRDnWR | | |DB[17:0]-Y-WriCeregisterIndex" Write『egi4e「飛己也.ReadfromregisternCS | RS |nRD | |nWR |DB[17:0]^^TWiitere!giwg「"indE!M")(Re;adregister"data圖5-6總線讀寫(xiě)時(shí)序圖5.3觸摸屏控制板TSC2046是一款四線制觸摸屏控制器,內(nèi)涵12位分辨率125kHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器,它支持1.5V?5.25V范圍的低電壓I/O口。TSC2046還具有一個(gè)片上2.5V的參考電壓,可以用于輔助輸入,電池監(jiān)測(cè),和溫度測(cè)量模式。TSC2046芯片主要功能如下:具有四線制觸摸屏接口;可單電源工作,工作電壓范圍2.2V至5.25V;支持1.5V至5.25V的數(shù)字I/O口;內(nèi)部自帶2.5V參考電壓源;能直接測(cè)量電源電壓(0V至6V);片上溫度測(cè)量;觸摸壓力測(cè)量;具有3線制SPI通信接口;自動(dòng)省電;封裝小,TSSOP-16,QFN-16封裝,可在VFBGA-48封裝;其功能框圖如下:

圖5-7TSC2046功能框圖TSC2046最常用封裝TSS0P-16引腳排列如圖9所示,對(duì)應(yīng)的引腳功能定義如下表所示:TopVi電胃T5sop1016DCLKX+215Y4314DINX-413BUSYY-5TSC204612DOLTGND611PENIRQ110IOVDDAUXa9圖5-8TSC2046引腳排列圖弓1腳號(hào)弓1腳名功能描述1VCC電源2,3X+,Y+觸摸屏正電極4,5X-,Y-觸摸屏負(fù)電極6GND電源地7VBAT電池監(jiān)控輸入端。8AUX輔助輸入端。9VREFA/D參考電壓輸入10IOVDD數(shù)字電源輸入端。11PENIRQ筆中斷引腳,當(dāng)有觸摸事件發(fā)生時(shí),向微控制器申請(qǐng)中斷服務(wù)。12DOUT串行數(shù)據(jù)輸出,用于輸出轉(zhuǎn)換后的觸摸位置

數(shù)據(jù),12位工作方式下,最大為4095。13BUSY忙指示,低電平有效14DIN串行數(shù)據(jù)輸入、其控制數(shù)據(jù)通過(guò)該引腳輸入。15CS片選16DCLK外部時(shí)鐘輸入引腳。6系統(tǒng)軟件設(shè)計(jì)6.1系統(tǒng)軟件結(jié)構(gòu)圖6-1系統(tǒng)軟件結(jié)構(gòu)本實(shí)驗(yàn)的觸摸模塊主要的軟件設(shè)計(jì)任務(wù)按功能和層次可分為如下幾個(gè)部分:1、ucos系統(tǒng)建立任務(wù),包括主任務(wù),用戶界面任務(wù),CAN報(bào)文接收任務(wù)等。2、ucGUI圖形用戶界面程序,設(shè)計(jì)相關(guān)操作界面。3、中斷服務(wù)程序,主要使用的中斷處理函數(shù)為USB_HP_CAN_TX_IRQHandler(),執(zhí)行CAN總線接收的中斷處理。4、硬件平臺(tái)初始化程序,包括時(shí)鐘,CAN模塊,觸摸屏等等的初始化。5、LCD的底層驅(qū)動(dòng)函數(shù)。6.2頭文件設(shè)計(jì)本實(shí)驗(yàn)由于使用函數(shù)以及宏定義較多,自定義了頭文件demo.hh。demo.h內(nèi)容如下:

#ifdefGLOBALS#defineEXT#else#defineEXTextern//LED1亮//LED1亮//LED1滅//觸摸SPI片選允許//觸摸SPI//觸摸檢測(cè)#defineLed_ON()GPIO_SetBits(GPIOB,GPIO_Pin_5);#defineLed_OFF()GPIO_ResetBits(GPIOB,GPIO_Pin_5);#defineTP_CS()GPIO_ResetBits(GPIOB,GPIO_Pin_7)#defineTP_DCS()GPIO_SetBits(GPIOB,GPIO_Pin_7)片選允許#definePENGPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)#defineRED0XF800#defineGREEN0X07E0#defineBLUE0X001F#defineBRED0XF81F#defineGRED0XFFE0#defineGBLUE0X07FF;#defineBLACK0;6.2硬件初始化程序硬件平臺(tái)初始化主要包括系統(tǒng)時(shí)鐘配置,F(xiàn)SMC接口的LCD初始化,SPI接口級(jí)觸摸屏芯片初始化,GPIO初始化等系統(tǒng)常用配置。觸摸屏初始化配置通過(guò)調(diào)用tp_Config()函數(shù)實(shí)現(xiàn),代碼如下:voidtp_Config(void){GPIO_InitTypeDefGPIO_InitStructure;SPI_InitTypeDefSPI_InitStructure;/*SPI1時(shí)鐘使能*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);/*SPI1SCK(PA5)、MISO(PA6)、MOSI(PA7)設(shè)置*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //口線速度50MHZGPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復(fù)用模式GPIO_Init(GPIOA,&GPIO_InitStructure);/*SPI1觸摸芯片的片選控制設(shè)置PB7*///口線速度GPIO_InitStructure.GPIO_Pin=//口線速度GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;50MHZGPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽輸出模式GPIO_Init(GPIOB,&GPIO_InitStructure);/*由于SPI1總線上掛接了4個(gè)外設(shè),所以在使用觸摸屏?xí)r,需要禁止其余3個(gè)SPI1外設(shè),才能正常工作*///SPI1SST25VF016B片選//SPI1VS1003片選//SPI1SST25VF016B片選//SPI1VS1003片選//SPI1網(wǎng)絡(luò)模塊片選//SPIGPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_4);CS1GPIO_SetBits(GPIOB,GPIO_Pin_12); //SPICS4GPIO_SetBits(GPIOA,GPIO_Pin_4); //SPINSS/*SPI1總線配置*/SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//全雙工SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//主模式SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; //8位SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low; 〃時(shí)鐘極性空閑狀態(tài)時(shí),SCK保持低電平SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;//時(shí)鐘相位數(shù)據(jù)采樣從第一個(gè)時(shí)鐘邊沿開(kāi)始SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; //軟件產(chǎn)生NSSSPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_64;//波特率控制SYSCLK/64SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; //數(shù)據(jù)高位在前SPI_InitStructure.SPI_CRCPolynomial=7; //CRC多項(xiàng)式寄存器初始值為7SPI_Init(SPI1,&SPI_InitStructure);/*SPI1使能*/SPI_Cmd(SPI1,ENABLE);}FSMC接口的LCD初始化通過(guò)調(diào)用FSMC_LCD_Init()函數(shù)實(shí)現(xiàn)信號(hào)引腳配置等功能。函數(shù)代碼如下:名稱:voidFSMC_LCD_Init(void)功能:基于FSMC接口的16位TFT接口初始化入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:*調(diào)用方法:無(wú)voidFSMC_LCD_Init(void){FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;FSMC_NORSRAMTimingInitTypeDefp;GPIO_InitTypeDefGPIO_InitStructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);//使能FSMC接口時(shí)鐘GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; //背光控制GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //通用推挽輸出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //輸出模式最大速度50MHzGPIO_Init(GPIOD,&GPIO_InitStructure);GPIO_SetBits(GPIOD,GPIO_Pin_13); //打開(kāi)背光GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//TFT復(fù)位腳GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //通用推挽輸出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //輸出模式最大速度50MHzGPIO_Init(GPIOE,&GPIO_InitStructure);/*啟用FSMC復(fù)用功能,定義FSMCD0---D15及nWE,nOE對(duì)應(yīng)的引腳*//*設(shè)置PD.00(D2),PD.01(D3),PD.04(nOE),PD.05(nWE),PD.08(D13),PD.09(D14),PD.10(D15),PD.14(D0),PD.15(D1)為復(fù)用上拉本例程在奮斗版STM32本例程在奮斗版STM32開(kāi)發(fā)板V5上調(diào)試通過(guò)*文件名:Fun.c*內(nèi)容簡(jiǎn)述:*文件歷史:*版本號(hào)日期作者說(shuō)明*v1.02013-10xjdGPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //最大速度50MHzGPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復(fù)用模式GPIO_Init(GPIOD,&GPIO_InitStructure);/*設(shè)置PE.07(D4),PE.08(D5),PE.09(D6),PE.10(D7),PE.11(D8),PE.12(D9),PE.13(D10),PE.14(D11),PE.15(D12)為復(fù)用上拉*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_Init(GPIOE,&GPIO_InitStructure);/*FSMCNE1配置PD7*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_Init(GPIOD,&GPIO_InitStructure);/*FSMCRS配置PD11-A16*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;GPIO_Init(GPIOD,&GPIO_InitStructure);p.FSMC_AddressSetupTime=0x02;p.FSMC_AddressHoldTime=0x00;p.FSMC_DataSetupTime=0x05;p.FSMC_BusTurnAroundDuration=0x00;p.FSMC_CLKDivision=0x00;p.FSMC_DataLatency=0x00;p.FSMC_AccessMode=FSMC_AccessMode_B;FSMC_NORSRAMInitStructure.FSMC_Bank=FSMC_Bank1_NORSRAM1;FSMC_NORSRAMInitStructure.FSMC_DataAddressMux=FSMC_DataAddressMux_Disable;FSMC_NORSRAMInitStructure.FSMC_MemoryType=FSMC_MemoryType_NOR;FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth=FSMC_MemoryDataWidth_16b;FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode=FSMC_BurstAccessMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity=FSMC_WaitSignalPolarity_Low;FSMC_NORSRAMInitStructure.FSMC_WrapMode=FSMC_WrapMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive=FSMC_WaitSignalActive_BeforeWaitState;FSMC_NORSRAMInitStructure.FSMC_WriteOperation=FSMC_WriteOperation_Enable;FSMC_NORSRAMInitStructure.FSMC_WaitSignal=FSMC_WaitSignal_Disable;FSMC_NORSRAMInitStructure.FSMC_ExtendedMode=FSMC_ExtendedMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WriteBurst=FSMC_WriteBurst_Disable;FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct=&p;FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct=&p;FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);/*使能FSMCBANK1_SRAM模式*/FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1,ENABLE);}6.3寸LCD模塊驅(qū)動(dòng)程序#include"fsmc_sram.h"#include"font.h"#include"demo.h"#defineBank1_LCD_D((uint32_t)0x60020000)//dispDataADDR#defineBank1_LCD_C((uint32_t)0x60000000)//dispRegADDRvoidLCD_Init(void);voidLCD_WR_REG(unsignedintindex);voidLCD_WR_CMD(unsignedintindex,unsignedintval);voidLCD_WR_Data(unsignedintval);voidLCD_test(void);voidLCD_clear(unsignedintp);voidDelay(__IOuint32_tnCount);unsignedshortLCD_RD_data(void);externvoidlcd_rst(void);externvoidDelay(__IOuint32_tnCount);voidTFT_CLEAR(u8x,u16y,u8len,u16wid);voidTFT_DrawPoint(u8x,u16y);voidTFT_ShowChar(u8x,u16y,u8num);voidTFT_ShowNum(u8x,u16y,u32num);voidTFT_ShowString(u8x,u16y,constu8*p);voidTFT_ShowBmp(u8x,u16y,u8lenth,u16wide,constu8*p);//默認(rèn)紅色//默認(rèn)紅色名稱:LCD_WR_REG(unsignedintindex)功能:FSMC寫(xiě)顯示器寄存器地址函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)voidLCD_WR_REG(unsignedintindex){(__IOuint16_t*)(Bank1_LCD_C)=index;}/****************************************************************************名稱:voidLCD_WR_CMD(unsignedintindex,unsignedintval)功能:FSMC寫(xiě)顯示'器寄存器數(shù)據(jù)函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)voidLCD_WR_CMD(unsignedintindex,unsignedintval){(__IOuint16_t*)(Bank1_LCD_C)=index;(__IOuint16_t*)(Bank1_LCD_D)=val;}/****************************************************************************名稱:unsignedshortLCD_RD_data(void)功能:FSMC讀顯示區(qū)16彳立數(shù)據(jù)函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)unsignedshortLCD_RD_data(void){unsignedinta=0;a=*(__IOuint16_t*)(Bank1_LCD_D);//空操作a=*(__IOuint16_t*)(Bank1_LCD_D);//讀出的實(shí)際16位像素?cái)?shù)據(jù)return(a);}名稱:LCD_WR_Data(unsignedintval)功能:FSMC寫(xiě)%6位數(shù)據(jù)函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)voidLCD_WR_Data(unsignedintval){*(__IOuint16_t*)(Bank1_LCD_D)=val;}voidLCD_WR_Data_8(unsignedintval){*(__IOuint16_t*)(Bank1_LCD_D)=val;}名稱:voidDelay(__IOuint32_tnCount)功能:延時(shí)函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)voidDelay(__IOuint32_tnCount){for(;nCount!=0;nCount--);}//名稱:voidLCD_Init(void)功能:2.4寸TFT初始化函數(shù)入口參數(shù):無(wú)出口參數(shù):無(wú)說(shuō)明:調(diào)用方法:無(wú)voidLCD_Init(void){unsignedinti;//lcd_rst();GPIO_ResetBits(GPIOE,GPIO_Pin_1); //硬件復(fù)位Delay(0x1AFFf);GPIO_SetBits(GPIOE,GPIO_Pin_1);Delay(0x1AFFf);LCD_WR_CMD(0x0000,0x00000);LCD_WR_CMD(0x0000,0x00000);LCD_WR_CMD(0x0000,0x00000);LCD_WR_CMD(0x0000,0x00000);//{time,0010,ms}LCD_WR_CMD(0x0400,0x06200);LCD_WR_CMD(0x0008,0x00808);LCD_WR_CMD(0x0300,0x00C00);//gammaLCD_WR_CMD(0x0301,0x05A0B);LCD_WR_CMD(0x0302,0x00906);LCD_WR_CMD(0x0303,0x01017);LCD_WR_CMD(0x0304,0x02300);LCD_WR_CMD(0x0305,0x01700);LCD_WR_CMD(0x0306,0x06309);LCD_WR_CMD(0x0307,0x00C09);LCD_WR_CMD(0x0308,0x0100C);LCD_WR_CMD(0x0309,0x02232);LCD_WR_CMD(0x0010,0x00016);//69.5HzLCD_WR_CMD(0x0011,0x00101);//LCD_WR_CMD(0x0012,0x00000);//LCD_WR_CMD(0x0013,0x00001);//LCD_WR_CMD(0x0100,0x00330);//BT,APLCD_WR_CMD(0x0101,0x00237);//DC0,DC1,VCLCD_WR_CMD(0x0103,0x00F00);//VDVLCD_WR_CMD(0x0280,0x06100);//VCMLCD_WR_CMD(0x0102,0x0C1B0);//VRH,VCMR,PSON,PON//{time,0100,ms}LCD_WR_CMD(0x0001,0x00100);LCD_WR_CMD(0x0002,0x00100);LCD_WR_CMD(0x0003,0x01030);LCD_WR_CMD(0x0009,0x00001);LCD_WR_CMD(0x000C,0x00000);LCD_WR_CMD(0x0090,0x08000);LCD_WR_CMD(0x000F,0x00000);LCD_WR_CMD(0x0210,0x00000);LCD_WR_CMD(0x0211,0x000EF);LCD_WR_CMD(0x0212,0x00000);LCD_WR_CMD(0x0213,0x0018F);//432=1AF,400=18FLCD_WR_CMD(0x0500,0x00000);LCD_WR_CMD(0x0501,0x00000);LCD_WR_CMD(0x0502,0x0005F);LCD_WR_CMD(0x0401,0x00001);LCD_WR_CMD(0x0404,0x00000);//{time,0100,ms}LCD_WR_CMD(0x0007,0x00100);//BASEE//{time,0100,ms}LCD_WR_CMD(0x0200,0x00000);LCD_WR_CMD(0x0201,0x00000);LCD_WR_CMD(0x200,0);LCD_WR_CMD(0x201,0);*(__IOuint16_t名稱:u32abs(s32res)*功能:取絕對(duì)值函數(shù)名稱:u32abs(s32res)*功

溫馨提示

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

評(píng)論

0/150

提交評(píng)論