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