基于單片機(jī)的MP3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的MP3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的MP3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的MP3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的MP3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于單片機(jī)的MP3播放器設(shè)計(jì)本課題來源于生產(chǎn)實(shí)踐音頻信號(hào)數(shù)字化后所面臨的一個(gè)不容忽視的問題是:巨大的數(shù)據(jù)量給存儲(chǔ)和傳輸帶來的壓力。因此音頻壓縮技術(shù)在廣播專業(yè)領(lǐng)域、網(wǎng)絡(luò)傳輸及多媒體應(yīng)用中受到廣泛關(guān)注,成為音頻信號(hào)處理的關(guān)鍵技術(shù)之一。MPEG(Moving Picture Experts Group)運(yùn)動(dòng)圖像專家組,在1992年底制定了第一個(gè)世界范圍的Hi-Fi(High-Fidelity)質(zhì)量的音頻編碼標(biāo)準(zhǔn)MPEG-1。MPEG-1分為三種不同的方式,稱為L(zhǎng)ayer1、Layer2和Layer3。序號(hào)越高,復(fù)雜性越大,但是可提供更好的編碼效率,特別是在低比特率時(shí)。MP3就是MPEG-1 Laye

2、r3,是基于感知編碼的算法,目前在CD音質(zhì)的聲音壓縮方面,是一種通用的方法。使用MP3標(biāo)準(zhǔn)對(duì)于音頻數(shù)據(jù)編碼既可以獲得較大的音頻數(shù)據(jù)壓縮比,又可以得到較好的音樂回放質(zhì)量。MP3的解碼器結(jié)構(gòu)復(fù)雜,涉及到大量的數(shù)學(xué)計(jì)算,對(duì)處理器與內(nèi)存的要求相當(dāng)高。目前,AT89C51處理器以其高性價(jià)比,豐富的外設(shè)資源,越來越受到各種嵌入式研發(fā)人員的青睞5-7?;谝陨媳尘埃以诖舜卧O(shè)計(jì)中提出了AT89C51SND1C微處理器的軟件解碼方案,在降低硬件成本的基礎(chǔ)上保證高質(zhì)量的播放效果。課題研究的意義MP3音頻播放器的最合理工作速度為30Mips,而一個(gè)典型的視頻媒體播放器的理想速度則為175Mips,所以提高M(jìn)P3的

3、工作速度,以及改善MP3的音質(zhì)是最關(guān)鍵的,也是亟待解決的問題。MP3是一種典型的嵌入式設(shè)備,而現(xiàn)在市場(chǎng)上比較常見的是閃存式MP3。由于閃存式MP3的容量限制,使它存儲(chǔ)歌曲數(shù)目較少,在功能上也很難實(shí)現(xiàn)多樣化。而硬盤式MP3的多功能及大容量,也必將受到不少消費(fèi)者的喜愛。另外一個(gè)原因是近年來,嵌入式系統(tǒng)與單片機(jī)開發(fā)的有機(jī)結(jié)合,已廣泛被應(yīng)用于網(wǎng)絡(luò)通信、工業(yè)控制、機(jī)頂盒、PDA等諸多領(lǐng)域8。本文提出了一種基于單片機(jī)的MP3播放器的設(shè)計(jì)方案,這就進(jìn)一步的體現(xiàn)了該設(shè)計(jì)的靈活性。目前該設(shè)計(jì)方案已經(jīng)實(shí)現(xiàn),實(shí)踐證明,此播放器擁有市面MP3所有的全部功能并能夠很好的運(yùn)行。MP3播放器一般分成3個(gè)部分:CPU、MP3

4、硬件解碼器存儲(chǔ)器。其中可以將前兩部分集成在一起,即帶MP3硬件解碼器的CPU;或?qū)⒑髢刹糠旨稍谝黄?,即集成硬件解碼、DA轉(zhuǎn)換及音頻輸入。存儲(chǔ)器可以是Flash存儲(chǔ)器或硬盤。通過用MP3編碼技術(shù),可以得到大約12:1壓縮的有損音樂信號(hào)。盡管MP3音樂是有損的,它在壓縮過程中對(duì)功率譜較弱的信號(hào)有所丟失,但它同CD原聲區(qū)別不大,不影響一般音樂愛好者對(duì)音樂的欣賞。MP3大大縮小了聲音文件的長(zhǎng)度,使音樂的存儲(chǔ)和傳輸更方便。2 MP3的編解碼過程2.1 MP3的工作原理一個(gè)完整MP3播放器要分幾個(gè)部分:中央處理器、解碼器、存儲(chǔ)設(shè)備、主機(jī)通訊端口、音頻D/A和功放、顯示界面和控制鍵、其中中央處理器和解碼器

5、是整個(gè)系統(tǒng)地核心。這里的中央處理器我們通常成為MCU(單片微處理器),簡(jiǎn)稱單片機(jī)。它運(yùn)行MP3的整個(gè)控制程序,也稱為fireware(或者固件程序)??刂芃P3的各個(gè)部件的工作:從存儲(chǔ)設(shè)備讀取數(shù)據(jù)送到解碼器解碼;與主機(jī)連接時(shí)完成與主機(jī)的數(shù)據(jù)交換;接收控制按鍵的操作;顯示系統(tǒng)運(yùn)行狀態(tài)等任務(wù)。解碼器是芯片中的一個(gè)硬件模塊,或者說是硬件解碼(有的MP3播放機(jī)是軟件解碼,由高速中央處理器完成)。它可以直接完成各種格式MP3數(shù)據(jù)流的解碼操作,并輸出PCM或I2S格式的數(shù)字音頻信號(hào)10。存儲(chǔ)設(shè)備是MP3播放機(jī)的重要部分,通常的MP3隨身聽都是采用半導(dǎo)體存儲(chǔ)器(FLASH MEMORY)或者硬盤(HDD)作

6、為儲(chǔ)存設(shè)備的11。它通過接收儲(chǔ)存主機(jī)通訊端口傳來的數(shù)據(jù)(通常以文件形式),回放的時(shí)候MCU讀取存儲(chǔ)器中的數(shù)據(jù)并送到解碼器。數(shù)據(jù)的存儲(chǔ)是要有一定格式的,眾所周知,PC管理磁盤數(shù)據(jù)是以文件形式,MP3亦不例外,最常用的辦法就是直接利用PC的文件系統(tǒng)來管理存儲(chǔ)器,微軟操作系統(tǒng)采用的是FAT文件系統(tǒng),這也是最廣泛使用的一種12。播放機(jī)其中一個(gè)任務(wù)就是要實(shí)現(xiàn)FAT文件系統(tǒng),即可以從FAT文件系統(tǒng)支持的磁盤中按文件名訪問并讀出其中的數(shù)據(jù)。主機(jī)通訊端口是MP3播放機(jī)與PC機(jī)交換數(shù)據(jù)的途徑,PC通過該端口操作MP3播放機(jī)存儲(chǔ)設(shè)備中的數(shù)據(jù),拷貝、刪除、復(fù)制文件等操作。目前最廣泛使用的是USB總線,并且遵循微軟定

7、義的大容量移動(dòng)存儲(chǔ)協(xié)議規(guī)范,將MP3播放機(jī)作為主機(jī)的一個(gè)移動(dòng)存儲(chǔ)設(shè)備。這里需要遵循幾個(gè)規(guī)范:USB通信協(xié)議、大容量移動(dòng)存儲(chǔ)器規(guī)范和SCSI協(xié)議13-15。音頻DAC是將數(shù)字音頻信號(hào)轉(zhuǎn)換成模擬音頻信號(hào),以推動(dòng)耳機(jī)、功放等模擬音響設(shè)備。這里要介紹一下數(shù)字音頻信號(hào)。數(shù)字音頻信號(hào)是相對(duì)模擬音頻信號(hào)來說的。我們知道聲音的本質(zhì)是波,人們能聽到的聲音頻率在20Hz到20kHz之間,稱為聲波。模擬信號(hào)對(duì)波的表示是連續(xù)的函數(shù)特性,基本的原理是不同頻率和振幅的波疊加在一起。數(shù)字音頻信號(hào)是對(duì)模擬信號(hào)的一種量化,典型方法是對(duì)時(shí)間坐標(biāo)按相等的時(shí)間間隔做采樣,對(duì)振幅做量化。單位時(shí)間內(nèi)的采樣次數(shù)稱為采樣頻率。這樣一段聲波就

8、可以被數(shù)字化后變成一串?dāng)?shù)值,每個(gè)數(shù)值對(duì)應(yīng)相應(yīng)抽樣點(diǎn)的振幅值,按順序?qū)⑦@些數(shù)字排列起來就是數(shù)字音頻信號(hào)了。這是ADC(模擬數(shù)字轉(zhuǎn)換)過程,DAC(數(shù)字模擬轉(zhuǎn)換)過程相反,將連續(xù)的數(shù)字按采樣時(shí)候的頻率轉(zhuǎn)換成對(duì)應(yīng)的電壓。MP3解碼器解碼后的信息屬于數(shù)字音頻信號(hào)(數(shù)字音頻信號(hào)有不同的格式,最常用的是PCM和I2S兩種),需要通過DAC轉(zhuǎn)換器變成模擬信號(hào)才能推動(dòng)功放,被人耳所識(shí)別。2.2 MP3播放器編碼過程編碼分析一、音頻信號(hào)數(shù)字化信號(hào)的數(shù)字化就是將連續(xù)的模擬信號(hào)轉(zhuǎn)換成離散的數(shù)字信號(hào),一般需要完成采樣、量化和編碼三個(gè)步驟,如圖2-1所示。采樣是指用每隔一定時(shí)間間隔的信號(hào)樣本值序列來代替原來的時(shí)間上連續(xù)

9、的信號(hào);量化是用有限個(gè)幅度近似表示原來的時(shí)間上連續(xù)變化的幅度值,把模擬信號(hào)的連續(xù)幅度變?yōu)橛邢迶?shù)量、有一定時(shí)間間隔的離散值;編碼則是按照一定的規(guī)律,把量化后的離散值用二進(jìn)制數(shù)碼表示。上述數(shù)字化的過程又稱為脈沖編碼調(diào)制,通常由A/D轉(zhuǎn)換器來實(shí)現(xiàn)。模擬音頻信號(hào)低通濾波器編碼數(shù)字流采樣量化圖2-1音頻信號(hào)數(shù)字化數(shù)字音頻信號(hào)經(jīng)過處理、記錄或傳輸后,當(dāng)需要重現(xiàn)聲音時(shí),還必須還原為連續(xù)變化的模擬信號(hào)。將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)為D/A轉(zhuǎn)換。數(shù)字音頻的質(zhì)量取決于采樣頻率和量化位數(shù)。采樣頻率越高,量化位數(shù)越多,數(shù)字化后的音頻質(zhì)量越高。二、音頻采樣采樣就是從一個(gè)時(shí)間上連續(xù)變化的模擬信號(hào)取出若干個(gè)有代表性的樣本值,來

10、代表這個(gè)連續(xù)變化的模擬信號(hào)。一個(gè)在時(shí)間和幅值上都連續(xù)的模擬音頻信號(hào)的函數(shù)表示為,采樣的過程就是在時(shí)間上將函數(shù)離散化的過程。一般的采樣是按照均勻的時(shí)間間隔進(jìn)行的。設(shè)這一時(shí)間間隔為T,則取樣后的信號(hào)為,n為自然數(shù)。根據(jù)奈奎斯特采樣定理:要從采樣值序列完全恢復(fù)原始的波形,采樣頻率必須大于或等于原始信號(hào)最高頻率的2倍。設(shè)連續(xù)信號(hào)的頻譜為,以采樣間隔時(shí)間T抽樣得到離散信號(hào),如果滿足時(shí),其中是截止頻率,即時(shí),可以由完全確定連續(xù)信號(hào),如公式(2-1)所示。(2-1)因此,可由離散信號(hào)完全確定頻譜,如公式(2-2)所示。 (2-2)當(dāng)采樣頻率為1/2T時(shí),即時(shí),稱為奈奎斯特采樣頻率。三、音頻量化采樣把模擬信號(hào)

11、變成了時(shí)間上離散的樣值序列,但每個(gè)樣值的幅度仍然是一個(gè)連續(xù)的模擬量,因此還必須對(duì)其進(jìn)行離散化處理,將其轉(zhuǎn)換為有限個(gè)離散值,才能最終與數(shù)碼來表示其幅值。量化過程是將采樣值在幅度上再進(jìn)行離散化處理的過程。所有的采樣值可能出現(xiàn)的范圍被劃分成有限多個(gè)量化階的集合,把凡是落入某個(gè)量化階內(nèi)的采樣值都賦予相同的值,即量化值。通常這個(gè)量化值用二進(jìn)制來表示,用N位二進(jìn)制碼字可以表示2N個(gè)不同的量化電平。存儲(chǔ)數(shù)字音頻信號(hào)的比特率為:,其中的是采樣率,N是每個(gè)采樣值的比特?cái)?shù)。表示采樣值的二進(jìn)制的位數(shù)為量化位數(shù),它反映出各采樣值的精度,如3位能表示采樣值的8個(gè)等級(jí),8位能反映256個(gè)等級(jí),其精度為音頻信號(hào)最大振幅的1

12、/256。量化位數(shù)越多,量化值越接近于采樣值,其凈度越高,但要求的信息存儲(chǔ)量就越大。根據(jù)以上公式可知,要減小比特率I,在2s已經(jīng)確定的情況下,只能去減少N的值。N的值降低會(huì)導(dǎo)致量化的精度降低,N的值增加又會(huì)導(dǎo)致信息存儲(chǔ)量的增加。因此在編碼時(shí)就需要合理地選擇N的值16。均勻量化就是采用相等的量化間隔進(jìn)行采樣,也稱為線性量化。用均勻量化來量化輸入信號(hào)時(shí),無論對(duì)大的輸入信號(hào)還是小的輸入信號(hào)都一律采用相同的量化間隔。因此,要想既適應(yīng)幅度大的輸入信號(hào),同時(shí)又要滿足精度高的要求,就需要增加采樣樣本的位數(shù)。非均勻量化的基本思想是對(duì)輸入信號(hào)進(jìn)行量化時(shí),大的輸入信號(hào)采用大的量化間隔,小的輸入信號(hào)采用小的量化間隔

13、,這樣就可以在滿足精度要求的情況下使用較少的位數(shù)來表示。其中采樣輸入信號(hào)幅度和量化輸出數(shù)據(jù)之間一般定義了兩種關(guān)系,一種成為u律壓縮算法,另一種成為A律壓縮算法。采用不同量化方法,量化后的數(shù)據(jù)量也就不同。因此說量化也是一種壓縮數(shù)據(jù)的方法。四、音頻編碼采樣、量化后的信號(hào)還不是數(shù)字信號(hào),需要把它轉(zhuǎn)換成數(shù)字脈沖,這一過程成為編碼。最簡(jiǎn)單的編碼方式是二進(jìn)制編碼。具體說就是用n比特的二進(jìn)制編碼來表示已經(jīng)量化了的樣值,每個(gè)二進(jìn)制數(shù)對(duì)應(yīng)一個(gè)量化電平,然后把它們排列,得到由二值脈沖串組成的數(shù)字信息流。用這種方式組成的二值脈沖的頻率等于采樣頻率與量化比特?cái)?shù)的乘積,成為數(shù)字信號(hào)的數(shù)碼率。采樣頻率越高,量化比特?cái)?shù)越大

14、,數(shù)碼率就越高,所需要的傳輸帶寬就越寬17。音頻編碼方法歸納起來可分三大類:波形編碼、參數(shù)編碼、混合編碼。波形編碼是盡量保持輸入波形不變,即重建的語音信號(hào)基本上與原始語音信號(hào)波形相同,壓縮比較低;參數(shù)編碼是要求重建的信號(hào)聽起來與輸入語音一樣,但其波形可以不同,它是以語音信號(hào)所產(chǎn)生的數(shù)學(xué)模型為基礎(chǔ)的一種編碼方法,壓縮較高;混合編碼是綜合了波形編碼的高質(zhì)量潛力和參數(shù)編碼的高壓縮效率的混合編碼方法,這類方法也是目前低碼率編碼的方向。2.2.2編碼過程MP3文件由一系列長(zhǎng)度不同的幀組成,一個(gè)接著一個(gè),就好像電影膠片一樣。每一幀的前面都有一個(gè)頭信息,其中就包括一些關(guān)于后繼數(shù)據(jù)的額外信息。在某些編碼中,這

15、些幀可以互相影響。例如,一幀有剩余的空間,而下一幀沒有,他們就可以組合起來產(chǎn)生一個(gè)優(yōu)化的結(jié)果。在一個(gè)MP3文件的開始或者結(jié)尾,通常會(huì)存儲(chǔ)一些額外的信息,包括歌手、曲目名、專輯名、錄制時(shí)間、流派以及個(gè)人評(píng)論。這叫做“ID3”數(shù)據(jù),當(dāng)文件數(shù)目不斷增長(zhǎng)是,將會(huì)非常有用。MP3使用兩種技術(shù)獲得好的壓縮比:一種有損壓縮,一種無損壓縮。首先,壓縮過程將人類根本不能聽到的部分丟棄(或者至少做出可接受的折衷),然后對(duì)冗余編碼進(jìn)一步的壓縮18。然而,正是第一部分的壓縮做了大部分的工作,也具有更多的復(fù)雜性,這里也被更多的考慮。MP3編碼工具分析信號(hào)源,把它分解為各種數(shù)學(xué)模板,并與編碼器存儲(chǔ)的心理聲學(xué)模板進(jìn)行比較。

16、編碼器就可以丟棄大部分不匹配的數(shù)據(jù)。MP3編碼過程可以分成幾個(gè)步驟:首先,將信號(hào)分解成稱為幀的組建片、每一幀持續(xù)不到一秒。這和電影中的幀很類似。第二,分析信號(hào)已決定其“光譜能量分布”,也就是說,在整個(gè)可聽頻率的光譜范圍內(nèi),找出怎樣將比特流進(jìn)行分布,以產(chǎn)生最好的音頻編碼。因?yàn)轭l率光譜的不同部分使用相同的算法,經(jīng)過輕微的變換,可以進(jìn)行高效編碼,這一步將信號(hào)分解為子帶(sub-bands),子帶可以獨(dú)立的進(jìn)行處理以產(chǎn)生最優(yōu)的效果(注意所有的子帶都使用相同的算法,不同只是因?yàn)槭褂玫木幋a器不同造成的其分配的比特流大小不同而已)。第三,要考慮數(shù)據(jù)傳輸率,它決定了每一幀能夠分配的比特最大值。例如,如果數(shù)據(jù)傳

17、輸率是128kbit/s,那么每一幀可以分配的數(shù)據(jù)上限就確定了(除非使用變比特率方法)。這一步?jīng)Q定了可以存儲(chǔ)多少可獲得的數(shù)據(jù)以及有多少數(shù)據(jù)被丟棄。把每一幀的頻率分布于人類心理聲學(xué)的數(shù)學(xué)模板進(jìn)行比較(數(shù)學(xué)模板作為一個(gè)索引表存儲(chǔ)在編/解碼器中),從這些模板中就可以決定,哪些頻率應(yīng)該準(zhǔn)確的渲染表現(xiàn)出來,那些頻率可以丟棄或者分配較少的bit。第四,經(jīng)過Huffman編碼的處理,這個(gè)過程去處取樣的冗余信息。Huffman編碼與心理聲學(xué)模型并不相關(guān),它只是通過傳統(tǒng)的壓縮方式獲得額外的壓縮比。因此,讀者可以看到,整個(gè)MP3編碼過程是:首先,利用所有的心理聲學(xué)模板選擇性的丟棄大量數(shù)據(jù),然后壓縮剩余的數(shù)據(jù),消除

18、冗余。其中的第二步,并不丟棄數(shù)據(jù),它僅僅使用更小的空間存儲(chǔ)剩余的數(shù)據(jù)。把一定數(shù)量的幀集合起來,再在每個(gè)數(shù)據(jù)幀前加上頭信息,就組裝成一系列的比特流,頭信息主要包括一些相關(guān)幀的指令。在這個(gè)過程中,許多其他因素需要考慮,這經(jīng)常在開始編碼前就需要預(yù)先設(shè)定。另外,對(duì)每個(gè)單獨(dú)的幀的編碼算法經(jīng)常還依賴于對(duì)前一幀和后一幀。整個(gè)過程包含了某種程度的同步,前面的步驟并不必須按順序進(jìn)行19。MP3的聲音數(shù)據(jù)分成幀,每幀包含1152個(gè)樣本的數(shù)據(jù),由32個(gè)子帶分別輸出MP3的編碼器輸入,以12個(gè)樣本為一組,每組樣本經(jīng)過時(shí)間-頻率變換之后進(jìn)行一次位分配并記錄一個(gè)比例因子(scale factor)。位分配的信息告訴解碼器

19、每個(gè)樣本由幾位表示,比例因子用6位表示解碼器,使用6位的比例因子乘以量化器的每個(gè)輸出樣本值,以恢復(fù)被量化的子帶值。比例因子的作用是充分利用量化器的量化范圍,通過位分配的比例因子相配合,可以表示的動(dòng)態(tài)范圍超過了120dB的樣本20。MP3使用了從ASPEC(Audio Spectral Perceptual Encoding)和OCF(Optimal Coding In The Frequency domain)導(dǎo)出的算法。在濾波器組上,MP3在使用了正交鏡像濾波(和MP1和MP2相同)后,緊跟著使用了改進(jìn)離散余弦變換MDCT(Modified Discrete Cosine Transform

20、),對(duì)正交鏡像濾波的不足進(jìn)行了一些補(bǔ)償。MDCT把子帶的輸出在頻域里進(jìn)一步細(xì)分已達(dá)到更高的頻域分辨率。而且通過對(duì)子帶的進(jìn)一步細(xì)分,編碼器部分消除了多相濾波器組引入的混迭效果。MP3編碼器的詳細(xì)框圖如圖2-2所示。分析濾波器組比例器和量化器哈夫曼編碼掩蔽域值邊信號(hào)編碼器FFTMDCT動(dòng)態(tài)加窗逆MDCT動(dòng)態(tài)加窗合成濾波器組逆比例器和量化器哈夫曼解碼器邊信號(hào)解碼器MCUMCU數(shù)字通信圖2-2MP3編碼器和解碼器的結(jié)構(gòu)MP3指定了兩種MDCT的塊長(zhǎng):長(zhǎng)塊的塊長(zhǎng)為18個(gè)樣本,短塊的塊長(zhǎng)為6個(gè)樣本,相鄰變換的窗口之間有50%的重疊。長(zhǎng)塊對(duì)于平穩(wěn)的聲音信號(hào)可以得到更高的頻域分辨率,而短塊對(duì)跳變的聲音信號(hào)可以

21、得到更好的時(shí)域分辨率。在短塊模式下,3個(gè)短塊代替了一個(gè)長(zhǎng)塊,短塊的長(zhǎng)恰好是一個(gè)長(zhǎng)塊的1/3,所以MDCT的樣本數(shù)不受塊長(zhǎng)的影響。給定的一個(gè)幀聲音信號(hào),MDCT可以全部使用長(zhǎng)塊或全部使用短塊,也可以長(zhǎng)短塊混合使用。因?yàn)榈皖l區(qū)的頻域分辨率對(duì)音質(zhì)有重大影響,所以在混合塊長(zhǎng)模式下MDCT對(duì)低頻的2個(gè)子帶使用長(zhǎng)塊,而對(duì)其余的30個(gè)子帶使用短塊。這樣,既能保證低頻區(qū)的頻域分辨率,又不會(huì)犧牲高頻域的時(shí)域分辨率。長(zhǎng)塊和短塊之間的切換有一個(gè)過程,一般用一個(gè)帶特殊長(zhǎng)轉(zhuǎn)短或者短轉(zhuǎn)長(zhǎng)數(shù)據(jù)窗口的長(zhǎng)塊來完成這個(gè)長(zhǎng)短塊之間的切換。除了使用MDCT外,MP3還采用了其他許多改進(jìn)措施來提高壓縮比而不降低音質(zhì)。雖然MP3引入了許

22、多復(fù)雜的感念,但是它的計(jì)算量并沒有比MP2增加許多。增加的主要是編碼器的復(fù)雜度和解碼器所需要的存儲(chǔ)容量。2.3 MP3播放器解碼過程作為一個(gè)整體,MP3系統(tǒng)的大部分工作放在了解碼部分。但是,普通用戶主要是播放MP3文件而不是制造它,這里將重點(diǎn)介紹解碼過程。解碼器并不需要存儲(chǔ)或者利用人類心理聲學(xué)理論,也不需要進(jìn)行比特分配過程。MP3播放器所關(guān)注的只是檢查比特流的頭和頻譜分布的數(shù)據(jù)幀,以及和它們存儲(chǔ)在一起的邊信息,然后再將重建這些信息為音頻信號(hào)。從某種意義上說,播放器其實(shí)就是一個(gè)MP3文件、播放列表和聲卡的接口,將它們包裝為相對(duì)簡(jiǎn)單明了的解碼MP3比特流格式的規(guī)則。不同的MP3解碼器在效率上有著很

23、大的不同,同樣在解碼后聲音的質(zhì)量上也有很大的不同,在過去的幾年里,這些不同對(duì)計(jì)算機(jī)硬件的依賴在很大程度上被忽視了,實(shí)際上解碼器也同樣要消耗大量系統(tǒng)資源的。這在那些沒有良好微線程特征的操作系統(tǒng)中特別的明顯,如果有適當(dāng)?shù)挠布?,可以在很大程度上免除MP3的中斷的問題。一些MP3解碼器比其他解碼器占用更多的CPU時(shí)間,但是,用效率來衡量它們之間的區(qū)別并不比用其它特征來衡量的區(qū)別大。選擇MP3播放器關(guān)系到成本、可擴(kuò)展性、音頻質(zhì)量和外觀。圖2-3為MP3的整個(gè)解碼過程的流程圖,與解碼器的圖相對(duì)應(yīng):同步并讀取幀頭解碼邊信息解碼比例系數(shù)霍夫曼解碼轉(zhuǎn)化為PCM采樣逆離散余弦變化刪除偽信號(hào)重新量化圖2-3 MP3

24、解碼流程本節(jié)主要介紹了MP3的編解碼過程。MP3播放器的編碼過程包括:音頻信號(hào)數(shù)字化、音頻采樣、音頻量化和音頻編碼。編碼器將模擬信號(hào)經(jīng)處理后,轉(zhuǎn)換成數(shù)字信號(hào)進(jìn)行傳輸。MP3的解碼是編碼的反過程,主要是從編碼后的譜線成分中,經(jīng)過反量化和逆變換,提取出聲音信號(hào)。MP3的解碼總體上可分為比特流分析,霍夫曼編碼,逆量化處理,立體聲處理,頻譜重排列,抗鋸齒處理,逆離散余弦變化,子帶合成,PCM輸出。3 MP3播放器的硬件設(shè)計(jì)與實(shí)現(xiàn)3.1 系統(tǒng)的總體設(shè)計(jì)此次設(shè)計(jì)方案可以方便的將外部的MP3格式的音樂文件傳輸?shù)奖鞠到y(tǒng)的存儲(chǔ)器Flash中。如圖3-1可以看出本系統(tǒng)的具體硬件設(shè)計(jì)主要包括:主芯片和USB接口的連

25、接設(shè)計(jì),此部分主要用于MP3文件的傳輸和固件下載;主芯片和按鍵以及LCD之間的設(shè)計(jì)連接,用戶通過顯示屏幕獲取播放器的進(jìn)程息,通過按鍵來對(duì)音樂進(jìn)行選擇和控制;主芯片和D/A轉(zhuǎn)換器之間,這一系統(tǒng)將該系統(tǒng)解碼后的數(shù)字信號(hào)轉(zhuǎn)換為人耳能識(shí)別的模擬信號(hào),這一部分主要包括時(shí)鐘信號(hào)、數(shù)據(jù)信號(hào)以及反饋信號(hào)的連接;電源轉(zhuǎn)換部分,本系統(tǒng)內(nèi)部使用的電源一般為3.3V,而USB接口以及電池的電源都需要DC-DC部分來進(jìn)行轉(zhuǎn)換,從而為系統(tǒng)提供所需的3.3V電源;播放系統(tǒng)和存儲(chǔ)系統(tǒng)的切換電路設(shè)計(jì)。LCD顯示器Keyboard(操作按鍵)MCU(AT89C51SND1C)MP3解碼器(AT89C51SND1C芯片內(nèi)部集成)D

26、/A轉(zhuǎn)換器功放音頻輸出通信接口(USB1.1)圖3-1系統(tǒng)硬件結(jié)構(gòu)MP3工作原理流程圖如圖3-2所示。讀取存儲(chǔ)器上的信號(hào)解碼器對(duì)信號(hào)進(jìn)行解碼通過D/A轉(zhuǎn)換器將解碼出的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)把轉(zhuǎn)換后的模擬音頻放大低通濾波后到音頻輸出圖3-2工作原理流程圖MP3播放器的軟件結(jié)構(gòu)跟硬件是相對(duì)應(yīng)的,即每一個(gè)硬件部分都有相應(yīng)的軟件代碼,這是因?yàn)榇蠖鄶?shù)的硬件部分都是數(shù)字可編程控制的。音樂播放器首先讀取存儲(chǔ)器上的音樂信號(hào),再通過解碼器對(duì)信號(hào)進(jìn)行解碼分析,經(jīng)解碼的信號(hào)通過D/A轉(zhuǎn)換器將解碼出的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),然后把轉(zhuǎn)換后的模擬音頻放大,通過低通濾波后到音頻輸出。3.2. 主電路設(shè)計(jì)系統(tǒng)的主芯片采用美國(guó)

27、ATMEL公司的AT89C51SND1C,該芯片是一個(gè)2.53.3 V低電壓、80 mW低功耗、運(yùn)算速度高、功能完善、高度集成并且低成本的單芯片數(shù)字(MPEG1,2,2.5&3)音頻解碼器。其特點(diǎn)如下:基于8位C51MCU核(最大時(shí)鐘頻率20MHz);內(nèi)部集成了單獨(dú)的MP3 解碼器,而且支持48,44.1,32,24,22.05,16 kHz采樣頻率,支持左右聲道獨(dú)立的音量控制(軟件使用31級(jí))、重低音、中音、高音均衡控制(31級(jí))、重低環(huán)繞聲效果、輔助數(shù)據(jù)輸出、“CRC錯(cuò)誤”和“MPEG幀同步”指示;有44通用I/O口的嵌入式C51 Nand Flash,SSFDC,I2S,SPI和

28、IDE多種擴(kuò)展功能接口容易適應(yīng)多種應(yīng)用場(chǎng)合Flash/CD/HDD播放器等;具有適應(yīng)市場(chǎng)上不同的D/A轉(zhuǎn)換器的可編程的音頻輸出接口,兼容PCM格式和I2S格式;內(nèi)置2304BRAM;64KBFlash程序空間和4KB引導(dǎo)閃存(AT89C51SNDl),在系統(tǒng)編程:通過USB,UART接口進(jìn)行在系統(tǒng)編程;USB1.1控制器,“Full speed”數(shù)據(jù)傳輸;內(nèi)置鎖相環(huán),提供MP3音頻時(shí)鐘和USB時(shí)鐘;兼容 MultiMedia Card(MMC)卡接口、Atmel Data Flash SPI接口、IDE/ATAPI(硬盤)接口 ; 通道10位A/D轉(zhuǎn)換器,8kHz(8位真有效值),包括電池電壓

29、監(jiān)視和軟監(jiān)控的錄音;AT89C51SNDIC內(nèi)部結(jié)構(gòu)簡(jiǎn)化后實(shí)際就是64K80C51+MP3解碼器+USB,使用該芯片設(shè)計(jì)MP3播放系統(tǒng)具有很多優(yōu)點(diǎn),如支持在系統(tǒng)編程不需要昂貴的仿真器,系統(tǒng)設(shè)計(jì)成本降低;內(nèi)置2304B的RAM,方便用戶增加復(fù)雜的功能。AT89C51SND1內(nèi)部主要資源如圖3-3所示。圖3-3 AT89C51SND1C 內(nèi)部主要資源此外,由于該芯片內(nèi)部集成了大量的接口,所以只需要很少的外圍器件如DC-DC,音頻D/A轉(zhuǎn)換器和存儲(chǔ)器就可以實(shí)現(xiàn)系統(tǒng)的要求,這樣可以做到系統(tǒng)空間很小,這一點(diǎn)正好適應(yīng)現(xiàn)代系統(tǒng)設(shè)計(jì)的纖小而功能全面的要求。該芯片共80引腳,封裝為TQFP80,就是四邊各20引

30、腳的貼片封裝。圖3-4為AT89C51SND1的引腳定義。對(duì)于功能復(fù)用的引腳要慎重考慮。本設(shè)計(jì)并沒有使用單片機(jī)的全部功能,部分沒有占用的IO端口和MMC等專用借口都用擴(kuò)展槽引出了,可以用來擴(kuò)展其他電路。管腳說明:·IO端口P1-P3和8051功能相同。P1端口第二功能有KIN3:0 SCL SDAP4具有8-bit內(nèi)部上拉IO.第二功能 MISO MOSI SCK SSP5具有4-bit內(nèi)部上拉IO.時(shí)鐘信號(hào)管腳·X1 I輸入芯片上反向振蕩放大器使用內(nèi)部振蕩器,晶振/諧振器電路連接到該管腳。如果使用一個(gè)外部振蕩器,其輸出被連接到該管腳。X1是內(nèi)部的時(shí)間的時(shí)鐘脈沖源。

31、3;X2 O輸出片上振蕩器反相放大器使用內(nèi)部振蕩器,晶振/諧振器電路連接到該管腳。如果外部振蕩器使用,給X2的懸空。·FILT IPLL的低通濾波器輸入FILT員工接收PLL的低通濾波器的RC網(wǎng)絡(luò)。定時(shí)器信號(hào)說明:·INT0 I (P3.2)INT0的服務(wù)為定時(shí)器0,當(dāng)選定TCON中的位寄存器由GATE0外部運(yùn)行控制。INT0的輸入控制TCON寄存器里的IE0位.If(IT0=1)位IE0被INT0低電平.If(IT0=0)位IE0被INT0低電平觸發(fā).·INT1 I (P3.3)INT1的作為定時(shí)器1當(dāng)由GATE1 TCON寄存器中的位選擇外部運(yùn)行控制。INT1

32、的輸入控制TCON寄存器里的IE1位.If(IT1=1)位IE1被INT1低電平.If(IT1=0)位IE1被INT1低電平觸發(fā).·T0 I P3.4當(dāng)定時(shí)器0作為一個(gè)計(jì)數(shù)器運(yùn)行,T0代引腳下降沿遞增計(jì)數(shù)。·T1 I P3.5當(dāng)定時(shí)器1作為一個(gè)計(jì)數(shù)T1引腳上的下降沿遞增計(jì)數(shù)操作。圖3-4 AT89C51SND1C引腳圖 單片機(jī)最小系統(tǒng)單片機(jī)芯片,配以必要的外部器件就能構(gòu)成單片機(jī)最小系統(tǒng)。單片機(jī)具有較強(qiáng)的外部擴(kuò)展、通信能力,能方便地?cái)U(kuò)展至應(yīng)用系統(tǒng)所要求的規(guī)模。當(dāng)使用帶ROM或EPROM的MCS-51系列單片機(jī)時(shí),只要一個(gè)芯片即可構(gòu)成一個(gè)單片機(jī)的最小系統(tǒng)。選用AT89C51單片

33、機(jī)作為主機(jī),它具有4K片內(nèi)ROM,128字節(jié)片內(nèi)RAM,片外ROM尋址范圍達(dá)64K,2個(gè)16位計(jì)數(shù)器,5個(gè)中斷源,4個(gè)并行口,一個(gè)串行口。簡(jiǎn)易自動(dòng)樂曲播放器采用單片機(jī)最小系統(tǒng)足以滿足系統(tǒng)設(shè)計(jì)要求,同時(shí)要設(shè)計(jì)單片機(jī)最小系統(tǒng)的晶振和復(fù)位電路。電源部分電源是整個(gè)播放器的重要組成部分,圖3-5是電源部分的電路,圖中AS1117是一款低壓差的線性穩(wěn)壓器,當(dāng)輸出1A電流時(shí),輸入輸出的電壓差典型值僅為1.2V。除了能提供各種穩(wěn)定電壓版本外(Vout=1.8V,2.5V,2.85V,3.3V,5V),還提供可調(diào)端輸出版本,該版本能提供的輸出電壓范圍為1.25V13.8V。圖3-5電源電路圖AS1117提供完善

34、的過流保護(hù)和過熱保護(hù)功能(AS1117正常工作環(huán)境溫度范圍極寬,為-50140),確保芯片和電源系統(tǒng)的穩(wěn)定性。同時(shí)在產(chǎn)品生產(chǎn)中應(yīng)用先進(jìn)的修正技術(shù),確保輸出電壓和參考精度在1%的精度范圍內(nèi)。AS1117的系統(tǒng)框圖如圖3-6所示。圖3-6 AS1117系統(tǒng)框圖 D/A 轉(zhuǎn)換部分當(dāng)MP3或者WMA等格式的音樂文件經(jīng)過主芯片內(nèi)部解碼后為數(shù)字信號(hào), 而人耳所能識(shí)別的信號(hào)卻為模擬信號(hào),系統(tǒng)利用CS4331進(jìn)行轉(zhuǎn)換。AT89C51SND1C從Flash中讀取數(shù)據(jù)之后,將MP3格式的音樂在其內(nèi)部進(jìn)行硬件解碼為二進(jìn)制數(shù)據(jù), 之后通過 D/A 轉(zhuǎn)換器CS4331來對(duì)這些數(shù)據(jù)進(jìn)行數(shù)模轉(zhuǎn)換,轉(zhuǎn)換成人耳可以接受的音樂。

35、主芯片AT89C51SND1C 內(nèi)部有一個(gè)音頻輸出接口,支持不同格式的音頻數(shù)據(jù)流格式,如PCM格式和I2S格式,該接口可以跟幾乎所有的通用音頻 D/A 轉(zhuǎn)換器相連。CS4331在改善音頻質(zhì)量,降低信噪比等方面都很好。同時(shí)AT89C51SND1C內(nèi)部集成了MP3軟件解碼器,系統(tǒng)不需要外接額外的解碼器。解碼后的數(shù)字信號(hào)經(jīng)過D/A轉(zhuǎn)換后還原為模擬音頻信號(hào)。圖3-7為D/A轉(zhuǎn)換電路圖。圖3-7 D/A轉(zhuǎn)換電路圖音頻DA芯片在MP3播放器中承擔(dān)音頻信號(hào)的數(shù)字/模擬轉(zhuǎn)換功能,其性能直接影響最終的音樂效果和音質(zhì)。CS4331芯片沒有配置引腳,無需軟件配置。CS4331的內(nèi)部框圖如下圖。SDATA是位流數(shù)據(jù)輸

36、入,SCLK是位流時(shí)鐘,LRCK是聲道選擇時(shí)鐘,其頻率即采樣率。MCLK則是DAC電路所需的主時(shí)鐘。圖3-8為CS4331芯片內(nèi)部結(jié)構(gòu)圖。圖3-8 CS4331芯片內(nèi)部結(jié)構(gòu)3.2.4 控制部分播控系統(tǒng)的設(shè)置通過按鍵來選擇,AT89C51SND1C提供4個(gè)按鍵輸入口,連接USB 前,短接了DFU跳線,運(yùn)行BootLoader,進(jìn)入到固件下載;接到USB前,按下了FORMAT,則格式化U盤;連接到USB,不按任何鍵,則進(jìn)入U(xiǎn)盤功能。使用電池供電時(shí),不按任何鍵,則進(jìn)入MP3模式。MP3鍵盤由4個(gè)鍵組成,分別為Play/Pause鍵、Previous鍵、Next鍵和Func鍵:Func,功能切換;Ne

37、xt,向后;Previous,向前;Play/Pause,播放/暫停。用戶在使用播放器時(shí)可以方便地根據(jù)自己的喜好來選擇歌曲播放或暫停。操作狀態(tài)和設(shè)置信息通過LCD1602來顯示。LCD采用液晶顯示模塊,可顯示漢字及圖形。液晶顯示具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),正好適應(yīng)MP3播放器的需求。圖3-9為鍵盤控制電路,圖3-10為L(zhǎng)CD顯示電路。圖3-9鍵盤控制電路 圖3-10 LCD顯示電路系統(tǒng)整體電路圖如圖3-13所示:圖3-13 整體電路圖4 MP3播放器軟件設(shè)計(jì)及實(shí)現(xiàn)4.1 MP3播放器播放功能的設(shè)計(jì)MP3播放程序設(shè)計(jì)要與鍵盤配合起來使用。在主程序中,如果已

38、經(jīng)處于播放狀態(tài),則調(diào)用Play MP3程序播放歌曲,直至播放到最后一首。在Play MP3程序里面,MP3解碼器一旦開始工作以后,就會(huì)一直向CPU請(qǐng)求數(shù)據(jù),直至歌曲結(jié)束。如果用戶想切換歌曲,則可直接按暫停鍵,這樣此程序函數(shù)就會(huì)提前結(jié)束,進(jìn)入下一首歌曲的播放。其播放流程圖如圖4-1所示:產(chǎn)生數(shù)據(jù)請(qǐng)求中斷需要讀下一個(gè)扇區(qū)的數(shù)據(jù)當(dāng)數(shù)據(jù)已經(jīng)不足一扇區(qū)結(jié)束當(dāng)前歌曲,指向下一首歌曲讀出一個(gè)新的扇區(qū)繼續(xù)往解碼器中送數(shù)據(jù)是否按了暫停鍵等待再次按下暫停鍵否、否是是是是否單擊“選曲”按鈕是否否否否是向CPU請(qǐng)求數(shù)據(jù)圖4-1播放器播放過程流程圖當(dāng)產(chǎn)生數(shù)據(jù)請(qǐng)求時(shí),程序判斷是否產(chǎn)生請(qǐng)求中斷,當(dāng)產(chǎn)生了請(qǐng)求中斷時(shí),數(shù)據(jù)讀取

39、失敗。如果數(shù)據(jù)請(qǐng)求未產(chǎn)生中斷,重新載入數(shù)據(jù)。產(chǎn)生中斷后,程序讀取下一個(gè)扇區(qū)中的數(shù)據(jù),如果程序不需要再讀取下一扇區(qū)的數(shù)據(jù),則將數(shù)據(jù)送入解碼器中。當(dāng)讀取到的數(shù)據(jù)已經(jīng)不足一扇區(qū)時(shí),結(jié)束當(dāng)前所播放的歌曲,讀取下一首歌曲的數(shù)據(jù);如果所讀取的數(shù)據(jù)超過一扇區(qū),則將數(shù)據(jù)存入另一個(gè)扇區(qū),并讀取這個(gè)扇區(qū)的數(shù)據(jù)。將讀取后的數(shù)據(jù)送入解碼器中,解碼時(shí),通過鍵盤控制。當(dāng)鍵盤位于暫停狀態(tài)時(shí),解碼器暫時(shí)不工作,等待再次按下暫停鍵后繼續(xù)解碼。在播放過程中,如果需要選擇播放的歌曲時(shí),按下選曲按鈕則結(jié)束當(dāng)前播放的歌曲,進(jìn)入所選歌曲的播放過程。其主要程序代碼為:Void playMP3(unsigned char *SongName

40、)Int i=0,j=0; /First 1024 Byte MP3 Datam=ReadSector(SongName,Page_Buf) ;/從當(dāng)前歌曲中讀取512字節(jié) if(MP3STA1&MPFREQ) /解碼器數(shù)據(jù)請(qǐng)求中斷產(chǎn)生時(shí) For(i=0;i<1024;i+) /第一次要向解碼器緩存中置入1024字節(jié) if(j=512) /當(dāng)用完512字節(jié)時(shí) m=ReadSector(SongName,Page_Buf); /讀取當(dāng)前歌曲的下一個(gè)512字節(jié) j=0; MP3DAT=Page_Bufj+; /向MP3解碼器數(shù)據(jù)寄存器送入一個(gè)數(shù) while(!PlayState);

41、/如果是暫停狀態(tài)則等待 while(ChangeSong) DataRead=0;ChangeSong=0;return; /如果選曲時(shí),則重新播放當(dāng)前曲目 while(!(MP3STA1&MPBREQ); /等待中斷再次產(chǎn)生 /Other MP3 datawhile(1) while(MP3STA1&MPFREQ) 0解碼器數(shù)據(jù)請(qǐng)求中斷產(chǎn)生時(shí) if(j=512) /當(dāng)用完512字節(jié)時(shí) j=0; if(m<512) NowPlaying+;return; /如果上一次從歌曲中讀取的數(shù)據(jù) /不足512時(shí),則結(jié)束本歌曲播放m=ReadSector(SongName,Page_

42、Buf); /讀取當(dāng)前歌曲的下一個(gè)512字節(jié) MP3DAT=Page_Bufj+; /向MP3解碼器數(shù)據(jù)寄存器送入一個(gè)數(shù) while(!PlayState); /如果是暫停狀態(tài)則等待 while(ChangeSong) DataRead=0;ChangeSong=0;return; /如果選曲時(shí),則重新播放當(dāng)前曲目 while(!(MP3STA1&MPBREQ); /等待中斷再次產(chǎn)生 4.2 MP3功能按鈕設(shè)計(jì)當(dāng)執(zhí)行MP3程序的時(shí)候,需要通過按鍵操作來控制MP3歌曲的播放,當(dāng)鍵盤響應(yīng)流程圖如圖4-2所示。產(chǎn)生鍵盤中斷判斷哪個(gè)鍵被按下播放向前向后功能切換置播放/暫停狀態(tài)根據(jù)所處功能不同設(shè)

43、置不同寄存器的值切換功能清中斷標(biāo)志,等待下一次中斷圖4-2鍵盤相應(yīng)流程圖每個(gè)鍵對(duì)應(yīng)了一個(gè)鍵盤響應(yīng)函數(shù)。1) Func,功能切換。功能切換的作用是設(shè)置功能狀態(tài)。沒按下一次此鍵,則功能狀態(tài)計(jì)數(shù)器在13之間輪換。源代碼如下:void Func() if(CurrentFun<3) CurrentFun+;/在選曲/音量調(diào)節(jié)/音效調(diào)節(jié)三者之間切換 else if(CurrentFun=3) CurrentFun=1; 2) Next,向后。根據(jù)所處功能狀態(tài)的不同,按下此鍵時(shí),將進(jìn)行不同的操作,進(jìn)而可以實(shí)現(xiàn)不同的功能。當(dāng)處于“音量控制(VOLUME)”狀態(tài)時(shí),則改變音量寄存器的值,從而控制音樂音量

44、。當(dāng)處于“音效(EFFECTION)”狀態(tài)時(shí),則改變音效寄存器的值。而如果處于“選曲(SELECTSONG)”狀態(tài)時(shí),則切換到當(dāng)前MP3歌曲列表中的下一曲。源代碼如下:void Next() /按下*下一首/音量減小*鍵時(shí)的處理 switch(CurrentFun) /如果當(dāng)前處于音量調(diào)節(jié)功能 case VOLUME : if(MP3VOR>0x00) /當(dāng)前音量沒有達(dá)到最小時(shí) MP3VOR-=0x01; /右聲道音量增大一檔 MP3VOL-=0x01; /左聲道音量增大一檔 break; case EFFECTION : /如果出于音效調(diào)節(jié)功能 If(MP3BAS>7) /降低重

45、音效果 MP3BAS-=7;MP3MED=0x0f; MP3TRE+=7; break; case SELECTSONG : /如果處于MP3選曲功能 if(NowPlaying=(NumofSong-1) NowPlayiing=0; /如果已經(jīng)處于最后一首了,則指向第一首 else NowPlaying+; /否則,指向下一首 ChangeSong=1; /置選曲標(biāo)志位 break; default:break; 3) Previous,向前。此鍵的功能與Next正好相對(duì)應(yīng)。源代碼如下:void previous() /按下“上一首/音量增大”鍵時(shí)的處理 switch(CurrentFun

46、) case VOLUME : /如果當(dāng)前處于音量調(diào)節(jié)功能 if(MP3VOR<0x1f) /當(dāng)前音量沒有達(dá)到最大時(shí) MP3VOR+=0x01; /右聲道音量增大一檔 MP3VOL+=0x01; /左聲道音量增大一檔 break; case EFFECTION: /如果處于音效調(diào)節(jié)功能 If(MP3BAS<0x1d) /增加重音效果 MP3BAS+=7;MP3MED=0x0f; MP3TRE-=7; break; case SELECTSONG : /如果處于MP3選曲功能 if(NowPlaying>0)NowPlaying-; /如果當(dāng)前播放歌曲不為第一首,則指向上一首

47、else NowPlaying=NumofSong-1; /如果當(dāng)前已經(jīng)到達(dá)第一首,則指向最后一首 ChangwSong=1; /置選曲標(biāo)志位 break; default:break; 4) Play Pause,播放/暫停。每當(dāng)按下此鍵時(shí),改變一下播放狀態(tài),配合在MP3播放函數(shù)中對(duì)此狀態(tài)的判斷,可以實(shí)現(xiàn)MP3播放過程中的暫停。源代碼如下:void PlayPause() PlayState=!PlayState; /按一下播放鍵時(shí),改變播放狀態(tài) 4.3 USB通信功能程序設(shè)計(jì)USB通信功能模塊用于對(duì)Flash存儲(chǔ)器內(nèi)的文件進(jìn)行管理,實(shí)現(xiàn)MP3文件的下載,由于AT89C51SND1C沒有外部

48、中斷引腳,USB中斷沒有中斷向量地址入口,USB驅(qū)動(dòng)程序采用中斷查詢工作方式。其流程圖如圖4-3所示。在USB控制器使用前,首先對(duì)其進(jìn)行初始化,然后在主程序中循環(huán)讀取USB斷電中斷寄存器,當(dāng)查詢到有中斷產(chǎn)生時(shí)則進(jìn)入到相應(yīng)的中斷處理程序,開始設(shè)備配置和數(shù)據(jù)傳輸。程序代碼如下:#include <REG52.H> /51單片機(jī)頭文件 #include "CH375INC.H" / CH375頭文件unsigned char CH375_RD_DAT_PORT( void ) return( CH375_DAT_PORT ); void CH375_Init( ) switch ( InterruptStatus ) case USB_INT_BUS_RESET1: /USB總線復(fù)位 break; case USB_INT_BUS_RESET2: /USB總線復(fù)位 break; case USB_INT_BUS_RESET3: /USB總線復(fù)位 break; case USB_INT_BUS_RESET4: /USB總線復(fù)位 break; case USB_INT_EP0_SETUP: /端點(diǎn)0 的接收器接收到數(shù)據(jù),SETUP 事務(wù)成功,內(nèi)部固件模式時(shí)不需要處理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論