版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> ?。?012屆)</b></p><p> 本科畢業(yè)設(shè)計(論文)資料</p><p> 題 目 名 稱:WAV播放器的設(shè)計與制作 </p><p> 學(xué) 院(部):電氣與信息工程學(xué)院 <
2、/p><p> 專 業(yè):電子信息工程 </p><p> 學(xué) 生 姓 名:</p><p> 班 級:電信 學(xué)號 </p><p> 指導(dǎo)教師姓名:職稱 </p><p
3、> 最終評定成績:</p><p><b> 摘 要</b></p><p> 本課題研究的是基于WAV格式的播放器的設(shè)計與制作。該課題涉及的技術(shù)主要有,SD卡讀寫、FAT32文件系統(tǒng)讀寫、TFT驅(qū)動顯示、電阻式觸摸屏驅(qū)動、WAV文件解碼、IIS音頻驅(qū)動。</p><p> 對于WAV格式文件的解碼采用的是軟件解碼的方式,在本次設(shè)
4、計中已成功實現(xiàn)了對容量1G字節(jié)的SD卡的讀寫,且實現(xiàn)了對存在于SD卡中FAT32文件系統(tǒng)的文件的搜尋和讀寫,實現(xiàn)了WAV文件的軟件解碼并將解碼后的PCM數(shù)據(jù)送進IIS接口輸出經(jīng)音頻驅(qū)動IC播放,WAV解碼采用了雙緩沖區(qū)解碼。至于TFT驅(qū)動顯示部分已成功實現(xiàn)漢字字庫的移植顯示和bmp文件的顯示,在觸摸屏方面,成功采用三點式校驗法將觸摸屏校準成功。</p><p> 在本次設(shè)計中我采用了三星公司生產(chǎn)的ARM9處理器
5、S3C2440A。該處理器功耗低、性能高、指令執(zhí)行速度快、尋址方式靈活簡單、指令長度固定等優(yōu)點。</p><p> WAV播放器由五個模塊組成,分別是電源模塊、MCU核心控制模塊、音頻驅(qū)動模塊、SD卡模塊和TFT及觸摸屏模塊。</p><p> 關(guān)鍵詞:嵌入式,WAV播放器,SD卡,F(xiàn)AT32,TFT</p><p><b> ABSTRACT&l
6、t;/b></p><p> This 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 syste
7、m、the driver and displaying of TFT、the resistive touch screen driver 、WAV file decoding and IIS audio driver.</p><p> The design has been successfully realized the reading and writing of the capacity of 1G
8、byte SD card , and achieved the searching 、reading and writing of FAT32 file system's file existing in the SD card . File search and read and write WAV files software decoding and decoding PCM data is sent to the II
9、S 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 to the II</p><p> I
10、n 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 instructi
11、on length .</p><p> WAV player has a variety of programs to achieve. Here consists of five modules, respectively of the power supply module, MCU core control module, the audio driver module, SD card module
12、and TFT touch screen module.</p><p> Keywords: Embedded, WAV player, SD card, FAT 3,TFT </p><p><b> 目 錄</b></p><p> 摘 要………………………………………………………………………..I<
13、;/p><p> ABSTRACTII</p><p> 目 錄………………………………………………………………………..1</p><p> 第1章課題背景與目標任務(wù)2</p><p> 1.1 課題意義及背景2</p><p> 1.2 目標任務(wù)2</p><p> 1
14、.3 研究思路與方案2</p><p> 第2章系統(tǒng)設(shè)計3</p><p> 2.1 系統(tǒng)框圖3</p><p> 2.2 硬件設(shè)計3</p><p> 2.2.1 核心板接口設(shè)計3</p><p> 2.2.2 電源模塊設(shè)計4</p><p> 2.2.3 音頻驅(qū)動電
15、路設(shè)計5</p><p> 2.2.4 TFT觸摸屏電路設(shè)計5</p><p> 2.2.5 SD卡電路設(shè)計7</p><p> 2.2.6 整體電路圖8</p><p> 2.3 軟件設(shè)計8</p><p> 2.3.1 SD卡讀寫函數(shù)模塊9</p><p> 2.3.
16、2 FAT32文件系統(tǒng)讀寫函數(shù)模塊12</p><p> 2.3.3 WAV文件解碼模塊16</p><p> 2.3.4 IIS音頻驅(qū)動函數(shù)模塊19</p><p> 2.3.5 TFT顯示及觸摸屏讀取模塊19</p><p> 第3章系統(tǒng)仿真與調(diào)試21</p><p> 3.1 SD卡讀寫硬件
17、仿真21</p><p> 3.2 FAT32文件系統(tǒng)讀寫硬件仿真21</p><p> 3.3 WAV文件解碼硬件仿真22</p><p> 3.4 觸摸屏校驗硬件仿真22</p><p> 結(jié) 論……………………………………………………………………….23</p><p><b>
18、參考文獻24</b></p><p> 致 謝……………………………………………………………………….25</p><p><b> 課題背景與目標任務(wù)</b></p><p> 1.1 課題意義及背景 </p><p> 隨著人們收入水平的不斷提高,物質(zhì)生活的滿足下,人們的精神生活越來越需
19、要得到豐富。音樂,作為精神生活很好的調(diào)劑與保養(yǎng)品,一直以來都受到人們的喜愛。電子技術(shù)不斷發(fā)展,各種消費電子都傾向于便攜式,使得人們隨時隨地就能欣賞到美妙的音樂,音樂播放器,自然就成為了很多消費電子產(chǎn)品中的必備。</p><p> WAV文件是一種無損編碼音樂文件格式,具有編碼簡單解碼容易特點。WAV文件里聲音波形數(shù)據(jù)是經(jīng)過PCM編碼的,且這種編碼形式在我們數(shù)字通信課程上也有學(xué)到,而充當解碼的的核心控制處理器,也
20、是我們所學(xué)課程嵌入式的內(nèi)容。這就很好的強化了我們所學(xué)知識,達到了學(xué)以致用目的。</p><p><b> 1.2 目標任務(wù)</b></p><p> ?。?)了解WAV播放器的結(jié)構(gòu)和工作原理;</p><p> (2)了解SD卡的結(jié)構(gòu)和開發(fā)技術(shù);</p><p> ?。?)掌握單片機應(yīng)用系統(tǒng)的設(shè)計和開發(fā)方法;<
21、/p><p> ?。?)畫出系統(tǒng)硬件電路圖;</p><p> ?。?)編寫系統(tǒng)軟件程序。</p><p> 1.3 研究思路與方案</p><p> WAV播放器有很多種方案實現(xiàn),在這里我們由五個模塊組成,分別是電源模塊、MCU核心控制模塊、音頻驅(qū)動模塊、SD卡模塊和TFT及觸摸屏模塊組成。</p><p> ?。?
22、)電源模塊由5VDC電源提供,也可充電式鋰電池提供,然后經(jīng)穩(wěn)壓芯片提供給各個模塊相應(yīng)的電壓;</p><p> ?。?)MCU核心控制模塊也可以有很多選擇,但選用普通的51單片機且沒有專用解碼芯片的話,對高音質(zhì)的音樂文件進行解碼播放的話就會顯得力不從心了。在這里我采用三星公司的ARM9處理器S3C2440A;</p><p> ?。?)音頻驅(qū)動模塊則選用現(xiàn)在應(yīng)用很廣的驅(qū)動芯片UDA1341
23、TS;</p><p> ?。?)至于SD卡模塊則是一固定的SD卡座電路;</p><p> ?。?)TFT及觸摸屏模塊采用東華液晶顯示公司的3.5寸屏WXCAT35-TG3#001F。</p><p><b> 系統(tǒng)設(shè)計</b></p><p> 2.1 系統(tǒng)框圖 </p><p>&l
24、t;b> 圖2.1 整體框圖</b></p><p> 2.2 硬件設(shè)計 </p><p> 由于硬件制作難度較大,且單套制作成本高,為完成系統(tǒng)設(shè)計的驗證決定采用廣州天嵌計算機科技有限公司的TQ2440開發(fā)板。</p><p> 該開發(fā)板分由兩塊板組成,分別為核心板和底板,核心板為一最小系統(tǒng)板,板載三星S3C2440A處理器,帶有2M字
25、節(jié)的Nor Flash和64M字節(jié)SDRAM以及256M字節(jié)的Nand Flash存儲器,所有可用I/O均用排針引出。 </p><p> 底板則附帶有很多外設(shè)接口,像TFT觸摸屏接口、攝像頭接口、音頻接口、串口通訊接口、SD卡接口、100M網(wǎng)絡(luò)接口、USB主機接口和USB設(shè)備接口等。</p><p> 在本系統(tǒng)中只用到TFT觸摸屏接口、音頻接口和SD卡接口</p>&l
26、t;p> 2.2.1 核心板接口設(shè)計 </p><p> 核心板接口電路僅是把處理器S3C2440A的I/O引腳引出至底板,并沒什么復(fù)雜的電路,在設(shè)計中我們要根據(jù)處理器的I/O引腳功能來分配管腳,由于這里我們是采用現(xiàn)成的開發(fā)進行二次設(shè)計,因此在這里我們就玩需擔心這個,只需注意Nor Flash和SDRAM的地址起始地址和結(jié)束地址范圍,以及啟動方式選擇引腳。</p><p&g
27、t; 圖2.2 核心板接口電路圖</p><p> 2.2.2 電源模塊設(shè)計 </p><p> 由于對電流的要求較小,為節(jié)約設(shè)計時間與成本,提高可靠性,電源可以采用集成電路實現(xiàn)。</p><p> 因此電源模塊電路的設(shè)計其實就是三端穩(wěn)壓集成電路的運用,在這里我們采用AS1117AR-3.3三端穩(wěn)壓器,前端輸入電壓為直流電壓,電壓范圍為4.7V-1
28、0V,輸出為3.3V。同時設(shè)計了電池與直流電源無擾切換供電模式,如果電池為可充電電池時,則在供電的同時還可以通過直流電源對其充電。如果為非充電電池則要去掉二極管D3。</p><p> 當接上直流電源時二極管D1截止,此時系統(tǒng)由直流電源直接供電,且當電池電量低時,D3導(dǎo)通,直流電源對電池進行充電,當充電充滿時D3截止;當無直流電源供電時,D1導(dǎo)通,電池向系統(tǒng)供電。</p><p> 圖
29、2.3 電源模塊電路圖</p><p> 2.2.3 音頻驅(qū)動電路設(shè)計 </p><p> 音頻電路則是采用PHILIPS公司生產(chǎn)的一款應(yīng)用很廣的芯片UDA1341TS,該芯片即可對聲音數(shù)據(jù)進行還原還可以</p><p> 圖2.4 音頻電路圖</p><p> 2.2.4 TFT觸摸屏電路設(shè)計 </p>
30、;<p> TFT觸摸屏電路采用的是TFT標準電路,由于不同TFT屏的電壓不同,在這里用一個2*2排針通過短路帽進行選擇。</p><p> 其余引腳的功能見表2.1 。</p><p> 圖2.5 TFT接口電路圖</p><p> 表2.1 LCD接口引腳功能表</p><p> 2.2.5 SD卡電路設(shè)計
31、 </p><p> SD卡電路則是一標準的接口電路,SD卡接口電平范圍為2.0V-3.6V,由于我們所用處理器I/O引腳電平為3.3V所以剛好兼容只需對接口引腳加入上拉電阻,若不兼容必須進行電平轉(zhuǎn)換。電平轉(zhuǎn)換則可采用電平轉(zhuǎn)換IC。</p><p> 圖2.6 SD卡電路圖</p><p> 2.2.6 整體電路圖 </p>&
32、lt;p> 圖2.7 整體電路圖</p><p> 2.3 軟件設(shè)計 </p><p> 軟件部分設(shè)計是本次設(shè)計的核心部分,主要由SD卡讀寫函數(shù)模塊、FAT32文件系統(tǒng)讀寫函數(shù)模塊、WAV文件解碼模塊、IIS音頻驅(qū)動函數(shù)模塊、TFT顯示及觸摸屏讀取模塊組成,由于程序量巨大,因此在本文中不會列出源碼,下文的設(shè)計中只會說明如何軟件編寫流程,只要熟悉了這些流程后就可以編寫出代碼
33、。</p><p><b> 主流程圖如下:</b></p><p> 圖2.8 主程序流程圖</p><p> 2.3.1 SD卡讀寫函數(shù)模塊 </p><p> 要對SD卡進行正確讀寫就必需了解SD卡協(xié)議,其中對SD卡指令的熟悉是一個很重要的部分。</p><p> SD卡
34、的指令被封裝成48位的數(shù)據(jù)包,每次傳送這48位的數(shù)據(jù)包。數(shù)據(jù)包的內(nèi)容包括起始位、結(jié)束位、傳輸位、命令索引、傳輸參數(shù)和7位CRC校驗碼。其具體格式分布如下表。</p><p> 表2.2 SD卡指令格式表</p><p> 表2.3 SD卡指令說明</p><p> SD卡有兩個可選的通訊協(xié)議:SD模式和SPI模式。SD模式下傳輸速度比SPI模式快,由于我們
35、采用的處理器S3C2440A帶有SD卡控制組件,因此我們使用SD卡模式。下面列出讀寫流程圖。</p><p> 圖2.9 SD卡讀寫流程圖</p><p> 2.3.2 FAT32文件系統(tǒng)讀寫函數(shù)模塊 </p><p> SD卡讀寫部分最終是完成SD卡的扇區(qū)讀寫進而為FAT32文件系統(tǒng)服務(wù),F(xiàn)AT32文件系統(tǒng)包含四個部分。</p>&l
36、t;p><b> 1、保留扇區(qū)</b></p><p> 位于最開始的位置。第一個保留扇區(qū)是引導(dǎo)區(qū)(分區(qū)啟動記錄)。它包括一個稱為基本輸入輸出參數(shù)塊的區(qū)域(包括一些基本的文件系統(tǒng)信息尤其是它的類型和其它指向其它扇區(qū)的指針),通常包括操作系統(tǒng)的啟動調(diào)用代碼。保留扇區(qū)的總數(shù)記錄在引導(dǎo)扇區(qū)中的一個參數(shù)中。引導(dǎo)扇區(qū)中的重要信息可以被DOS和OS/2中稱為驅(qū)動器參數(shù)塊的操作系統(tǒng)結(jié)構(gòu)訪問。&l
37、t;/p><p><b> 2、FAT區(qū)域</b></p><p> 它包含有兩份文件分配表,這是出于系統(tǒng)冗余考慮,盡管它很少使用,即使是磁盤修復(fù)工具也很少使用它。它是分區(qū)信息的映射表,指示簇是如何存儲的。</p><p><b> 3、根目錄區(qū)域</b></p><p> 它是在根目錄中存儲文
38、件和目錄信息的目錄表。在FAT32下它可以存在分區(qū)中的任何位置,但是在早期的版本中它永遠緊隨FAT區(qū)域之后。</p><p><b> 4、數(shù)據(jù)區(qū)域</b></p><p> 這是實際的文件和目錄數(shù)據(jù)存儲的區(qū)域,它占據(jù)了分區(qū)的絕大部分。通過簡單地在FAT中添加文件鏈接的個數(shù)可以任意增加文件大小和子目錄個數(shù)(只要有空簇存在)。然而需要注意的是每個簇只能被一個文件占有
39、,這樣的話如果在32KB大小的簇中有一個1KB大小的文件,那么31KB的空間就浪費掉了。</p><p> 保留扇區(qū)在FAT32文件系統(tǒng)中非常重要,其主要信息如下表</p><p> 表2.4 保留扇區(qū)結(jié)構(gòu)表</p><p> 介紹了保留扇區(qū)后接下來就是FAT表區(qū)了,F(xiàn)AT表與存儲器各簇一一對應(yīng),即該存儲器有多少扇區(qū)則FAT表就有多少項,對于FAT32文件
40、系統(tǒng)每個表項為32Bit。</p><p> 對于大文件,需要分配多個簇。同一個文件的數(shù)據(jù)并不一定完整地存放在磁盤中一個連續(xù)區(qū)域內(nèi),而往往會分成若干段,像鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。為了實現(xiàn)文件的鏈式存儲,文件系統(tǒng)必須準備地記錄哪些簇已經(jīng)被文件占用,還必須為每個已經(jīng)點用的簇指明存儲后繼內(nèi)容的下一個簇的簇號,對文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT表來保存的,F(xiàn)AT表的對應(yīng)表項中
41、記錄著它所代表的簇的有關(guān)信息:諸如是否空,是否壞簇,是否已經(jīng)是某個文件的尾簇等。以下為FAT16文件系統(tǒng)的FAT表結(jié)構(gòu) </p><p> 表2.4 保留扇區(qū)結(jié)構(gòu)表</p><p> 圖3.0 FAT32文件讀寫流程圖</p><p> 2.3.3 WAV文件解碼模塊 </p><p> IIS接口只接受PCM數(shù)據(jù),因此我
42、們必需從WAV文件中解碼出PCM數(shù)據(jù)出來,這就需要要了解WAV文件的格式。</p><p> WAV全稱是WAVE, WAVE文件作為多媒體中使用的聲波文件格式之一,它是以RIFF格式為標準的。RIFF是英文Resource Interchange File Format的縮寫,每個WAVE文件的頭四個字節(jié)便是“RIFF”。WAVE文件是由若干個Chunk組成的。按照在文件中的出現(xiàn)位置包括:RIFF
43、WAVE Chunk, Format Chunk, Fact Chunk(可選), Data Chunk。具體見下圖:</p><p> 圖3.1 WAVE格式框圖</p><p> 每個Chunk有各自的ID,位于Chunk最開始位置,作為標示,而且均為4個字節(jié)。并且緊跟在ID后面的是Chunk大?。ㄈコ齀D和Size所占的字節(jié)數(shù)后剩下的其他字節(jié)數(shù)目),4個字節(jié)表示,低字節(jié)表示數(shù)值低
44、位,高字節(jié)表示數(shù)值高位。下面具體介紹各個Chunk內(nèi)容,在編程中可根據(jù)下表建立相應(yīng)的結(jié)構(gòu)體。</p><p> 表2.4 RIFF WAVE Chunk結(jié)構(gòu)</p><p> 表2.5 Format Chunk結(jié)構(gòu)</p><p> 表2.6 Fact Chunk結(jié)構(gòu)</p><p> 表2.7 Data Chunk結(jié)構(gòu)<
45、;/p><p> 表2.8 PCM數(shù)據(jù)存放結(jié)構(gòu)</p><p> 根據(jù)上表各個Chunk的結(jié)構(gòu)就可取出WAV文件的PCM數(shù)據(jù),但是又有一個問題出現(xiàn)了WAV音樂文件一分鐘大約10M左右,一般的音樂都有3-4分鐘長的甚至上十分鐘,如果一次性解碼一個文件那就需要很大的運行內(nèi)存,同時文件越大預(yù)解碼時間就會越長,這顯然不是我們想要的結(jié)果,因此在這里我們采用雙緩沖區(qū)解碼方式。</p>
46、<p> 我們設(shè)立兩個緩沖區(qū),每個緩沖區(qū)有不同的狀態(tài),分別為解碼狀態(tài)、播放狀態(tài)、解碼完畢狀態(tài)、播放完畢狀態(tài)。</p><p> 剛開始將緩沖區(qū)初始化為播放完成狀態(tài),開始對WAV文件進行解碼,當一個緩沖區(qū)放滿之后轉(zhuǎn)向下一個緩沖區(qū)解碼,解碼完成后等待播放,同時不斷的查詢有無播放完畢,如播放完畢則繼續(xù)解碼WAV文件至緩沖區(qū)。同時播放時也會查詢數(shù)據(jù)有無解碼完畢,如沒有解碼完畢則等待解碼。</p>
47、<p> 2.3.4 IIS音頻驅(qū)動函數(shù)模塊 </p><p> S3C2440A處理器自帶有IIS組件,再加上DMA可以很容易的將音樂數(shù)據(jù)送入外圍器件,流程圖如下:</p><p> 圖3.2 音頻驅(qū)動流程圖</p><p> 2.3.5 TFT顯示及觸摸屏讀取模塊 </p><p> S3C24
48、40A處理器自帶TFT控制器和觸摸屏控制組件,這極大的方便了TFT驅(qū)動程序的編寫,我們只需對TFT控制器進行一系列設(shè)置即可成功驅(qū)動屏。</p><p> 要成功的驅(qū)動TFT顯示,對TFT的控制時序的了解是必須的。在這里列出TFT的控制時序。</p><p> 圖3.2 TFT控制時序圖</p><p> 在了解了時序之后就需要根據(jù)屏數(shù)據(jù)手冊中的參數(shù)來配置S3C
49、2440A處理器中的組件了,在這下面我列出本系統(tǒng)所用屏的參數(shù),有了這些參數(shù)后對照處理器的數(shù)據(jù)手冊即可成功驅(qū)動TFT顯示。</p><p> 表2.9 TFT時序參數(shù)表</p><p> 對于觸摸屏數(shù)據(jù)的讀取是非常容易的,難點是將觸摸屏轉(zhuǎn)換的數(shù)據(jù)和TFT像素一一對應(yīng),這里就涉及到了一個校準問題,在這里我們采用三點校準法。</p><p> 當觸摸屏與液晶屏間的
50、角度差很小時,經(jīng)過推理可以假設(shè)觸摸屏與液晶顯示器各點之間的對應(yīng)關(guān)系為(高液晶顯示器的坐標為(XL,YL),觸摸屏的坐標為(X,Y)):</p><p> XL=AX+BY+C ①</p><p> YL=DX+EY+F ②</p><p> 因為要取三個點進行校準,所以存在六個變量即要通過六個方程式求出液晶顯示器的坐
51、標。得:</p><p> XL1=AX1+BY1+C YL1=DX1+EY1+F</p><p> XL2=AX2+BY2+C YL2=DX2+EY2+F</p><p> XL3=AX3+BY3+C YL3=DX3+EY3+F</p><p> 根據(jù)這六個方程式則可求出,A,B,C,D,E,F。將其代
52、入①②式就可求出觸摸屏對應(yīng)TFT液晶屏上的點。</p><p><b> 系統(tǒng)仿真與調(diào)試</b></p><p> 3.1 SD卡讀寫硬件仿真 </p><p> 表3.1 SD卡讀寫仿真記錄表</p><p> 3.2 FAT32文件系統(tǒng)讀寫硬件仿真 </p><p> 表3
53、.2 FAT32文件系統(tǒng)讀寫仿真記錄表</p><p> 3.3 WAV文件解碼硬件仿真 </p><p> 表3.3 WAV文件解碼仿真記錄表</p><p> 3.4 觸摸屏校驗硬件仿真 </p><p> 表3.4 SD卡讀寫仿真記錄表</p><p><b> 結(jié) 論<
54、/b></p><p> 經(jīng)過幾個月的努力,終于完成了本次設(shè)計任務(wù)。在這次任務(wù)中首先是通過查找資料完成硬件平臺的搭建,平臺采用三星公司生產(chǎn)的高性能ARM9處理器S3C2440A為主控制核心; TFT及觸摸屏模塊采用東華液晶顯示公司的3.5寸屏WXCAT35-TG3#001F,該屏有自帶觸摸屏;音頻驅(qū)動模塊則選用現(xiàn)在應(yīng)用很廣的驅(qū)動芯片UDA1341TS;至于SD卡模塊則是一固定的SD卡座電路。</p&
55、gt;<p> 在完成了硬件平臺的搭建后,就開始了軟件系統(tǒng)的設(shè)計,由于任務(wù)量比較大,涉及知識較,所以采用了模塊式設(shè)計方法。按照先后順序</p><p> 1、 首先調(diào)試完成了S3C2440A處理器向SD卡讀取數(shù)據(jù);</p><p> 2、 然后完成了FAT32文件系統(tǒng)的文件搜尋、讀取與創(chuàng)建功能;</p><p> 3、 接著成功驅(qū)動了TFT屏顯
56、示;</p><p> 4、 再又實現(xiàn)了以S3C2440A處理器向存在于SD卡中的FAT32文件系統(tǒng)中的BMP文件的讀取并經(jīng)解碼后送入TFT顯示; </p><p> 5、 在這之后熟悉UDA1341TS芯片,并能通過處理器對其進驅(qū)動控制;</p><p> 6、 了解WAV文件格式及其編碼;</p><p> 7、 實現(xiàn)以S3C24
57、40A處理器向存在于SD卡中的FAT32文件系統(tǒng)中的WAV文件的讀取并經(jīng)解碼后送入UDA1341TS進行播放;</p><p> 8、 實現(xiàn)觸摸屏的驅(qū)動及校準。</p><p> 至此已初步完成了設(shè)計任務(wù),但還是存在一些問題有待解決:</p><p> 1、 軟件系統(tǒng)運行不太穩(wěn)定,在有些特殊情況下程序容易跑飛;</p><p> 2、
58、 采用UDA1341TS播放聲音文件時會有少許雜音;</p><p> 3、 對觸摸屏的操作響應(yīng)的準確率不夠,容易誤響應(yīng)或不響應(yīng)操作;</p><p> 4、 TFT操作界面不夠華麗;</p><p> 5、 成本較高,方案實用性較差。</p><p><b> 參考文獻</b></p><
59、p> [1] 馬忠梅.單片機的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2005:229-230.</p><p> [2] http://www.znmcu.cn//</p><p> [3] 歐偉明,等. 單片機原理與應(yīng)用系統(tǒng)設(shè)計[M]. 北京:電子工業(yè)出版,2009:187-191.</p><p> [4] SanDisk Cor
60、poration.Secure Digital Card Product Manual Revision 1.7,2003</p><p> [5] 張華林,葛水煥.基于GPS時鐘的打鈴儀設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2009,⑽:55-61.</p><p> [6] 黃智偉. 全國大學(xué)生電子競賽培訓(xùn)教程[M].北京:電子工業(yè)出版,2005:108-139. </p>
61、;<p> [7] 郭天祥.51單片機C語言教程[M]. 北京:電子工業(yè)出版,2010:355-381.</p><p> [8] Microsoft Extensible Firmware Initiative FAT32 File System Specification. Microsoft Corporation</p><p> [9] http://baik
62、e.baidu.com/view/8033.htm. </p><p> [10] http://baike.baidu.com/view/2228.htm.</p><p><b> 致 謝</b></p><p> 本文是在導(dǎo)師阿蔣中榮教授的悉心關(guān)懷和精心指導(dǎo)下完成的。在大學(xué)的學(xué)習(xí)過程中,張老師精深的學(xué)術(shù)造詣、嚴謹?shù)闹螌W(xué)態(tài)度、腳踏實
63、地的工作作風(fēng)、誨人不倦的崇高精神、平易近人的長者風(fēng)范始終激勵著我不斷克服困難,奮發(fā)前進,必將成為我今后成長道路上學(xué)習(xí)的典范。同時,在這一段學(xué)習(xí)期間,歐偉明教授也給與我無微不至的關(guān)懷和莫大的幫助,讓我受益匪淺。師恩浩蕩,沒齒難忘,在此,學(xué)生向蔣老師、歐老師表示深深的感謝,并致以崇高的敬意。</p><p><b> 附 錄</b></p><p> void Ch
64、eckTouchpanel(void)</p><p><b> {</b></p><p> //int DAT[3][2];</p><p> int DAT1[3][2]={11,30,309,220,150,120};</p><p> int x1,y1,x2,y2,x3,y3,xl1,yl1,xl2
65、,yl2,xl3,yl3;</p><p> float a,b,c,d,e,f,k;</p><p> rINTMOD=0x00;</p><p> rCLKCON|=0x01<<15;</p><p> rADCDLY=50000;</p><p> rADCCON=(1<<14)
66、+(ADCPRS<<6);</p><p> rADCTSC=0xd3;</p><p> pISR_ADC = (int)AdcTsAuto;</p><p> rINTMSK=~BIT_ADC; //ADC Touch Screen Mask bit clear</p><p> rINTSUBMSK=~(
67、BIT_SUB_TC);</p><p> rDSC0 = 0x2aa;</p><p> rDSC1 = 0x2aaaaaaa;</p><p><b> lll:</b></p><p> Lcd_ClearScr(0x00);</p><p> GlibCursor(DAT1[ch
68、eckcount][0],DAT1[checkcount][1],0xffff);</p><p> while(checkcount<1);</p><p> Lcd_ClearScr(0x00);</p><p> GlibCursor(DAT1[checkcount][0],DAT1[checkcount][1],0xffff);</p>
69、;<p> while(checkcount<2);</p><p> Lcd_ClearScr(0x00);</p><p> GlibCursor(DAT1[checkcount][0],DAT1[checkcount][1],0xffff);</p><p> while(checkcount<3);</p>&
70、lt;p> xl1=DAT1[0][0];</p><p> xl2=DAT1[1][0];</p><p> xl3=DAT1[2][0];</p><p> yl1=DAT1[0][1];</p><p> yl2=DAT1[1][1];</p><p> yl3=DAT1[2][1];</
71、p><p> x1=DAT[0][0];</p><p> x2=DAT[1][0];</p><p> x3=DAT[2][0];</p><p> y1=DAT[0][1];</p><p> y2=DAT[1][1];</p><p> y3=DAT[2][1];</p>
72、;<p> k=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);</p><p> a=((xl1-xl3)*(y2-y3)-(xl2-xl3)*(y1-y3))/k;</p><p> b=((x1-x3)*(xl2-xl3)-(xl1-xl3)*(x2-x3))/k;</p><p> c=(y1*(x3*xl2-x2*xl
73、3)+y2*(x1*xl3-x3*xl1)+y3*(x2*xl1-x1*xl2))/k;</p><p> d=((yl1-yl3)*(y2-y3)-(yl2-yl3)*(y1-y3))/k;</p><p> e=((x1-x3)*(yl2-yl3)-(yl1-yl3)*(x2-x3))/k;</p><p> f=(y1*(x3*yl2-x2*yl3)+y
74、2*(x1*yl3-x3*yl1)+y3*(x2*yl1-x1*yl2))/k;</p><p> Lcd_ClearScr(0x00);</p><p> GlibCursor(110,110,0xffff);</p><p> while(checkcount<4);</p><p> x1=DAT[3][0];</p
75、><p> y1=DAT[3][1];</p><p> xl1=a*x1+b*y1+c;</p><p> yl1=d*x1+e*y1+f;</p><p> if((xl1>=100)&&(xl1<=120)&&(yl1>=100)&&(yl1<=120))<
76、;/p><p><b> {</b></p><p> Uart_Printf("Test success\n");</p><p> //k=-0.12345;</p><p> Uart_Printf("k=%f,xl1=%d,yl1=%d\n",k,xl1,yl1)
77、;</p><p> Uart_Printf("a=%f,b=%f,c=%f,d=%f,e=%f,f=%f\n",a,b,c,d,e,f);</p><p> checkcount=0;</p><p><b> goto lll;</b></p><p><b> }</b&
78、gt;</p><p><b> else</b></p><p><b> {</b></p><p> Uart_Printf("Test Fail\n");</p><p> //k=100.23546;</p><p> Uart_
79、Printf("k=%f,xl1=%d,yl1=%d\n",k,xl1,yl1);</p><p> Uart_Printf("a=%f,b=%f,c=%f,d=%f,e=%f,f=%f\n",a,b,c,d,e,f);</p><p> checkcount=0;</p><p><b> goto lll;
80、</b></p><p><b> }</b></p><p><b> while(1);</b></p><p><b> }</b></p><p> void Main(void)</p><p><b> {&l
81、t;/b></p><p> char *mode;</p><p><b> int i;</b></p><p><b> U8 key;</b></p><p> U32 mpll_val = 0 ;</p><p> //U32 divn_upll =
82、 0 ;</p><p> Port_Init();</p><p> Isr_Init();</p><p> i = 2 ;//don't use 100M!</p><p> switch ( i ) {</p><p> case 0://200</p><p>&
83、lt;b> key = 12;</b></p><p> mpll_val = (92<<12)|(4<<4)|(1);</p><p><b> break;</b></p><p> case 1://300</p><p><b> key = 13;
84、</b></p><p> mpll_val = (67<<12)|(1<<4)|(1);</p><p><b> break;</b></p><p> case 2://400</p><p><b> key = 14;</b></p>
85、;<p> mpll_val = (92<<12)|(1<<4)|(1);</p><p><b> break;</b></p><p> case 3://440!!!</p><p><b> key = 14;</b></p><p> mp
86、ll_val = (102<<12)|(1<<4)|(1);</p><p><b> break;</b></p><p><b> default:</b></p><p><b> key = 14;</b></p><p> mpll_v
87、al = (92<<12)|(1<<4)|(1);</p><p><b> break;</b></p><p><b> }</b></p><p> //init FCLK=400M, so change MPLL first</p><p> ChangeMP
88、llValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);</p><p> ChangeClockDivider(key, 12);</p><p> cal_cpu_bus_clk();</p><p> consoleNum = 0;// U
89、art 1 select for debug.</p><p> Uart_Init( 0,115200 );</p><p> Uart_Select( consoleNum );</p><p> Beep(2000, 100);</p><p> rMISCCR=rMISCCR&~(1<<3); // USB
90、D is selected instead of USBH1 </p><p> rMISCCR=rMISCCR&~(1<<13); // USB port 1 is enabled.</p><p> rDSC0 = 0x2aa;</p><p> rDSC1 = 0x2aaaaaaa;</p><p> //E
91、nable NAND, USBD, PWM TImer, UART0,1 and GPIO clock,</p><p> //the others must be enabled in OS!!!</p><p> rCLKCON = 0xfffff0;</p><p> MMU_Init();//</p><p> pISR_S
92、WI=(_ISR_STARTADDRESS+0xf0);//for pSOS</p><p> Led_Display(0x66);</p><p> mode="DMA";</p><p> Clk0_Disable();</p><p> Clk1_Disable();</p><p>
93、; mpll_val = rMPLLCON;</p><p> Lcd_TFT_Init() ;// LCD initial</p><p> SD_card_init();</p><p> download_run=1; //The default menu is the Download & Run mode.</p><
94、;p> //Lcd_TFT_Init();</p><p> //FAT_Test();</p><p> FAT_Init();</p><p> PlayMusicFromSD("\\忘記.wav");</p><p> if(i=PlayMusicFromSD("\\昨天.wav&quo
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 音樂播放器的設(shè)計與實現(xiàn)畢業(yè)論文
- 畢業(yè)論文——基于android音樂播放器的設(shè)計
- 多媒體播放器的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于android的音樂播放器的設(shè)計-畢業(yè)論文
- 基于android的音樂播放器畢業(yè)論文
- 手機視頻播放器開發(fā)【畢業(yè)論文】
- 畢業(yè)論文--android在線音樂播放器設(shè)計與實現(xiàn)
- 基于android平臺的音樂播放器設(shè)計與實現(xiàn)畢業(yè)論文
- 基于Android音樂播放器的設(shè)計與開發(fā)畢業(yè)論文.doc
- 基于android平臺的音樂播放器設(shè)計與實現(xiàn)畢業(yè)論文
- 基于android的視頻播放器的設(shè)計與實現(xiàn)--畢業(yè)論文
- 音樂播放器畢業(yè)設(shè)計論文
- 畢業(yè)論文范文——android音樂播放器
- 畢業(yè)設(shè)計論文 音樂播放器設(shè)計
- 基于android平臺的音樂播放器-畢業(yè)論文
- 畢業(yè)論文——基于android平臺的音樂播放器
- 畢業(yè)論文設(shè)計 基于android手機平臺的音樂播放器
- 電子與信息工程畢業(yè)論文u盤音樂播放器設(shè)計
- 基于單片機的音樂播放器設(shè)計畢業(yè)論文
- 基于android開發(fā)音樂播放器的設(shè)計-畢業(yè)論文
評論
0/150
提交評論