




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、湖南工業大學本科畢業設計(論文)(2021屆)本科畢業設計(論文)資料題 目 名 稱: WAV播放器的設計與制作 學 院(部): 電氣與信息工程學院 專 業: 電子信息工程 學 生 姓 名: 班 級: 電信 學號 指導教師姓名: 職稱 最終評定成績: 湖南工業大學教務處 2021屆本科畢業設計(論文)資料第一部分 畢業論文(2021屆)本科畢業設計(論文)學 院(部): 電氣與信息工程學院 專 業: 電子信息工程 學 生 姓 名: 班 級: 學號 指導教師姓名: 職稱 最終評定成績 2021年6月33摘 要本課題研究的是基于WAV格式的播放器的設計與制作。該課題涉及的技術主要有,SD卡讀寫、F
2、AT32文件系統讀寫、TFT驅動顯示、電阻式觸摸屏驅動、WAV文件解碼、IIS音頻驅動。對于WAV格式文件的解碼采用的是軟件解碼的方式,在本次設計中已成功實現了對容量1G字節的SD卡的讀寫,且實現了對存在于SD卡中FAT32文件系統的文件的搜尋和讀寫,實現了WAV文件的軟件解碼并將解碼后的PCM數據送進IIS接口輸出經音頻驅動IC播放,WAV解碼采用了雙緩沖區解碼。至于TFT驅動顯示部分已成功實現漢字字庫的移植顯示和bmp文件的顯示,在觸摸屏方面,成功采用三點式校驗法將觸摸屏校準成功。在本次設計中我采用了三星公司生產的ARM9處理器S3C2440A。該處理器功耗低、性能高、指令執行速度快、尋址
3、方式靈活簡單、指令長度固定等優點。WAV播放器由五個模塊組成,分別是電源模塊、MCU核心控制模塊、音頻驅動模塊、SD卡模塊和TFT及觸摸屏模塊。關鍵詞:嵌入式,WAV播放器,SD卡,FAT32,TFTABSTRACTThis topic studies the player's design and production based on the WAV format. The main technologies involved in this subject are the reading and writing of SD card and FAT32 file system、t
4、he driver and displaying of TFT、the resistive touch screen driver 、WAV file decoding and IIS audio driver.The design has been successfully realized the reading and writing of the capacity of 1G byte SD card , and achieved the searching 、reading and writing of FAT32 file system's file existing in
5、 the SD card . File search and read and write WAV files software decoding and decoding PCM data is sent to the IIS interface output by the audio driver IC, play WAV decoder using dual-buffer decoding. At the same time it has achieved a software decoder of the WAV files and sent the decoded PCM data
6、to the IIS interface to play. The WAV decoder uses dual-buffer decoding. In the part of TFT driver and displaying, it successfully completes the transplantation of the Chinese character and the show of bmp file. In the touch screen respect, I used the three-point calibration method to the touch scre
7、en calibration.In this design, I use the Samsung ARM9 processor S3C2440A.This processor has many merits ,such as low power consumption, high performance, fast instruction execution, flexible and simple addressing and the fixed instruction length .WAV player has a variety of programs to achieve. Here
8、 consists of five modules, respectively of the power supply module, MCU core control module, the audio driver module, SD card module and TFT touch screen module.Keywords: Embedded, WAV player, SD card, FAT 3,TFT 目 錄摘 要.IABSTRACTII目 錄.1第1章課題背景與目標任務21.1 課題意義及背景21.2 目標任務21.3 研究思路與方案2第2章系統設計32
9、.1 系統框圖32.2 硬件設計32.2.1 核心板接口設計32.2.2 電源模塊設計42.2.3 音頻驅動電路設計52.2.4 TFT觸摸屏電路設計52.2.5 SD卡電路設計72.2.6 整體電路圖82.3 軟件設計82.3.1 SD卡讀寫函數模塊92.3.2 FAT32文件系統讀寫函數模塊122.3.3 WAV文件解碼模塊162.3.4 IIS音頻驅動函數模塊192.3.5 TFT顯示及觸摸屏讀取模塊19第3章系統仿真與調試213.1 SD卡讀寫硬件仿真213.2 FAT32文件系統讀寫硬件仿真213.3 WAV文件解碼硬件仿真223.4 觸摸屏校驗硬件仿真22結 論.23參考文獻24致
10、 謝.25第1章 課題背景與目標任務1.1 課題意義及背景 隨著人們收入水平的不斷提高,物質生活的滿足下,人們的精神生活越來越需要得到豐富。音樂,作為精神生活很好的調劑與保養品,一直以來都受到人們的喜愛。電子技術不斷發展,各種消費電子都傾向于便攜式,使得人們隨時隨地就能欣賞到美妙的音樂,音樂播放器,自然就成為了很多消費電子產品中的必備。WAV文件是一種無損編碼音樂文件格式,具有編碼簡單解碼容易特點。WAV文件里聲音波形數據是經過PCM編碼的,且這種編碼形式在我們數字通信課程上也有學到,而充當解碼的的核心控制處理器,也是我們所學課程嵌入式的內容。這就很好的強化了我們所學知識,達到了學以致用目的。
11、1.2 目標任務(1)了解WAV播放器的結構和工作原理;(2)了解SD卡的結構和開發技術;(3)掌握單片機應用系統的設計和開發方法;(4)畫出系統硬件電路圖;(5)編寫系統軟件程序。1.3 研究思路與方案WAV播放器有很多種方案實現,在這里我們由五個模塊組成,分別是電源模塊、MCU核心控制模塊、音頻驅動模塊、SD卡模塊和TFT及觸摸屏模塊組成。(1)電源模塊由5VDC電源提供,也可充電式鋰電池提供,然后經穩壓芯片提供給各個模塊相應的電壓;(2)MCU核心控制模塊也可以有很多選擇,但選用普通的51單片機且沒有專用解碼芯片的話,對高音質的音樂文件進行解碼播放的話就會顯得力不從心了。在這里我采用三星
12、公司的ARM9處理器S3C2440A;(3)音頻驅動模塊則選用現在應用很廣的驅動芯片UDA1341TS;(4)至于SD卡模塊則是一固定的SD卡座電路;(5)TFT及觸摸屏模塊采用東華液晶顯示公司的3.5寸屏WXCAT35-TG3#001F。第2章 系統設計2.1 系統框圖 圖2.1 整體框圖2.2 硬件設計 由于硬件制作難度較大,且單套制作成本高,為完成系統設計的驗證決定采用廣州天嵌計算機科技的TQ2440開發板。該開發板分由兩塊板組成,分別為核心板和底板,核心板為一最小系統板,板載三星S3C2440A處理器,帶有2M字節的Nor Flash和64M字節SDRAM以及256M字節的Nand F
13、lash存儲器,所有可用I/O均用排針引出。 底板則附帶有很多外設接口,像TFT觸摸屏接口、攝像頭接口、音頻接口、串口通訊接口、SD卡接口、100M網絡接口、USB主機接口和USB設備接口等。在本系統中只用到TFT觸摸屏接口、音頻接口和SD卡接口2.2.1 核心板接口設計 核心板接口電路僅是把處理器S3C2440A的I/O引腳引出至底板,并沒什么復雜的電路,在設計中我們要根據處理器的I/O引腳功能來分配管腳,由于這里我們是采用現成的開發進行二次設計,因此在這里我們就玩需擔心這個,只需注意Nor Flash和SDRAM的地址起始地址和結束地址范圍,以及啟動方式選擇引腳。圖2.2 核心板接口電路圖
14、2.2.2 電源模塊設計 由于對電流的要求較小,為節約設計時間與成本,提高可靠性,電源可以采用集成電路實現。因此電源模塊電路的設計其實就是三端穩壓集成電路的運用,在這里我們采用AS1117AR-3.3三端穩壓器,前端輸入電壓為直流電壓,電壓范圍為4.7V-10V,輸出為3.3V。同時設計了電池與直流電源無擾切換供電模式,如果電池為可充電電池時,則在供電的同時還可以通過直流電源對其充電。如果為非充電電池則要去掉二極管D3。當接上直流電源時二極管D1截止,此時系統由直流電源直接供電,且當電池電量低時,D3導通,直流電源對電池進行充電,當充電充滿時D3截止;當無直流電源供電時,D1導通,電池向系統供
15、電。圖2.3 電源模塊電路圖2.2.3 音頻驅動電路設計 音頻電路則是采用PHILIPS公司生產的一款應用很廣的芯片UDA1341TS,該芯片即可對聲音數據進行還原還可以圖2.4 音頻電路圖2.2.4 TFT觸摸屏電路設計 TFT觸摸屏電路采用的是TFT標準電路,由于不同TFT屏的電壓不同,在這里用一個2*2排針通過短路帽進行選擇。其余引腳的功能見表2.1 。圖2.5 TFT接口電路圖 表2.1 LCD接口引腳功能表引腳號引腳名作用1LED_VDD背光電源2VDDTFT主電源3VD0藍色數據最低位4VD1藍色數據第二位5VD2藍色數據第三位6VD3藍色數據第四位7VD4藍色數據第五位8VD5藍
16、色數據第六位9VD6藍色數據第七位10VD7藍色數據最高位11GNDLED電源地12VD8綠色數據最低位13VD9綠色數據第二位14VD10綠色數據第三位15VD11綠色數據第四位16VD12綠色數據第五位17VD13綠色數據第六位18VD14綠色數據第七位19VD15綠色數據最高位20GNDTFT主電源地21VD16紅色數據最低位22VD17紅色數據第二位23VD18紅色數據第三位24VD19紅色數據第四位25VD20紅色數據第五位26VD21紅色數據第六位27VD22紅色數據第七位28VD23紅色數據最高位29GND地30LCD_PWRLCD電源控制31I2CSDA串行數據輸入32I2CS
17、CL串行接口時鐘33VM數據使能信號34VFRAME幀信號35VLINE行信號36VCLK數據時鐘37TSXM觸摸屏橫向端點38TSXP觸摸屏橫向端點39TSYM觸摸屏縱向端點40TSYP觸摸屏縱向端點2.2.5 SD卡電路設計 SD卡電路則是一標準的接口電路,SD卡接口電平范圍為2.0V-3.6V,由于我們所用處理器I/O引腳電平為3.3V所以剛好兼容只需對接口引腳加入上拉電阻,若不兼容必須進行電平轉換。電平轉換則可采用電平轉換IC。圖2.6 SD卡電路圖2.2.6 整體電路圖 圖2.7 整體電路圖2.3 軟件設計 軟件部分設計是本次設計的核心部分,主要由SD卡讀寫函數模塊、FAT32文件系
18、統讀寫函數模塊、WAV文件解碼模塊、IIS音頻驅動函數模塊、TFT顯示及觸摸屏讀取模塊組成,由于程序量巨大,因此在本文中不會列出源碼,下文的設計中只會說明如何軟件編寫流程,只要熟悉了這些流程后就可以編寫出代碼。主流程圖如下:圖2.8 主程序流程圖2.3.1 SD卡讀寫函數模塊 要對SD卡進行正確讀寫就必需了解SD卡協議,其中對SD卡指令的熟悉是一個很重要的部分。SD卡的指令被封裝成48位的數據包,每次傳送這48位的數據包。數據包的內容包括起始位、結束位、傳輸位、命令索引、傳輸參數和7位CRC校驗碼。其具體格式分布如下表。 表2.2 SD卡指令格式表Bit 位置474645:4039:0807:
19、0100Bit 寬度1163271值“0”“1”xxx“1”說明起始位發送標志位命令參數CRC7結束位 表2.3 SD卡指令說明CMD簡略語指令說明0GO_IDLE_STATE這是使card初始化到Idle狀態的指令。CS信號設在Low的狀態時,接到本指令后,card 將轉換到SPI模式1SEND_OP_COND接到本指令后,card將做R3回應(含有OCR 數據).根據OCR值,可以得知card能工作電壓范圍.OCR數據最高值位的1bit是用來確認card內部處理是否結束(Ready/Busy輪詢).2ALL_SEND_CID接到本指令后, 處于Ready狀態的card將傳送CID數據.在M
20、MC模式下,數據被送到CMD信號,在CID數據的每1bit傳送后,CMD信號狀態將與該card內部狀態相比較,如果不一致,將中止數據傳送,card返回到Ready狀態.如果相一致,該card 將認為已被選中,然后轉換到Identification 狀態.3SET_RELATIVE_ADDR本指令會為已轉換到Identification狀態的card分配一個相對card地址(RCA).當RCA分配后,card將轉換到Stand-by 狀態,對以后的CMD2和CMD3不回應.4NOP這是用來設定DSR(DriveState寄存器)的指令,但是本car不支持DSR.7SELECT/DESELECT_
21、CARD本指令是用來選擇一張card,讓它在Stand-by狀態和Transfer狀態之間轉換的指令.如果給card設定已分配到的RCA地址,card將從Stand-by狀態轉換到Transfer狀態,并將回應以后的讀取指令及其他指令.如果給card設定RCA以外的地址,card將轉換到Stand-by狀態。當RCA=0000h時,card將無條件地轉換到Stand-by狀態.9SEND_CSD接到本指令后,將傳送CSD數據.10SEND_CID接到本指令后,將傳送CID數據.11READ_DAT_UNTIL_STOP接到本指令后,將從設定的地址傳送P2ROM數據,直到接到指令CMD12為止.
22、12STOP _TRANSMISSION本指令強行終止CMD11和CMD18的處理13SEND_STATUS接到本指令后, 將傳送狀態寄存器的信息.15GO_INACTIVE _STATE接到本指令后,將轉換到休止(inactive)狀態.16SET_BLOCKLEN本指令用來設定Block長度.對象是以后的指令CMD17和CMD18.17READ_SINGLE _BLOCK接到本指令后,將從自變量設定的地址傳送1個block 長度的數據.(block長度由指令CMD16設定).18READ_MULTIPLE _BLOCK接到本指令后,將從自變量設定的地址連續傳送block長度的數據,直到接到
23、指令CMD12為止.(block長度由指令CMD16設定).23SET_BLOCK _COUNT本指令是給緊跟的指令CMD18設定要傳送的block 數量.24WRITE_BLOCK接到本指令后,將寫1個block 長度的數據到自變量設定的地址.(block長度由指令CMD16設定).25WRITE_MULTIPLE_BLOCK接到本指令后,將連續寫block長度的數據到自變量設定的地址,直到接到指令CMD12為止.(block長度由指令CMD16設定).58READ_OCR接到本指令后,Card將傳送OCR數據.59CRC_ON_OFF本指令是用來設定CRC 選項為ON或OFF.在SPI模式
24、下,CRC的初始值設定為OFF.CRC選項bit=1表示CRC ON;CRC選項bit=0表示CRC OFF.SD卡有兩個可選的通訊協議:SD模式和SPI模式。SD模式下傳輸速度比SPI模式快,由于我們采用的處理器S3C2440A帶有SD卡控制組件,因此我們使用SD卡模式。下面列出讀寫流程圖。圖2.9 SD卡讀寫流程圖2.3.2 FAT32文件系統讀寫函數模塊 SD卡讀寫部分最終是完成SD卡的扇區讀寫進而為FAT32文件系統服務,FAT32文件系統包含四個部分。1、保留扇區位于最開始的位置。第一個保留扇區是引導區(分區啟動記錄)。它包括一個稱為基本輸入輸出參數塊的區域(包括一些基本的文件系統信
25、息尤其是它的類型和其它指向其它扇區的指針),通常包括操作系統的啟動調用代碼。保留扇區的總數記錄在引導扇區中的一個參數中。引導扇區中的重要信息可以被DOS和OS/2中稱為驅動器參數塊的操作系統結構訪問。2、FAT區域它包含有兩份文件分配表,這是出于系統冗余考慮,盡管它很少使用,即使是磁盤修復工具也很少使用它。它是分區信息的映射表,指示簇是如何存儲的。3、根目錄區域它是在根目錄中存儲文件和目錄信息的目錄表。在FAT32下它可以存在分區中的任何位置,但是在早期的版本中它永遠緊隨FAT區域之后。4、數據區域這是實際的文件和目錄數據存儲的區域,它占據了分區的絕大部分。通過簡單地在FAT中添加文件鏈接的個
26、數可以任意增加文件大小和子目錄個數(只要有空簇存在)。然而需要注意的是每個簇只能被一個文件占有,這樣的話如果在32KB大小的簇中有一個1KB大小的文件,那么31KB的空間就浪費掉了。保留扇區在FAT32文件系統中非常重要,其主要信息如下表 表2.4 保留扇區結構表介紹了保留扇區后接下來就是FAT表區了,FAT表與存儲器各簇一一對應,即該存儲器有多少扇區則FAT表就有多少項,對于FAT32文件系統每個表項為32Bit。對于大文件,需要分配多個簇。同一個文件的數據并不一定完整地存放在磁盤中一個連續區域內,而往往會分成若干段,像鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。為了實現文件的鏈式存儲,文
27、件系統必須準備地記錄哪些簇已經被文件占用,還必須為每個已經點用的簇指明存儲后繼內容的下一個簇的簇號,對文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT表來保存的,FAT表的對應表項中記錄著它所代表的簇的有關信息:諸如是否空,是否壞簇,是否已經是某個文件的尾簇等。以下為FAT16文件系統的FAT表結構 表2.4 保留扇區結構表圖3.0 FAT32文件讀寫流程圖2.3.3 WAV文件解碼模塊 IIS接口只接受PCM數據,因此我們必需從WAV文件中解碼出PCM數據出來,這就需要要了解WAV文件的格式。WAV全稱是WAVE, WAVE文件作為多媒體中使用的聲波文件格式之一,它是以RIF
28、F格式為標準的。RIFF是英文Resource Interchange File Format的縮寫,每個WAVE文件的頭四個字節便是“RIFF”。WAVE文件是由若干個Chunk組成的。按照在文件中的出現位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可選), Data Chunk。具體見下圖:圖3.1 WAVE格式框圖每個Chunk有各自的ID,位于Chunk最開始位置,作為標示,而且均為4個字節。并且緊跟在ID后面的是Chunk大小(去除ID和Size所占的字節數后剩下的其他字節數目),4個字節表示,低字節表示數值低位,高字節表示數值高位。下
29、面具體介紹各個Chunk內容,在編程中可根據下表建立相應的結構體。 表2.4 RIFF WAVE Chunk結構項目所占字節數內容ID4字節RIFFSIZE4字節根據文件大小而定TYPE4字節WAVE 表2.5 Format Chunk結構項目所占字節數內容ID4字節fmtSIZE4字節數值為16或18,18則最后又附加信息Format Tag 2字節編碼方式,一般為0x0001Channels 2字節聲道數目,1-單聲道;2-雙聲道Samples PerSec4字節采樣頻率 AvgBytesPerSec4字節每秒所需字節數Block Align2字節
30、數據塊對齊單位(每個采樣需要的字節數)BitsPerSample2字節每個采樣需要的bit數 2字節附加信息(可選,通過Size來判斷有無) 表2.6 Fact Chunk結構項目所占字節數內容ID4字節factSIZE4字節數值為4Data4字節根據軟件而定 表2.7 Data Chunk結構項目所占字節數內容ID4字節dataSIZE4字節根據文件大小而定Data根據文件大小而定PCM數據 表2.8 PCM數據存放結構聲道樣本1樣本28位單聲道0聲道0聲道8位立體聲0聲道(左)1聲道(右)0聲道(左)1聲道(右)16位單聲道0聲道低字節0聲道高字節0聲道低字節0聲道高字節16位立
31、體聲0聲道(左)低字節0聲道(左)高字節1聲道(右)低字節1聲道(右)高字節根據上表各個Chunk的結構就可取出WAV文件的PCM數據,但是又有一個問題出現了WAV音樂文件一分鐘大約10M左右,一般的音樂都有3-4分鐘長的甚至上十分鐘,如果一次性解碼一個文件那就需要很大的運行內存,同時文件越大預解碼時間就會越長,這顯然不是我們想要的結果,因此在這里我們采用雙緩沖區解碼方式。我們設立兩個緩沖區,每個緩沖區有不同的狀態,分別為解碼狀態、播放狀態、解碼完畢狀態、播放完畢狀態。剛開始將緩沖區初始化為播放完成狀態,開始對WAV文件進行解碼,當一個緩沖區放滿之后轉向下一個緩沖區解碼,解碼完成后等待播放,同
32、時不斷的查詢有無播放完畢,如播放完畢則繼續解碼WAV文件至緩沖區。同時播放時也會查詢數據有無解碼完畢,如沒有解碼完畢則等待解碼。2.3.4 IIS音頻驅動函數模塊 S3C2440A處理器自帶有IIS組件,再加上DMA可以很容易的將音樂數據送入外圍器件,流程圖如下:圖3.2 音頻驅動流程圖2.3.5 TFT顯示及觸摸屏讀取模塊 S3C2440A處理器自帶TFT控制器和觸摸屏控制組件,這極大的方便了TFT驅動程序的編寫,我們只需對TFT控制器進行一系列設置即可成功驅動屏。要成功的驅動TFT顯示,對TFT的控制時序的了解是必須的。在這里列出TFT的控制時序。圖3.2 TFT控制時序圖在了解了時序之后
33、就需要根據屏數據手冊中的參數來配置S3C2440A處理器中的組件了,在這下面我列出本系統所用屏的參數,有了這些參數后對照處理器的數據手冊即可成功驅動TFT顯示。 表2.9 TFT時序參數表對于觸摸屏數據的讀取是非常容易的,難點是將觸摸屏轉換的數據和TFT像素一一對應,這里就涉及到了一個校準問題,在這里我們采用三點校準法。當觸摸屏與液晶屏間的角度差很小時,經過推理可以假設觸摸屏與液晶顯示器各點之間的對應關系為(高液晶顯示器的坐標為(XL,YL),觸摸屏的坐標為(X,Y):XL=AX+BY+C YL=DX+EY+F 因為要取三個點進行校準,所以存在六個變量即要通過六個方程式求出液晶顯示器的坐標。得
34、:XL1=AX1+BY1+C YL1=DX1+EY1+FXL2=AX2+BY2+C YL2=DX2+EY2+FXL3=AX3+BY3+C YL3=DX3+EY3+F根據這六個方程式則可求出,A,B,C,D,E,F。將其代入式就可求出觸摸屏對應TFT液晶屏上的點。第3章 系統仿真與調試3.1 SD卡讀寫硬件仿真 表3.1 SD卡讀寫仿真記錄表硬件仿真項目硬件平臺仿真過程與結果SD卡讀寫TQ2440開發板加1G字節SD卡過程:將SD卡插入開發板卡座,下載程序后,讓處理器對SD卡一扇區寫入數據并讀出,對照寫入與讀出數據是否一致就可判斷是否寫入成功。結果:寫入數據與讀出數據一致,SD卡讀寫成功。3.2
35、 FAT32文件系統讀寫硬件仿真 表3.2 FAT32文件系統讀寫仿真記錄表硬件仿真項目硬件平臺仿真過程與結果FAT32文件系統讀寫TQ2440開發板加1G字節SD卡過程:將SD卡裝入讀卡器然后用PC機將SD卡格式化為FAT32文件系統格式,并裝入一個BMP圖像文件,再將SD卡插入開發板卡座,下載程序開始硬件仿真。結果:成功將BMP圖像文件于TFT屏顯示,FAT32文件系統讀寫與TFT顯示成功。3.3 WAV文件解碼硬件仿真 表3.3 WAV文件解碼仿真記錄表硬件仿真項目硬件平臺仿真過程與結果WAV文件解碼TQ2440開發板加1G字節SD卡過程:將SD卡裝入讀卡器然后用PC機將SD卡格式化為F
36、AT32文件系統格式,并裝入一個WAV音頻文件,再將SD卡插入開發板卡座,下載程序開始硬件仿真。結果:成功將WAV音頻文件播放,但有稍許雜音。3.4 觸摸屏校驗硬件仿真 表3.4 SD卡讀寫仿真記錄表硬件仿真項目硬件平臺仿真過程與結果觸摸屏校驗TQ2440開發板加1G字節SD卡過程:在TFT上選三個坐標分別顯示“十”字,用筆依次點擊這幾個點,將得到的三個數據計算出校準系數,并用第四個點來觀察校準效果。結果:在320*240分辨率TFT屏上能實現X軸和Y軸5個分辨率的精度。結 論經過幾個月的努力,終于完成了本次設計任務。在這次任務中首先是通過查找資料完成硬件平臺的搭建,平臺采用三星公司生產的高性
37、能ARM9處理器S3C2440A為主控制核心; TFT及觸摸屏模塊采用東華液晶顯示公司的3.5寸屏WXCAT35-TG3#001F,該屏有自帶觸摸屏;音頻驅動模塊則選用現在應用很廣的驅動芯片UDA1341TS;至于SD卡模塊則是一固定的SD卡座電路。在完成了硬件平臺的搭建后,就開始了軟件系統的設計,由于任務量比較大,涉及知識較,所以采用了模塊式設計方法。按照先后順序1、 首先調試完成了S3C2440A處理器向SD卡讀取數據;2、 然后完成了FAT32文件系統的文件搜尋、讀取與創建功能;3、 接著成功驅動了TFT屏顯示;4、 再又實現了以S3C2440A處理器向存在于SD卡中的FAT32文件系統
38、中的BMP文件的讀取并經解碼后送入TFT顯示; 5、 在這之后熟悉UDA1341TS芯片,并能通過處理器對其進驅動控制;6、 了解WAV文件格式及其編碼;7、 實現以S3C2440A處理器向存在于SD卡中的FAT32文件系統中的WAV文件的讀取并經解碼后送入UDA1341TS進行播放;8、 實現觸摸屏的驅動及校準。至此已初步完成了設計任務,但還是存在一些問題有待解決:1、 軟件系統運行不太穩定,在有些特殊情況下程序容易跑飛;2、 采用UDA1341TS播放聲音文件時會有少許雜音;3、 對觸摸屏的操作響應的準確率不夠,容易誤響應或不響應操作;4、 TFT操作界面不夠華麗;5、 成本較高,方案實用
39、性較差。參考文獻1 馬忠梅單片機的C語言應用程序設計M北京:北京航空航天大學出版社,2021 :229-2302 3 歐偉明,等. 單片機原理與應用系統設計M. 北京:電子工業出版,2021:187-191.4 SanDisk Corporation.Secure Digital Card Product Manual Revision 1.7,2021 5 張華林,葛水煥基于GPS時鐘的打鈴儀設計J單片機與嵌入式系統應用,2021,:55-61.6 黃智偉. 全國大學生電子競賽培訓教程M.北京:電子工業出版,2021 :108-139. 7 郭天祥.51單片機C語言教程M. 北京:電子工業出
40、版,2021:355-381.8 Microsoft Extensible Firmware Initiative FAT32 File System Specification. Microsoft Corporation9 10 致 謝本文是在導師阿蔣中榮教授的悉心關懷和精心指導下完成的。在大學的學習過程中,張老師精深的學術造詣、嚴謹的治學態度、腳踏實地的工作作風、誨人不倦的崇高精神、平易近人的長者風范始終激勵著我不斷克服困難,奮發前進,必將成為我今后成長道路上學習的典范。同時,在這一段學習期間,歐偉明教授也給與我無微不至的關懷和莫大的幫助,讓我受益匪淺。師恩浩蕩,沒齒難忘,在此,學生向蔣
41、老師、歐老師表示深深的感謝,并致以崇高的敬意。附 錄void CheckTouchpanel(void)/int DAT32;int DAT132=11,30,309,220,150,120;int x1,y1,x2,y2,x3,y3,xl1,yl1,xl2,yl2,xl3,yl3;float a,b,c,d,e,f,k;rINTMOD=0x00;rCLKCON|=0x01<<15;rADCDLY=50000;rADCCON=(1<<14)+(ADCPRS<<6);rADCTSC=0xd3;pISR_ADC = (int)AdcTsAuto;rINTMSK=
42、BIT_ADC; /ADC Touch Screen Mask bit clearrINTSUBMSK=(BIT_SUB_TC);rDSC0 = 0x2aa;rDSC1 = 0x2aaaaaaa;lll:Lcd_ClearScr(0x00);GlibCursor(DAT1checkcount0,DAT1checkcount1,0xffff);while(checkcount<1);Lcd_ClearScr(0x00);GlibCursor(DAT1checkcount0,DAT1checkcount1,0xffff);while(checkcount<2);Lcd_ClearScr
43、(0x00);GlibCursor(DAT1checkcount0,DAT1checkcount1,0xffff);while(checkcount<3);xl1=DAT100;xl2=DAT110;xl3=DAT120;yl1=DAT101;yl2=DAT111;yl3=DAT121;x1=DAT00;x2=DAT10;x3=DAT20;y1=DAT01;y2=DAT11;y3=DAT21;k=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);a=(xl1-xl3)*(y2-y3)-(xl2-xl3)*(y1-y3)/k;b=(x1-x3)*(xl2-xl3)-(xl1-
44、xl3)*(x2-x3)/k;c=(y1*(x3*xl2-x2*xl3)+y2*(x1*xl3-x3*xl1)+y3*(x2*xl1-x1*xl2)/k;d=(yl1-yl3)*(y2-y3)-(yl2-yl3)*(y1-y3)/k;e=(x1-x3)*(yl2-yl3)-(yl1-yl3)*(x2-x3)/k;f=(y1*(x3*yl2-x2*yl3)+y2*(x1*yl3-x3*yl1)+y3*(x2*yl1-x1*yl2)/k;Lcd_ClearScr(0x00);GlibCursor(110,110,0xffff);while(checkcount<4);x1=DAT30;y1=
45、DAT31;xl1=a*x1+b*y1+c;yl1=d*x1+e*y1+f;if(xl1>=100)&&(xl1<=120)&&(yl1>=100)&&(yl1<=120)Uart_Printf("Test successn");/k=-0.12345;Uart_Printf("k=%f,xl1=%d,yl1=%dn",k,xl1,yl1);Uart_Printf("a=%f,b=%f,c=%f,d=%f,e=%f,f=%fn",a,b,c,d,e,f);chec
46、kcount=0;goto lll;elseUart_Printf("Test Failn");/k=100.23546;Uart_Printf("k=%f,xl1=%d,yl1=%dn",k,xl1,yl1);Uart_Printf("a=%f,b=%f,c=%f,d=%f,e=%f,f=%fn",a,b,c,d,e,f);checkcount=0;goto lll;while(1);void Main(void)char *mode;int i;U8 key;U32 mpll_val = 0 ;/U32 divn_upll = 0
47、 ;Port_Init();Isr_Init();i = 2 ;/don't use 100M!switch ( i ) case 0:/200key = 12;mpll_val = (92<<12)|(4<<4)|(1);break;case 1:/300key = 13;mpll_val = (67<<12)|(1<<4)|(1);break;case 2:/400key = 14;mpll_val = (92<<12)|(1<<4)|(1);break;case 3:/440!key = 14;mpll_va
48、l = (102<<12)|(1<<4)|(1);break;default:key = 14;mpll_val = (92<<12)|(1<<4)|(1);break;/init FCLK=400M, so change MPLL firstChangeMPllValue(mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);ChangeClockDivider(key, 12);cal_cpu_bus_clk();consoleNum = 0;/ Uart 1 select for debug.Uart_Init( 0,115200 );Uart_Select( consoleNum );Beep(2021 , 100);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基礎護理死亡教育體系構建
- 戰場救護知識培訓
- 員工職業素養培訓溝通交流
- 神經內科臨床護理
- 淺析河南衛視“七夕奇妙游”美術元素運用
- 礦山開采施工與安全生產責任追究合同
- 電力輸電線路架設與包工合同
- 茶葉產品線上線下聯合營銷委托協議
- 智能車棚施工與城市道路照明工程合同
- 房地產項目拆除及重建合作協議書
- 2025年云南省中考英語試卷真題(含標準答案及解析)
- 2025年廣東省高考物理試題(含答案解析)
- 2025年宜賓市英語七下期末復習檢測試題含答案
- 項目管理從立項到結項全解析
- 全國導游人員資格考試單科綜合測試卷(科目一:政策與法律法規)
- 中醫診斷學考點總結
- 國家開放大學學習網電大證券投資分析形考任務12345答案
- 拖車服務合同協議書模板
- 大件貨物運輸合同范本
- 2025-2030年全球與中國心理測驗行業市場發展分析及發展機遇和風險研究報告
- 提高分級護理的巡視率
評論
0/150
提交評論