徐陽(長江大學(xué)工程技術(shù)學(xué)院信息系,湖北 荊州 434023)
起初,MP3音樂文件只能由電腦來播放,隨著互聯(lián)網(wǎng)的發(fā)展,促進(jìn)了MP3音樂播放器的產(chǎn)生。隨著人們對MP3產(chǎn)品需求層次的進(jìn)一步提高,MP3音樂播放器發(fā)生了一系列變化,其更加小巧精致,更人機(jī)化和情趣化,個性區(qū)分也越來越強(qiáng),應(yīng)用場合也越來越廣,其不僅具有音頻播放功能,同時還具有嵌入式信息處理功能,通常被應(yīng)用于汽車導(dǎo)航、移動電話、個人數(shù)字助理(Personal Digital Assistant,PDA)等。為此,筆者提出了一種基于AT89C51SND1C單片機(jī)的MP3音樂播放器設(shè)計方案?長江大學(xué)工程技術(shù)學(xué)院院級教學(xué)研究項目(JY201413)。。
MP3的全稱為“MPEG1Layer-3”音頻文件,即 MPEG音頻文件第3層。MPEG音頻文件是MPEG1標(biāo)準(zhǔn)中的聲音部分,根據(jù)壓縮質(zhì)量和編碼復(fù)雜程度劃分為3層,分別對應(yīng)于MP1、MP2和MP3這3種聲音文件。音頻編碼層次越高,壓縮率也越高,MP1和MP2的壓縮率分別為4∶1和6∶1,而MP3的壓縮率則高達(dá)12∶1。1min CD音質(zhì)的音樂,未經(jīng)壓縮需要10MB左右的存儲空間,而經(jīng)過MP3編碼壓縮后只有1MB左右。不過MP3對音頻信號采用的是有損壓縮方式,為了降低聲音失真度,MP3采取了“感官編碼技術(shù)”,即編碼時先對音頻文件進(jìn)行頻譜分析,然后通過濾波器濾掉噪音,接著通過量化方式將剩下的每一位數(shù)據(jù)打散排列,最后形成具有較高壓縮比的 MP3文件,并使壓縮后的文件在回放時能夠達(dá)到接近原音源的聲音效果[1]。
MP3音樂播放器硬件電路圖如圖1所示。整個系統(tǒng)由AT89C51SND1C(單片機(jī))、K9F2808U0A(FLASH存儲器)、電源部分、音頻部分(LM4880)、D/A轉(zhuǎn)換部分(CS4330)、USB接口部分、鍵盤和顯示部分組成。MP3播放器通過USB接口把FLASH存儲器上的MP3或者WMA等格式的數(shù)字音樂文件送到單片機(jī)內(nèi)部集成的解碼單元進(jìn)行解碼,這些音樂文件經(jīng)解碼后成為數(shù)字信號,然后DA轉(zhuǎn)換器CS4330通過D/A轉(zhuǎn)換將數(shù)字音頻信號轉(zhuǎn)化為模擬音頻信號,再通過功率放大器LM4880進(jìn)行音頻放大,最后通過耳機(jī)輸出音樂。整個系統(tǒng)采用3V電源供電,系統(tǒng)電源可以取自USB接口,也可以來自干電池,所以系統(tǒng)電源由2部分組成:一部分通過降壓芯片AS1117提供從USB接口的5V到3V的DC-DC降壓轉(zhuǎn)換,另一部分通過升壓芯片MAX856提供從1.5V干電池到3V的DC-DC升壓轉(zhuǎn)換[2]。
AT89C51SND1C是Atmel公司專門針對MP3設(shè)計需求研發(fā)的一款多媒體8位微處理器,它具有C51內(nèi)核,其主要特點是其內(nèi)部嵌入一個MP3硬件解碼器,支持48、44.1、32、24、22.05、16kHz采樣頻率,并且具有左右聲道獨立的音量控制和重低音、中音、高音均衡控制功能。另外,AT89C51SND1C內(nèi)部有一個USB Rev1.1控制器,可以完成USB接口的數(shù)據(jù)通信。為了避免噪聲對音頻輸出信號的影響,在AT89C51SND1C的正負(fù)電源間需要加上一個RC濾波電路以消除電路中的噪聲,而且對于AVDD和UVDD的2個模擬電壓和數(shù)字電源而言,兩者需要在數(shù)字地和模擬地處單點通過一個磁珠相連,以免數(shù)字電源和模擬電源之間的影響[3]。
圖1 MP3音樂播放器硬件電路圖
電源電路部分包括升壓芯片MAX856和降壓芯片AS1117,由于AT89C51SND1C內(nèi)部CPU的工作電壓要求為3.3V,因此需要為MP3音樂播放器系統(tǒng)提供合適的工作電壓,當(dāng)電路由1.5V工作電壓的5號電池供電時,通過升壓芯片MAX856可以為系統(tǒng)提供3.3V穩(wěn)定的電壓;當(dāng)電路由USB供電時,插入USB電纜,電路獲得5V電壓,再通過降壓芯片AS1117后,可以將5V電壓降為3.3V供系統(tǒng)使用。
采用三星公司的Nand Flash K9F2080作為系統(tǒng)的數(shù)據(jù)存儲器,用來存儲系統(tǒng)所需播放的音樂文件。主芯片AT89C51SND1C和Flash存儲器間的通信與讀取一般的存儲器RAM、EEPROM等基本上是一致的,不同的是多了CLE和ALE這2個引腳,這是由Flash本身的特點所決定的。ALE和CLE的信號均為上升沿有效。WP引腳為寫保護(hù),用來保護(hù)當(dāng)電源由于切換等造成不穩(wěn)定的情況下丟失數(shù)據(jù)的情況。
音頻部分是整個系統(tǒng)中最為重要的一部分,在數(shù)字信號轉(zhuǎn)化為模擬信號的過程中,其容易產(chǎn)生噪聲,這關(guān)系到MP3播放器聲音效果的好壞,為此選擇CS4330芯片,該芯片能兼容48、44.1和32kHz的音頻流。聲音數(shù)據(jù)通過串行輸入引腳SDATA輸入。左右輸入時鐘LRCK決定了左右聲道,在串行輸入時鐘SCLK的驅(qū)動下數(shù)據(jù)被送入CS4330的數(shù)據(jù)緩存中,而主時鐘決定了數(shù)據(jù)濾波器的使用。
USB接口部分一般通過PC的USB接口進(jìn)行MP3文件的下載,傳輸速率為12Mbps。由于Atmel公司生產(chǎn)的AT89C51SND1C芯片僅支持USB1.1技術(shù)規(guī)范,因而接口速度稍慢。但對于MP3播放來說,已能夠滿足需要。
人機(jī)接口部分主要提供一個人和系統(tǒng)進(jìn)行信息交換的接口,包括鍵盤輸入、LED顯示2個部分。鍵盤輸入提供給用戶選擇功能的能力,包括向前、向后、播放、功能切換4種功能。LED顯示播放器現(xiàn)在的工作狀態(tài),其中指示燈1和指示燈2為供電指示燈,當(dāng)5~3V供電正常時,指示燈1亮;當(dāng)1.5~3V供電正常時,指示燈2亮。指示燈3為U盤指示燈,當(dāng)執(zhí)行U盤功能時,無數(shù)據(jù)傳輸時燈亮,有數(shù)據(jù)傳輸時燈閃爍。指示燈4為MP3指示燈,當(dāng)執(zhí)行MP3功能時燈亮、播放時該燈閃爍。
MP3音樂播放器的軟件設(shè)計按照模塊,可以劃分為以下幾個部分:①MP3解碼控制部分,該部分控制系統(tǒng)中間的MP3解碼器把從Flash中取出來的MP3壓縮數(shù)據(jù)流解碼成音頻數(shù)據(jù)流,提供給音頻解碼接口;②音頻處理部分,該部分主要實現(xiàn)對音頻驅(qū)動芯片進(jìn)行配置以及控制,把解碼后的數(shù)字信號轉(zhuǎn)化為模擬聲音并且驅(qū)動耳機(jī);③FLASH存儲與USB通信部分,該部分按照FAT文件格式對Flash芯片進(jìn)行劃分,對芯片的操作必須按照FAT格式進(jìn)行;USB通信包括如何按照Windows 7中對USB移動硬盤的描述編寫設(shè)備的固件程序,以便操作系統(tǒng)的運行;④人機(jī)接口部分,該部分由提供人機(jī)接口的鍵盤掃描驅(qū)動、LED顯示驅(qū)動和數(shù)碼管驅(qū)動等組成。
MCS-51內(nèi)核和MP3的解碼器接口是通過11個特殊功能寄存器來實現(xiàn)的,分別是MP3控制寄存器MP3CON、MP3解碼狀態(tài)寄存器MP3STA、MP3狀態(tài)寄存器MP3STA1、MP3數(shù)據(jù)寄存器MP3DAT、MP3附加數(shù)據(jù)寄存器MP3ANC、MP3左聲道控制寄存器MP3VOL、MP3右聲道控制寄存器MP3VOR、MP3重音控制寄存器MP3BAS、MP3中音控制寄存器MP3MED、MP3高音控制寄存器 MP3TRE、MP3時鐘寄存器MP3CLK。
對數(shù)據(jù)幀的處理過程可能產(chǎn)生層錯誤(layer error)、同步錯誤(sychronization error)和CRC錯誤(CRC error),每個錯誤將引起對應(yīng)的中斷,硬件將根據(jù)中斷把相應(yīng)寄存器中的數(shù)據(jù)位置位[4]。在 AT89C51SND1C中斷過后,根據(jù)中斷的不同,硬件將進(jìn)入中斷并且將相應(yīng)數(shù)據(jù)位置位,這些標(biāo)志位可向MCS-51內(nèi)核申請中斷,也可供內(nèi)核查詢。MP3解碼控制程序流程圖如圖2所示。
圖2 MP3解碼控制程序流程圖
音頻部分是MP3音樂播放器的一個重要的組成部分,由于存在片上鎖相環(huán)結(jié)構(gòu),AT89C51SND1C支持PCM和I2S2種音頻結(jié)構(gòu),音頻數(shù)據(jù)流可以來自MP3解碼輸出,也可以來自MCU直接音頻輸出,整個音頻部分和MCS51內(nèi)核也通過5個寄存器來進(jìn)行數(shù)據(jù)和控制信息的交流,這5個寄存器分別是音頻接口控制寄存器0(AUDCON0)、音頻接口控制寄存器1(AUDCON1)、音頻接口控制寄存器2(AUDSTA)、音頻接口數(shù)據(jù)寄存器(AUDDAT)、音頻時鐘分頻器(AUDCLK)。音頻處理程序流程圖如圖3所示。
圖3 音頻處理程序流程圖
在AT89C51SND1C單片機(jī)片內(nèi)集成了一個USB控制器,支持USB1.1全速引擎,通過它可以方便地從PC機(jī)下載音樂文件到FLASH存儲器中。FLASH存儲功能是靠FLASH EEPROM芯片K9F2808實現(xiàn)的。對K9F2808的讀操作流程圖如圖4所示。首先向K9F2808的命令端口寫1個字節(jié)的命令字00h,接著向K9F2808的地址端口寫入FLASH內(nèi)部地址。由于K9F2808的存儲容量是16MB,內(nèi)部地址為24字節(jié),因此要分3個字節(jié)寫入,寫入時第1個字節(jié)為A0-A7;第2個字節(jié)為A9-A16;第3個字節(jié)最高位為0,低7位為A17-A23。地址寫入后就可以從K9F2808的數(shù)據(jù)端口讀出Flash內(nèi)部地址為A23-A0的存儲單元對應(yīng)的數(shù)據(jù)了。K9F2808的空閑區(qū)域可用來存放校驗信息,如果希望使用校驗信息來保證數(shù)據(jù)存放的可靠性,可以使用這一部分存儲區(qū)域。
人機(jī)接口也稱為輸入/輸出接口(I/O接口),是單片機(jī)和人機(jī)交互設(shè)備之間的交接界面,通過接口可以實現(xiàn)單片機(jī)與外設(shè)之間的信息交換。MP3音樂播放器中人機(jī)接口包括LED顯示、鍵盤輸入2個部分,LED主要用來指示MP3播放器當(dāng)前的工作狀態(tài),包括電源供電、USB傳輸是否正常等部分;鍵盤輸入提供給用戶選擇功能的能力,當(dāng)執(zhí)行MP3程序的時候,通過按鍵操作來控制MP3歌曲的播放,每個鍵對應(yīng)一個鍵盤響應(yīng)函數(shù),這些函數(shù)分別是Func(功能切換)、Next(向后)、Previous(向前)、PlayPause(播放/暫停)。人機(jī)接口程序流程圖如圖5所示。
圖4 K9F2808的讀操作流程圖
圖5 人機(jī)接口程序流程圖
為取得較好的音樂播放效果,采用基于AT89C51SND1C單片機(jī)設(shè)計MP3音樂播放器。由于寬帶音頻信號的取樣率也較高(一般為44.1kHz以上),所以MP3編解碼的運算量和數(shù)據(jù)量都相當(dāng)龐大。設(shè)計的MP3音樂播放器系統(tǒng)既具有播放歌曲的功能又具有U盤功能,2種功能的轉(zhuǎn)換用USB接口檢測電路來控制。當(dāng)MP3播放器上的USB設(shè)備插入PC機(jī)上的USB接口進(jìn)行文件下載時執(zhí)行U盤功能,否則程序運行執(zhí)行MP3功能。此外,MPEG LayerⅢ解碼算法在AT89C51SND1C上驗證通過并獲得較好的效果,通過優(yōu)化后可流暢播放音樂。
[1]徐愛鈞.單片機(jī)原理實用教程——基于Proteus虛擬仿真[M].北京:電子工業(yè)出版社,2011.
[2]博創(chuàng)科技.MP3播放器與U盤設(shè)計[M].北京:清華大學(xué)出版社,2004.
[3]熊開勝,董兆鑫.基于DSP技術(shù)的MP3播放器的硬件設(shè)計[J].現(xiàn)代電子技術(shù),2007,30(12):164~166.
[4]黃勇堅,王亞麗.智能MP3播放控制系統(tǒng)的設(shè)計[J].電子技術(shù),2006(10):36~38.