




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院全日制普通本科生畢業(yè)論文基于STM32的觸摸屏控制設(shè)計Based on STM32 and Touch Tcreen Control Design學(xué)生姓名:學(xué) 號:年級專業(yè)及班級:指導(dǎo)老師及職稱:湖南·長沙提交日期:2012年5月湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院全日制普通本科生畢業(yè)論文(設(shè)計)誠信聲明本人鄭重聲明:所呈交的本科畢業(yè)論文是本人在指導(dǎo)老師的指導(dǎo)下,進行研究工作所取得的成果,成果不存在知識產(chǎn)權(quán)爭議。除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體在文中均作了明確的說明并表示了謝意。同時,
2、本論文的著作權(quán)由本人與湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院、指導(dǎo)教師共同擁有。本人完全意識到本聲明的法律結(jié)果由本人承擔。 畢業(yè)論文(設(shè)計)作者簽名:(作者手寫簽名) 年 月 日目 錄摘要1關(guān)鍵詞11前言21.1ARM應(yīng)用背景21.2研究內(nèi)容31.3研究成果42STM32處理器的概述42.1STM32簡介42.2STM32的參數(shù)52.3內(nèi)部資源53圖片的處理和顯示實現(xiàn)方法73.1液晶顯示電路設(shè)計:73.2圖片的處理73.2.1總體方案與硬件整體架構(gòu)73.2.2本例中FSMC的使用93.2.3ILI9325103.3顯示實現(xiàn)103.3.1TFTLCD字顯示113.3.2TFTLCD圖顯示123.4供電部分電路
3、設(shè)計134軟件設(shè)計模塊144.1程序編寫步驟144.2系統(tǒng)初始化174.3STM32的開發(fā)軟件174.4FSMC模塊介紹以及初始化程序174.5屏接口時序的實現(xiàn)185運行方法和結(jié)果195.1硬件電路連接195.2程序編寫步驟195.3現(xiàn)象和結(jié)果196結(jié)論20參考文獻20致謝20 基于STM32的觸摸屏控制設(shè)計學(xué) 生:陳 功指導(dǎo)老師:陳 剛(湖南農(nóng)業(yè)大學(xué)東方科技學(xué)院,長沙 410128)摘 要:伴隨著科技的發(fā)展,現(xiàn)代電子產(chǎn)品中的單片機和觸摸屏在手機、導(dǎo)航儀器、電子測試儀器以及咨詢終端等設(shè)備中都有很廣泛的應(yīng)用。作為一種單片機,STM32采用了ARM先進架構(gòu)的Cortex-M3內(nèi)核,它不僅在實時性、
4、功耗控制、外設(shè)以及集成整合方面都顯得非常不錯,并且易于開發(fā),可使產(chǎn)品快速進入市場。本文設(shè)計主要是基于STM32的開發(fā)板,通過100P對STM32進行串口虛擬仿真,結(jié)合C 語言,使用STM32的FSMC模塊的時鐘對FSMC模塊以及LCD的啟動配置進行初始化,再控制LCD顯示各種字符和圖形,從而實現(xiàn)對TFT屏的控制。本設(shè)計的觸摸屏作為一種信息交流的媒介,具有著編程靈活、反應(yīng)速度快、體積小以及低耗能的優(yōu)點,它為觸摸屏在今后面向更智能、更人性的方面發(fā)展提供了科學(xué)的參考依據(jù)。關(guān)鍵詞:STM32;觸摸屏;FSMC;ARM;薄膜晶體管Based on STM32 and Touch Tcreen Contr
5、ol Design Author: CHEN Gong Tutor: CHEN Gang(Oriental Science Technology College of Hunan Agricultural University, Changsha 410128)Abstract:With the development of science and technology,the single-chip microcomputer and touch screen of
6、0;modern electronic products have a very wide range of applications in devices, such as mobile phones, Navigational instruments, electronics test instrument and consulting terminal. As&
7、#160;a microcontroller, STM32 is used the ARMs Cortex-M3 core .It is not only performed well in some aspects of real-time, power control,peripherals and integration ,but also&
8、#160;easy to develop and allow the products to entrance market quickly. Papers Design is mainly based on the STM32s development board. In order to control the TFT sc
9、reen, through 100P, it conducted serial virtual simulation to STM32 and combined with the C language and used the STM32s FSMC module of the clock to initialize FSMC&
10、#160;module and the startup configuration of LCD, and then it displayed all kinds of characters and graphics of LCD.The touch screen serve as a medium of information
11、;exchange in this design which has some advantages of programming flexibility, fast response, small size and low power .It provided scientific reference basis for the touch
12、60;screens development in aspect of intelligence and humanity the in the future.Key words: STM32;Touch screen ; FSMC;ARM;Thin Film Transistord1 前言1.1 ARM應(yīng)用背景 現(xiàn)在社會中嵌入式的應(yīng)用已經(jīng)大范圍的普及到現(xiàn)實生活中,越來越多的電子產(chǎn)品已經(jīng)不能被8位處理器所滿足,比如GUI,TCP/IP,FILESYSTEM等。而ARM處理器具有非常強大
13、的處理能力和比較低的功率消耗,這些電子產(chǎn)品在選型的時候會選擇ARM處理器1。ARM的嵌入式應(yīng)用有很多:工業(yè)領(lǐng)域作為32的RISC架構(gòu),基于ARM的微控芯片在高端微控器市場和低端微控制應(yīng)用領(lǐng)域都有不小的市場份額。和傳統(tǒng)的8/16位的微控制器相比ARM芯片不僅功耗低而且在性價比方面也有很大的優(yōu)勢2。一個典型的ARM嵌入式工業(yè)控制系統(tǒng)的功能模塊如圖: 傳感器 轉(zhuǎn)換器LCDLED鍵盤ADCARM處理器DAC主機EPROMRAMI/O接口 圖1 ARM嵌入式工業(yè)控制系統(tǒng)的功能模塊Fig.1 ARM embedded industrial control system function module無線通
14、信領(lǐng)域目前已有超過85%的無線通訊設(shè)備采用了ARM的技術(shù)。網(wǎng)絡(luò)應(yīng)用隨著帶寬技術(shù)的推廣,采用ARM技術(shù)的ADSL芯片正逐步獲得競爭優(yōu)勢。特別在語音和視頻的處理上有很大的優(yōu)勢。成像和安全產(chǎn)品現(xiàn)在的數(shù)碼相機和打印機絕大部分都是采用的ARM技術(shù)。手機的32位智能卡也采用的事ARM技術(shù)。數(shù)碼相機的功能模塊:消費類電子產(chǎn)品ARM技術(shù)在目前流行的數(shù)字音頻播放器、數(shù)字機頂盒和游戲中得到廣泛的采用3。1.2 研究內(nèi)容本設(shè)計的主要目的是對大學(xué)四年知識的綜合和加深對ARM的學(xué)習(xí)以及提高動手能力和解決問題的能力。本次設(shè)計是基于STM32的開發(fā)板,通過對開發(fā)板的學(xué)習(xí),掌握STM32的一些基本功能。通過對100P對STM
15、32進行虛擬仿真,來對TFT屏的控制。主要是使用STM32的FSMC模塊的時鐘去初始FSMC模塊,然后初始化LCD的啟動配置,來控制LCD顯示各種字符、圖形。TFT采用的是2.4“TFT320x240LCD(控制器ILI9325)”,采用CPU的FSMC功能,LCD片選CS采用FSMC_NEI(P88),F(xiàn)SMC_A16(P58)作為LCD的RS選擇,F(xiàn)SMC_nWE(P86)作為LCD的/WR,F(xiàn)SMC_nOE(P85)作為LCD的/RD,LCD的RESET腳用CPU的PE9(P98)(LCD-RST),F(xiàn)SMC_FSMC_D15和LCD的DB1-DB8 DB10-DB17相互連接,觸摸屏接
16、口采用SP11接口,片選PB-SP11-CS3,觸摸電路的中斷申請由PB6-7846-INT接收。TFT液晶顯示屏是薄膜晶體管型液晶顯示屏。TFT液晶為每個像素都設(shè)有一個半導(dǎo)體開關(guān),每個像素都可以通過點脈沖直接控制,因而每個節(jié)點都相對獨立,并可以連續(xù)控制,不僅提高了顯示屏的反應(yīng)速度,同時可以精確控制顯示色階,所以,TFT液晶的笆彩更真4。本文中采用的TFT液晶屏分辨率位320x240,采用的控制芯片為ILI9320,自帶總大小為172 820(240x320x1818)的顯存,模塊的16位數(shù)據(jù)線與顯寸的對應(yīng)關(guān)系為565方式,它支持多種控制輸入信號。LCD 寄存地址為:0x6000 0000LC
17、D 數(shù)據(jù)區(qū)地址:0x6002 0000電路引腳圖如下:圖2 TFT320x240LCD引腳圖Fig.2 The TFT320x240LCD pin diagram本文的第一章講述了該論文的寫作背景,主要是說明ARM的應(yīng)用范圍和論文的研究內(nèi)容;第二章講述該研究課題使用的開發(fā)板的內(nèi)部資源和開發(fā)板核心芯片STM32F103VE腳的各項參數(shù);第三章著重講述圖片的處理和顯示實現(xiàn)方法;第四章介紹本研究的軟件設(shè)計模塊;第五章講述測試方法和結(jié)果。1.3 研究成果配置好各通道后,編譯運行工程,將程序燒入ARM芯片。點擊RST,通過TFT顯示屏可以觀察到一副完整的圖片。2 STM32處理器的概述2.1 STM32
18、簡介STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核。按性能分成兩個不同的系列:STM32F103“增強型”系列和STM32F101“基本型”系列。增強型系列時鐘頻率達到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;基本型時鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是16位產(chǎn)品用戶的最佳選擇。兩個系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品,相當于0.5mA/MHz。STM32F103xx增強型系列
19、使用高性能的ARM/Cortex-M3/32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲器(高達128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號的器件都包含2個12位的ADC 、3個通用16位定時器和一個PWM定時器,還包含標準和先進的通信接口:2個I2C和SPI、3個USART、一個USB和一個CAN。STM32F103xx增強系列工作的溫度范圍是-40度到105度,運行電壓的幅度在2.0到3.6V。完整的STM32F103xx增強型產(chǎn)品引腳從36到100有五種不同的封裝形式;不同的封裝形似相應(yīng)的外設(shè)配置也不同。這些豐富的外設(shè)配置
20、,造就了STM32F103xx增強型微控制適合在多種場合去應(yīng)用:電機驅(qū)動和應(yīng)用控制、醫(yī)療和手持設(shè)備、PC外設(shè)和GPS平臺、可編程控制器、打印機、警報系統(tǒng)等5。2.2 STM32的參數(shù)STM32芯片的引腳圖:圖3 STM32F103xx增強型LQPFP48管腳圖Fig.3 STM32F103xx enhanced LQPFP48pin map2.3 內(nèi)部資源STM32有豐富的內(nèi)部資源,如下所示:RealView MDK(Miertocontroller Development Kit)基于ARM微控制器的專業(yè)嵌入式開發(fā)工具;內(nèi)置閃存存儲器;內(nèi)置SRAM;嵌套的向量式中斷控制器(NVIC);外部中
21、斷/事件控制器(EXTI);時鐘和啟動;自舉模式;DMA ;RTC(實時時鐘)和后備寄存器 ;窗口看門狗;I2C總線 ;通用同步/異步接受發(fā)送器(USART);串行外設(shè)接口(SPI);控制器區(qū)域網(wǎng)絡(luò)(CAN) ;通用串行總線(USB); 通用輸入輸出接口(GPIO); ADC(模擬/數(shù)字轉(zhuǎn)換器) ;溫度傳感器; 串行線JTAG調(diào)試口(SWJ-DP)3。2.3 Cortex-M3簡介ARM公司于2005年推出了Cortex-M3內(nèi)核,就在當年ARM公司與其他投資商合伙成立了Luminary(流明諾瑞)公司,由該公司率先設(shè)計、生產(chǎn)與銷售基于Cortex-M3內(nèi)核的ARM芯片-Stellaris(群
22、星)系列ARM。Cortex-M3是ARM公司基于ARM V7架構(gòu)的新型芯片內(nèi)核6。Cortex-M3內(nèi)核包含一個適用于傳統(tǒng)Thumb和新型Thumb-2指令的譯碼器、一個支持硬件乘法和硬件除法的先進ALU、控制邏輯和用于連接處理器其他部件的接口。Cortex-M3處理器是首款基于ARMv7-M架構(gòu)的ARM處理器7。中央Cortex-M3內(nèi)核使用3級流水線哈佛架構(gòu),運用分支預(yù)測、單周期乘法和硬件除法功能實現(xiàn)了出色的效率(1.25DMIPS/MHz)。Cortex-M3處理器是一個32位處理器,帶有32位寬的數(shù)據(jù)路徑、寄存器庫和基于傳統(tǒng)ARM7處理器的系統(tǒng)只支持訪問對齊的數(shù)據(jù),沿著對齊的字邊界即
23、可對數(shù)據(jù)進行訪問和存儲8。Cortex-M3處理器采用非對齊數(shù)據(jù)訪問方式。Cortex-M3中央內(nèi)核基于哈佛架構(gòu),指令和數(shù)據(jù)各使用一條總線(如圖所示)。內(nèi)核流水線分3個階段:取指、譯碼和執(zhí)行。當遇到分支指令時,譯碼階段也包含預(yù)測指令取指,這提高了執(zhí)行的速度,處理器在譯碼階段期間自行對分支目的地指令進行取指。在稍后的執(zhí)行過程中,處理完全分支指令后便知道下一條要執(zhí)行的指令。如果分支不跳轉(zhuǎn),那么緊跟著的下一條指令隨時可供使用。如果分支跳轉(zhuǎn),那么在跳轉(zhuǎn)的同時分支指令可供使用,空閑時間限制為一個周期9。Cortex-M3內(nèi)核圖如下: 圖4 Cortex-M3內(nèi)核框圖Fig.4 The Cortex-M3
24、 kernel diagramCortex-M3處理器是專為那些對成本和功耗非常敏感但同時對性能要求又相當高的應(yīng)用而設(shè)計的。憑借縮小的內(nèi)核尺寸和出色的中斷延遲性能、集成的系統(tǒng)部件、靈活的配置、簡單的高級編程和強大的軟件系統(tǒng),Cortex-M3處理器將成為從復(fù)雜的芯片系統(tǒng)到低端微控制器等各種系統(tǒng)的理想解決方案。與Cortex-M3不同,ARM7系列處理器使用VonNeumann架構(gòu),指令和數(shù)據(jù)共用信號總線以及存儲器10。由于指令和數(shù)據(jù)可以從存儲器中同時讀取,所以Cortex-M3處理器對多個操作并執(zhí)行,處理器對多個操作并行執(zhí)行,加快了應(yīng)用程序的執(zhí)行速度11。Cortex-M3處理器與ARM7作比
25、較見。3 圖片的處理和顯示實現(xiàn)方法3.1 液晶顯示電路設(shè)計:TFT驅(qū)動系統(tǒng)包括信號輸入、信號處理、CPU控制、信號輸出幾個主要部分。核心部分為信號處理。以下是TFT液晶顯示器的顯示電路:圖5 液晶顯示電路Fig.5 Liquid crystal display circuit3.2 圖片的處理:3.2.1 總體方案與硬件整體架構(gòu) 現(xiàn)在,TFT屏的價格與傳統(tǒng)的單色液晶模塊的價格幾乎相當,甚至比一些尺寸差不多的單色屏還要便宜;而從客戶和廠商的角度來看,很多設(shè)備儀器小型工業(yè)裝備的制造商也紛紛尋求彩色TFT的設(shè)計方案,以提升產(chǎn)品的競爭力和顯示效果4。以STM32處理器的FSMC接口掛載RGB
26、接口數(shù)字屏并結(jié)合DMA傳輸?shù)姆绞皆O(shè)計出了一種驅(qū)動RGB數(shù)字屏的方法。DMA即直接存儲器,存取用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU干預(yù),數(shù)據(jù)可以通過DMA快速地移動,這就節(jié)省了CPU的資源來做其他操作。本文采用STM32F103VET6外部掛接ISSI的25616 SRAM 512 KB的靜態(tài)RAM用作顯存,再使用DMA的Memory to Memory模式從外部顯存往FSMC的數(shù)據(jù)線不停地送數(shù)據(jù)來刷新彩屏,無需CPU的干預(yù)。在STM32上開發(fā)LCD顯示,可以有兩種方式來對LCD進行操作,一種是通過普通的IO口,連接LCM的相應(yīng)引腳來進行操作,第2種是通過F
27、SMC來進行操作??勺冹o態(tài)存儲控制器(Flexible Static Memory Controller: FSMC) 是STM32系列中內(nèi)部集成256 KB以上FlaSh,后綴為xC、xD和xE的高存儲密度微控制器特有的存儲控制機制。之所以稱為“可變”,是由于通過對特殊功能寄存器的設(shè)置,F(xiàn)SMC能夠根據(jù)不同的外部存儲器類型,發(fā)出相應(yīng)的數(shù)據(jù)/地址/控制信號類型以匹配信號的速度,從而使得STM32系列微控制器不僅能夠應(yīng)用各種不同類型、不同速度的外部靜態(tài)存儲器,而且能夠在不增加外部器件的情況下同時擴展多種不同類型的靜態(tài)存儲器,滿足系統(tǒng)設(shè)計對存儲容量、產(chǎn)品體積以及成本的綜合要求。FSMC有很多優(yōu)點:
28、其一:支持多種靜態(tài)存儲器類型。STM32通過FSMC可以與SRAM、ROM、PSRAM、NOR Flash和NANDFlash存儲器的引腳直接相連。其二:支持豐富的存儲操作方法。FSMC不僅支持多種數(shù)據(jù)寬度的異步讀/寫操作,而且支持對NOR、PSRAM、NAND存儲器的同步突發(fā)訪問方式。其三: 支持同時擴展多種存儲器。FSMC的映射地址空間中,不同的BANK是獨立的,可用于擴展不同類型的存儲器。當系統(tǒng)中擴展和使用多個外部存儲器時,F(xiàn)SMC會通過總線懸空延遲時間參數(shù)的設(shè)置,防止各存儲器對總線的訪問沖突。其四:支持更為廣泛的存儲器型號。通過對FSMC的時間參數(shù)設(shè)置,擴大了系統(tǒng)中可用存儲器
29、的速度范圍,為用戶提供了靈活的存儲芯片選擇空間。其五:支持代碼從FSMC擴展的外部存儲器中直接運行,而不需要首先調(diào)入內(nèi)部SRAM。FSMC包含兩類控制器:1個NOR閃存/SRAM控制器,可以與NOR閃存、SRAM和PSRAM存儲器接口;1個NAND閃存/PC卡控制器,可以與NAND閃存、PC卡,CF卡和CF+存儲器接口。控制器產(chǎn)生所有驅(qū)動這些存儲器的信號時序:16位數(shù)據(jù)線,用于連接8位或16位的存儲器;26位地址線,最多可連續(xù)64MB的存儲器(這里不包括片選線);5位獨立的片選信號線;1組適合不同類型存儲器的控制信號線: 控制讀/寫操作、與存儲器通信,提供就緒/繁忙信號和中斷信號、與
30、所用配置的PC卡接口:PC存儲卡、PC I/O卡和真正的IDE接口。從FSMC的角度看,可以把外部存儲器劃分為固定大小為256MB的4個存儲塊。存儲塊1用于訪問最多4個NOR閃存或者PSRAM存儲設(shè)備。這個存儲區(qū)被劃分為4個NOR/PSRAM區(qū),并有4個專用的片選。存儲塊2和3用于訪問NAND閃存設(shè)備,每個存儲塊連接一個NAND閃存。存儲塊4用于訪問PC卡設(shè)備每一個存儲塊上的存儲器類型是由用戶在配置寄存器中定義的12。注意:FSMC只是提供了一個控制器,并不提供相應(yīng)的存儲設(shè)備,至于外設(shè)接的是什么設(shè)備,完全是由用戶自己選擇,只要能用于FSMC控制,就可以,像本次實驗中,我們接的就是LCM。3.2
31、.2 本例中FSMC的使用利用FSMC對LCM進行操作,因此不用完全懂得FSMC的所有功能,而是懂得一部分相應(yīng)的操作即可。FSMC包含以下4個模塊:AHB接口(包含F(xiàn)SMC配置寄存器)、NOR閃存和PSRAM控制器、NAND閃存和PC卡控制器、外部設(shè)備接口。需要注意的是,F(xiàn)SMC可以請求AHB進行數(shù)據(jù)寬度操作。如果AHB操作的數(shù)據(jù)寬度大于外部設(shè)備(NOR或NAND或LCD)的寬度,此時FSMC將AHB操作分割成幾個連續(xù)的較小的數(shù)據(jù)寬度,以適應(yīng)外部設(shè)備的數(shù)據(jù)寬度。FSMC對外部設(shè)備的地址映像從0x6000 0000開始,到0x9FFF FFFF結(jié)束,一共4個地址塊,每個地址塊256MB,而每個地
32、址塊又分成4個分地址塊,大小為64MB。對于NOR的地址映像來說,我們可以通過選擇HADDR27:26 來確定當前使用的是哪個64M的分地址塊。而這四個分存儲塊的片選,則使用 NE4:1來選擇。數(shù)據(jù)線/地址線/控制線是共享的。這里的HADDR 是需要轉(zhuǎn)換到外部設(shè)備的內(nèi)部AHB地址線,每個地址對應(yīng)一個字節(jié)單元。因此,若外部設(shè)備的地址寬度是8位的,則HADDR25:0與STM32的CPU引腳 FSMC_A25:0一一對應(yīng),最大可以訪問64M字節(jié)的空間。若外部設(shè)備的地址寬度是16位的,則是HADDR25:1與STM32的CPU引腳FSMC_A24:0一一對應(yīng)。在應(yīng)用的時候,可以將FSMC_A總線連接
33、到存儲器或其他外設(shè)的地址總線引腳上。3.2.3 ILI9325由于我們使用的是STM32開發(fā)板,其內(nèi)部自帶的是一個LCM,而LCM中的驅(qū)動IC就是采用的ILI9325。nCS: IC的片選信號。如果是低電平,則ILI9325是被選中,并且可以進行操作,如果是高電平,這不被選中。RS: 寄存器選擇信號。如果是低電平,則選擇的是索引或者狀態(tài)寄存器,如果是高電平,則選擇控制寄存器。nWR/SCL: 寫使能信號,低電平有效。nRD: 讀使能信號,低電平有效。以上內(nèi)容是從ILI9325的Datasheet里面找到的,但是根據(jù)我的實際操作發(fā)現(xiàn),似乎高電平也是有效的。而且,不管是高電平還是低電平,都可以成功
34、驅(qū)動LCD,如果有了解情況的可以討論一下。ILI9325的寄存器非常多,詳細的各個寄存器的功能請參考ILI9325的Datasheet。在對ILI9325進行操作時,應(yīng)該先寫地址,然后再寫數(shù)據(jù),設(shè)置好各個寄存器之后,ILI9325就可以開始工作了。3.3 顯示實現(xiàn)TFT的LCD控制器ili9325寄存器采用16位控制器。80口有CS、WR、RD、D15:0、RST、RS這些信號線。CS表示TFT片選信號,為0時,片選成功。WR表示向TFTLCD寫入數(shù)據(jù),上升沿有效。RD表示從TFTLCD中讀取數(shù)據(jù),上升沿也有效。D15:0表示16位雙向數(shù)據(jù)線,可讀可寫。RST表示硬復(fù)位TFTLCD,為1時寫有
35、效。RS表示命令或數(shù)據(jù)標志,0表示讀寫命令,1表示讀寫數(shù)據(jù)。TFTLCD模塊的RST信號線直接接到STM32的復(fù)位腳上,由于不用軟件來控制,就省下了一個IO口。 ILI9325模板控制器自帶顯存,顯存大小為240*320*18/8,也就是18位模式下的顯存量。ILI9325的數(shù)據(jù)線和顯存的關(guān)系是565的關(guān)系。即如下圖所示:圖6 ILI9325數(shù)據(jù)線和顯存的關(guān)系Fig.6 The ILI9325 data lines and the memory of the relationship最低的5位代表的是藍色,中間6位是綠色,最高的5位是紅色。并且相應(yīng)的數(shù)字越大表示顏色就會越深。RO有兩個功能,即
36、讀和寫操作。如果對RO進行寫操作,那么最低位位OSC,用于開啟或者關(guān)閉振蕩器。如果對RO進行讀操作,就會返回控制器的型號。這個命令的最大功能就是可以通過它獲得控制器的信號,而我們可以根據(jù)不同型號的控制器去進行不同的初始化。93xx系列的初始化區(qū)別不大,我們完全可以用一個代碼控制幾個控制器。 R3是入口的模式命令,R3中的I/D0、I/D1、AM這三個位控制屏幕的方向。 AM控制GRAM的更新方向,即當AM取0時,地址以行的方式更新。當AM取值為1是就以列的方向更新。 I/D1:0表示在更新了一個數(shù)據(jù)后,就會根據(jù)這兩個位來設(shè)置控制地址計數(shù)器自動增加或者減少。R7是顯示命令。是用來命令CL位去控制
37、8位彩色和26萬色的。當取值為0時,就表示26萬色,取值1就是8位色。D1、D0、BASEE這三個位是用來控制顯示開關(guān)的,當全部取1時就表示顯示,取0就關(guān)閉。R32、R33是用來設(shè)置GRAM的行地址和列地址的。R32是用來設(shè)置列地址Y坐標范圍(0-239),R33是用來設(shè)置行地址X坐標范圍(0-319)。去顏色的時候就是把這兩個命令設(shè)置到改點,然后寫入顏色。R34是寫數(shù)據(jù)到GRAM的命令。只有寫入這個命令后,地址器才可以自動增加和減少。這是一個單個操作的命令,只需要寫入值就可以。R80_R83表示行列GRAM地址位置設(shè)置,用這幾個命令可以設(shè)定顯示區(qū)域。在TFT屏中有時候我們只需要在其中的一份區(qū)
38、域?qū)懭霐?shù)據(jù)就可以了,如果先寫坐標后寫數(shù)據(jù)就會使速度變慢。這個時候我們可以通過這幾個命令去開辟一個區(qū)域,然后不停地丟數(shù)據(jù),地址計數(shù)器就會自動設(shè)置加或者減,這樣就可以避免頻繁寫地址提高刷新速度。3.3.1 TFTLCD字顯示:每一個字符就是一個圖像,字符的大小和圖像的大小相對應(yīng),字符的筆畫和圖像的內(nèi)容相對應(yīng)。運用字模提取軟件把字符轉(zhuǎn)換成一個字節(jié)型的數(shù)組,數(shù)組元素中每一位代表LCD 的一個素點。取值為1就表示該位置為字符的一個筆畫需要上色,取值為0就表示不是筆畫也不用上色。假如一個字符想要在16x16的面積上顯示,也就是說這個字符的寬和高各為16個像素,也就是有16x16/8個字節(jié)。在取模的過程中還
39、要注意取模的順序,不同的順序就可以得到不同的數(shù)組,一般左上角表示的坐標為(0,0)。相同字體的中文字符和ASII碼的字符寬度有一些不同的地方。ASII碼的字符寬度是中文字符寬度的1/2。在把一個字符變成一個數(shù)組之后,只要對該數(shù)組的每個元素依次進行判斷,對值為1和0的位進行不同的上色處理就可完成一個字符的繪制。如果在程序中要顯示大量的中文字符,就是把這些字符都取模。但這一步已經(jīng)有人做成了數(shù)據(jù)庫,并且進行了編碼。也就是說當我們要在程序中顯示大量中文字符的時候,只要按照編碼規(guī)則去調(diào)度數(shù)據(jù)庫的文件,就可以檢索到相應(yīng)的字符。編碼規(guī)則:每個漢字占兩個字節(jié),前一個字節(jié)表示區(qū)號,后一個字節(jié)表示位號。漢字在漢字
40、庫的位置為:94x(區(qū)號-1)+(位號-1)。94是代表每個區(qū)有94個漢字,減1是表示數(shù)組從0開始,而區(qū)號和位號從1開始。用94x(區(qū)號-1)+(位號-1)x一個漢字字模所占字節(jié)數(shù)來表示漢字具體在數(shù)據(jù)庫中的具體位置。當遇到中文字符和ASII碼混合在一起的時候,我們應(yīng)該用ASII碼最高位是0,而中文的最高位是1去區(qū)分ASII碼和中文字符。顯示ASII碼,字庫來自程序內(nèi),漢字有兩種字庫選擇方式:一種是代碼字庫,即有限的字庫在代碼中保存;另一種是FLASH字庫,在FLASH漢字庫中,暫時程序都是顯示的16*16的漢字。代碼字庫的原理相當簡單,采用索引的形式搜索所需要的漢字。字庫中的每個字都會由漢字的
41、字符串作為一個索引值,在漢字的顯示中,一般都是通過先搜索需要顯示的漢字是否在索引中出現(xiàn)。如果找到索引,就使用索引之后的字庫代碼顯示漢字。FLASH字庫的原理就是把字庫按照漢字的內(nèi)碼排列好并且燒進FLASH.在需要的時候就可以顯示漢字的內(nèi)碼,并在FLASH中搜索到對應(yīng)字庫的首地址,讀出字庫到緩沖,再進寫屏。使用FLASH字庫的先決條件是要FLASH里面帶有字庫。3.3.2TFTLCD圖顯示:在圖片的顯示過程中最重要的是掃描的順序。圖片的取模要注意:圖7 圖片取模Fig.7 Picture taking mode當AM=0時設(shè)置 水平掃描 左右掃描依圖 上下掃描與圖相反當AM=1時設(shè)置 垂直掃描
42、上下掃描依圖 左右掃描與圖相反 用顯示圖片數(shù)組的語句中的前八位字節(jié)的左移還是右移去判斷高位在前還是地位在前。3.4供電部分電路設(shè)計整個系統(tǒng)中的元件均為3.3 V器件。由于系統(tǒng)供電采用電池或者直流電源供電,通過三端穩(wěn)壓芯片LM1117-3.3,為主控芯片STM32F103VET6供電,用二極管IN4007串接在電源正極,為系統(tǒng)提供電源反接保護。部分供電部分原理如圖:圖8 部分供電部分原理圖Fig.8 Part of the power supplying part schematic4 軟件設(shè)計模塊4.1 程序編寫步驟對于程序的編寫,一般先依次初始化RCC、GPIO、FSMC、LCD,再往GRA
43、M中寫入顯示數(shù)據(jù)。其中RCC、GPIO、FSMC的初始化函數(shù)在STM32的固件庫中已經(jīng)有相應(yīng)的函數(shù)。對LCD的初始化需要編寫相應(yīng)的代碼。思路是,首先向寄存器地址寫入需要操作的寄存地址(代碼),然后根據(jù)Datasheet向數(shù)據(jù)區(qū)地址寫入相應(yīng)的數(shù)據(jù)。LCD的初始化應(yīng)該按照Datasheet把每一個寄存器都配置好,而這些寄存器的配置大部分都是通用,只是在屏幕方向選擇以及坐標系等略有差別。LCD配置好之后,就可以寫入圖像數(shù)據(jù)。在HARDEARE文件夾下新建一個LCD的文件夾。然后打開USER文件夾下的工程,新建一個ILI19325的文件夾,保存在LCD的文件夾下面,并且設(shè)置頭文件的的路徑。第一個是LC
44、D_WR_DATA函數(shù),該函數(shù)是通過80口子向LCD模塊中寫入一個16位的數(shù)據(jù),使用頻率最高的,一般都采用宏定義的方式來提高速度13。函數(shù)代碼:#define LCD_WR_DATA(data)LCD_RS=1;LCD_CS=0;DATAOUT(data);LCD_WR=0;LCD_WR=1;LCD_CS=1;第二個是LCD_WR_REG函數(shù),這個函數(shù)是把8位寄存器命令通過80并口寫入LCD模塊中。這里的由于函數(shù)的使用頻率不高,就通過LCD_RS去標記LCD_RS=0還是LCD_RS=1。函數(shù)代碼:Void LCD_WR_REG(u8 data )LCD_RS=0;/寫地址LCD_CS=0;D
45、ATAOUT(data);LCD_WR=0;LCD_WR=1;LCD_CS=1;第三個讀命令/數(shù)據(jù)的函數(shù)。LCD_ReadReg函數(shù)是用來讀取寄存器的值。在讀寄存器的值之前,先要寫入該寄存器的命令,再設(shè)置D15:0位輸入,在讀取完寄存器的值之后,再設(shè)置IO口為輸出:函數(shù)代碼:U16 LCD_ReadReg(u8 LCD_Reg)u16 t; LCD_WR_REG(LCD_REG);/寫入要讀的寄存器號 GPIOB->CRL=0X88888888;/PB0-7 上拉輸入 GPIOB->CRH=0X88888888;/PB8-15 上拉輸入 GPIOB->ODR=0XFFFF;/
46、全部輸出高 LCD_RS=1; LCD_CS=0;/讀取數(shù)據(jù) LCD_RD=0; LCD_RD=1; t=DATAIN; LCD_CS=1; GPIOB->CRL=0X33333333;/PB0-7上拉輸出 GPIOB->CRH=0X33333333;/PB8-15 上拉輸出 GPIOB->ODR=0XFFFF;/全部輸出高 return t;第四個是讀取GRAM的函數(shù)。TFTLCD模塊為彩色,用16位色計算需要150字節(jié)。在圖形的疊加工程中,應(yīng)該先讀回原來的值,然后寫入新的值,完成疊加,再恢復(fù)原來的值。TFTLCD模塊數(shù)據(jù)的函數(shù)為LCD_ReadRAM,該函數(shù)直接返回讀到的
47、GRAM值。函數(shù)在使用之前要先設(shè)置讀取GRAM地址,去實現(xiàn)LCD_SetCursor函數(shù)。函數(shù)程序: U16 t; LCD_WR_REG(R34);/選擇GRAM地址 GPIOB->CRL=0X88888888;/PB0-7 上拉輸入 GPIOB->CRH=0X88888888;/PB-15 上拉輸入 GPIOB->ODR=0XFFFF;/全部輸出高 LCD_RS=1; LCD_CS=0;/讀取數(shù)據(jù)(讀GRAM時,需要讀2次) LCD_RD=0; LCD-RD=1; LCD-RD=0; LCD-RD=1; t=DATAN;LCD_CS=1;GPIOB->CRL=0X33
48、333333;/PB0-7 上拉輸出GPIOB->CRH=0X33333333;/PB8-15 上拉輸出GPIOB-ODR=OXFFFF;/全部輸出高Return t;第五個就是LCD_SetCursor函數(shù),該函數(shù)用來設(shè)置坐標。函數(shù)程序:Void LCD_SetCursor(u8 Xpos,u16 Ypos) LCD_WriteReg(R32,Xpos); LCD_WriteReg(R33,YPOS);(Xpos,Ypos)為要寫入或讀取的像素點坐標,利用R32和R33兩個命令。第六個是畫點函數(shù)LCD_DrawPoint,這個函數(shù)帶2個參數(shù)x和y,代表TFTLCD上的坐標。X的范圍是0
49、到239,Y的范圍是0到319。根據(jù)全局變量POINT_COLOR去確定寫入的顏色。函數(shù)程序:Void LCD_DrawPoint(u8x,u16y) LCD_SetCursor(x,y);/設(shè)置光標位置 LCD_WR_REG(R34);/開始寫入GRAM LCD_WR_DATA(POINT_COLOR);第七個是LCD_ShowChar也就是字符顯示函數(shù),這里的字符顯示函數(shù)多了疊加方式顯示或者非疊加方式顯示。疊加方式顯示一般用在圖片上顯示字符。非疊加一般用于普通顯示1415。4.2系統(tǒng)初始化Syslemlnit();GPIOInit();4.3 STM32的開發(fā)軟件 STM32采用了IAR、
50、MDK、RIDE三種軟件平臺進行開發(fā)。IAR是STM32開發(fā)使用最多的軟件平臺,IAR提供IAR for ARM兩種版本供免費評估:32K學(xué)習(xí)版,32K學(xué)習(xí)版,只能支持編譯32K目標代碼,等效無時間限制 ;30天評估版,無編譯代碼限制15。自從Keil被ARM收購之后,在KEIL中集成ARM的編譯器,并改名為MDK。RIDE是支持GCC編譯器編譯器開發(fā)STM32 的產(chǎn)品。keil是眾多單片機應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯編譯仿真于一體,支持匯編,PLM語言和C語言的程序設(shè)計,界面清晰,易學(xué)易懂。本課題選擇的是KEILMDK16。4.4 FSMC模塊介紹以及初始化程序FSMC就是Flexibl
51、e Static Memory Controller即可變靜態(tài)存儲控制器,是內(nèi)有大量的外部存儲控制器。使用這個控制器可以和大量的存儲器去鏈接,包括SRAM、NOR閃存和NAND閃存等。FSMC模塊如圖:圖9 FSMC模塊Fig.9 The FSMC module本課題FSMC同時掛載SRAM和RGB接口屏,并且復(fù)用數(shù)據(jù)接口,因此對運行程序中的數(shù)據(jù)總線的時間配置提出了非常嚴格的要求,來預(yù)防數(shù)據(jù)總線使用的沖突。4.5 屏接口時序的實現(xiàn)由于RGB接口數(shù)字屏對時序要求比較嚴格,即采用STM32F103VET6的高級定時器來產(chǎn)生精確時間單位,并用最小的時間單位來產(chǎn)生相對應(yīng)的時序接口,STM32由定時器來
52、控制對TFT屏的掃描,來保證足夠的刷新率。掃描的時候,STM32的CPU只參與對DMA的設(shè)置和顯存的操作,再由DMA控制器直接從顯存中提取顯示數(shù)據(jù),并將數(shù)據(jù)發(fā)送到RGB數(shù)字總線上。由于占用CPU的時間是有限的,所以都是用DMA控制器來完成,從而有總夠的時間來實現(xiàn)用戶程序代碼。一般不用外擴模式。時序的計算需要根據(jù)NOR閃存存儲器的特性來計算這些參數(shù)。在寫或者讀訪問時序是存儲器片選信號的下降沿與上升沿之間的時間,可以用FSMC時序參數(shù)的函數(shù)計算得到:寫/讀訪問時間=(ADDSET+1)+(DATAST+1)x HCLK在寫操作中,衡量寫信號的下降沿與上升沿之間的時間參數(shù)用DATAST來衡量:寫使能
53、信號由低到高的時間= t WP =DATAST x HCLK為了得到正確的FSMC時序配置,即在最大的讀/寫訪問時間、不同的FSMC內(nèi)部延遲、不同的存儲器內(nèi)部延遲時候應(yīng)該特別考慮:(ADDSET +1)+(DATAST+1)x HCLK=max(t WC ,t RC)DATAST x HCLK=t WPDATAST必須滿足:DATAST=(t AVQV +tsu(Data NE)+tv(A_NE)/ HCLKADDSET4當HCLK的頻率是72MHZ,使用模式B,則有以下時序:地址建立時間:0x1地址保持時間:0x0數(shù)據(jù)建立時間:0x55 運行方法和結(jié)果5.1 硬件電路連接1 將2.4寸的TFT顯示屏插到STM32的板子上。2 安裝驅(qū)動程序PL2303安裝完成后在電腦設(shè)備管理器端口里面會有一個虛擬串口(COM
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政管理??茟?yīng)試策略試題及答案匯聚
- 2025年經(jīng)濟法概論備考材料及試題答案
- 衛(wèi)生資格考試熱點話題試題及答案揭曉
- 2025年執(zhí)業(yè)藥師與公眾健康的緊密聯(lián)系試題及答案
- 指導(dǎo)患者用藥的要點試題及答案
- 行政管理文化概論內(nèi)容的擴展與試題及答案總結(jié)
- 自考行政管理經(jīng)典試題及答案解析
- 護士執(zhí)業(yè)考試試題及答案深層研究
- 行政管理法律解析試題與答案
- 理解國粹的試題及答案
- 2024國網(wǎng)湖南省電力公司高校畢業(yè)生招聘400人(第三批)重點基礎(chǔ)提升難、易點模擬試題(共500題)附帶答案詳解
- 計算機三級《Linux應(yīng)用與開發(fā)技術(shù)》考試題庫大全(含真題、典型題等)
- 環(huán)境因素識別評價表
- 家長會課件:中考前百日誓師家長會課件
- 固腎生發(fā)丸的質(zhì)量控制和標準化
- 山東省濟南市槐蔭區(qū)2023-2024學(xué)年小學(xué)六年級語文畢業(yè)檢測指導(dǎo)卷含答案
- MOOC 音樂導(dǎo)聆-山東大學(xué) 中國大學(xué)慕課答案
- 農(nóng)行超級柜臺業(yè)務(wù)知識考試題庫(含答案)
- 農(nóng)產(chǎn)品加工工藝培訓(xùn)PPT創(chuàng)新農(nóng)產(chǎn)品加工工藝與技術(shù)
- 精神病患者藏藥的護理措施
- 提高中醫(yī)技術(shù)使用率品管圈課件
評論
0/150
提交評論