基于AT89C51SND1C單片機(jī)的MP3播放器設(shè)計(jì)
摘要:首先分析了便攜式MP3播放器的工作原理及其系統(tǒng)構(gòu)成,接著介紹了一種基于51單片機(jī)的MP3播放器設(shè)計(jì)方案。采用 AT89C51SND1C單片機(jī),其片內(nèi)集成了MP3解碼器,使用K9F1208閃存作為外存儲(chǔ)器,放音電路采用CS4330,音樂文件通過(guò)播放器上的 USB接口從PC機(jī)上直接下載。該方案設(shè)計(jì)簡(jiǎn)單,性價(jià)比高、低功耗、易擴(kuò)展。
本文引用地址:http://www.ex-cimer.com/article/201610/306876.htm引言
MP3作為高質(zhì)量音樂壓縮標(biāo)準(zhǔn),正在進(jìn)入越來(lái)越多人的生活,給數(shù)字音頻工業(yè)帶來(lái)了強(qiáng)勁的沖擊。MP3使用此技術(shù)可以獲得較大的音樂壓縮比,還可以得到較高的音樂回放質(zhì)量,比如將CD格式的音樂數(shù)據(jù)壓縮成MP3格式,音效相差無(wú)幾,文件大小至少可以壓縮12倍。
正是由于MP3音樂的較小數(shù)據(jù)量和近似完美的播放效果,使得以MP3為后綴的音樂文件在網(wǎng)絡(luò)上的傳輸?shù)靡詫?shí)現(xiàn)。當(dāng)前MP3播放器正朝著功能強(qiáng)大、外觀豐富、價(jià)格便宜的方向發(fā)展,這里提出一種基于AT89C51SND1C單片機(jī)的MP3播放器設(shè)計(jì)方案。
1 MP3編碼簡(jiǎn)介
MP3是MPEG Layer III(第3層音頻編碼標(biāo)準(zhǔn))的縮寫,圖1為MP3編碼器內(nèi)部原理框圖。它是一種超級(jí)聲音文件的壓縮方法,其數(shù)字壓縮速率為每通道128 Kb/s。MPEG由音頻和視頻兩部分組成,可以分別進(jìn)行壓縮。MPEG在音頻上壓縮分為MPEG Layerl、MPEG Layer2和MPEG Layer3,其中MP3具有最高的壓縮比12:1。在一般沒有壓縮數(shù)據(jù)的情況下,音頻被數(shù)字化時(shí),采樣頻率必須為實(shí)際聲音最高頻率的2倍以上。
目前最好的CD音質(zhì)中,聲音最高頻率是20 kHz,采樣頻率定為44.1 kHz,16位量化,要獲得CD音質(zhì)立體聲,每秒鐘的數(shù)據(jù)量將超過(guò)1.4 Mb;而采用MP3壓縮,數(shù)據(jù)量可以縮小到1/12,音質(zhì)卻沒有損失。如果再進(jìn)一步壓縮數(shù)據(jù)量到1/24或者更多,依然可以維持相當(dāng)好的音質(zhì),比起通過(guò)降低采樣頻率、縮短采樣深度的方法要好得多。
2 MP3播放器設(shè)計(jì)
對(duì)于便攜式MP3系統(tǒng),主要考慮的是其體積小巧、低功耗、高容量、低價(jià)格。當(dāng)前流行的MP3播放器主要包括:?jiǎn)纹瑱C(jī)控制系統(tǒng)、大容量移動(dòng)存儲(chǔ)設(shè)備、MP3 解碼器、D/A轉(zhuǎn)換芯片、音頻放大電路、USB接口、LCD顯示和鍵盤電路等,其基本工作原理如圖2所示。通過(guò)USB接口把Flash存儲(chǔ)器上的MP3、 WMA等格式的數(shù)字音樂文件送到單片機(jī)內(nèi)部集成的解碼芯片進(jìn)行解碼,這些音樂文件經(jīng)解碼后成為數(shù)字信號(hào),然后音頻DAC通過(guò)D/A轉(zhuǎn)換將數(shù)字音頻信號(hào)轉(zhuǎn)換為模擬音頻信號(hào),再通過(guò)功率放大器進(jìn)行音頻放大,最后通過(guò)耳機(jī)輸出音樂。
本系統(tǒng)主要實(shí)現(xiàn)一個(gè)MP3播放器功能,由于涉及文件傳輸和存儲(chǔ)問題,所以附帶需要實(shí)現(xiàn)USB存儲(chǔ)器功能。整個(gè)系統(tǒng)由AT89C51SND1C(MCU)、K9F2808U0A(Flash芯片)、電源部分、音頻部分、串行通信部分和人機(jī)接口部分組成。
MCU部分:控制整個(gè)系統(tǒng),提供USB控制和MP3解碼功能。FLASH芯片:存放整個(gè)系統(tǒng)文件。電源部分:提供系統(tǒng)工作需要的電源,包括一個(gè)升壓和一個(gè)降壓部分。音頻部分:把數(shù)據(jù)流轉(zhuǎn)換為聲音信號(hào)。人機(jī)接口部分:包括按鍵和LED指示等。USB接口部分:通過(guò)PC的USB接口進(jìn)行MP3文件的下載。
2.1 硬件設(shè)計(jì)
2.1.1 控制器部分
AT89C51SND1C是Atmel公司專門針對(duì)MP3設(shè)計(jì)需求研發(fā)的一款多媒體8位微處理器,使用通用的C51內(nèi)核,集成了CPU和硬件解碼器,為 MP3設(shè)計(jì)提供了一套方便的解決方案。該芯片的高度集成大大降低了系統(tǒng)的耗電和發(fā)熱,提高了系統(tǒng)的穩(wěn)定性和速度,抗干擾能力也顯著增強(qiáng)。需要注意的是,由于在系統(tǒng)中有MP3和USB傳輸?shù)雀哳l信號(hào),為了避免噪聲對(duì)系統(tǒng)的影響,尤其是對(duì)音頻輸出信號(hào)的影響,所以在AT89C51SND1C的正負(fù)電源間需要加上一個(gè)RC濾波電路以消除電路中的噪聲。對(duì)于AVDD和UVDD的兩個(gè)模擬電壓和數(shù)字電源而言,兩者需要在數(shù)字地和模擬地處單點(diǎn)通過(guò)一個(gè)磁珠相連,以免數(shù)字電源和模擬電源之間相互影響。
2.1. 2 音頻部分
音頻是整個(gè)系統(tǒng)中最為重要的一個(gè)部分,在把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)的過(guò)程中容易產(chǎn)生噪聲,這個(gè)關(guān)系到MP3播放器聲音效果的好壞,本系統(tǒng)選擇的是CS4330芯片,CS43 30能兼容48 KHz、44.1 KHz和32 KHz的音頻流。聲音數(shù)據(jù)通過(guò)串行輸入引腳SDATA輸入,左右輸入時(shí)鐘LRCK決定了左右聲道,而在串行輸入時(shí)鐘SCLK的驅(qū)動(dòng)下數(shù)據(jù)被送入CS4330的數(shù)據(jù)緩存中,而主時(shí)鐘決定了數(shù)據(jù)濾波器的使用。
2.1.3 存儲(chǔ)部分
采用三星公司的NAND Flash K9F1208作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)器,用來(lái)存儲(chǔ)本系統(tǒng)所需播放的音樂文件。主芯片AT89C51SND1C和Flash存儲(chǔ)器間的通信與讀取一般的存儲(chǔ)器 RAM、EEPROM等基本一致,不同的就是多了CLE和ALE這2個(gè)引腳,這是由Flash本身特點(diǎn)所決定的。主芯片通過(guò)讀取R/B這個(gè)引腳來(lái)判斷 Flash讀寫是否完成,如果正在讀寫,那么這個(gè)引腳為低電平,表示正忙;如果讀寫完成,該引腳電平變高,處于READY(準(zhǔn)備)狀態(tài),等待下次操作。 ALE和CLE這兩個(gè)信號(hào)均為上升沿有效,WP引腳為寫保護(hù),用來(lái)在電源由于切換等造成不穩(wěn)定的情況下防止數(shù)據(jù)丟失。
2.1.4 人機(jī)接口部分
人機(jī)接口部分主要提供一個(gè)人和系統(tǒng)進(jìn)行信息交換的接口,包括鍵盤輸入、LED顯示以及串行口3個(gè)部分。鍵盤輸入提供給用戶選擇功能的能力、LED顯示系統(tǒng)現(xiàn)在的工作狀態(tài),串行口可以方便開發(fā)過(guò)程中的調(diào)試,通過(guò)串口調(diào)試助手等工具,把系統(tǒng)運(yùn)行的情況反饋到PC機(jī)的屏幕。
2. 1.5 USB接口部分
一般通過(guò)PC的USB接口進(jìn)行MP3文件的下載,傳輸速率為12 Mbps。由于Atmel公司生產(chǎn)的AT89C51SND1C芯片僅支持USB1.1技術(shù)規(guī)范,因此接口速度稍慢。但對(duì)于MP3播放來(lái)說(shuō),可以滿足需要。
2. 2 軟件設(shè)計(jì)
MP3播放系統(tǒng)的軟件設(shè)計(jì),按照模塊可以劃分為以下幾個(gè)部分:
◆Flash存儲(chǔ)部分:這是系統(tǒng)中的文件存儲(chǔ)系統(tǒng),按照FAT文件格式對(duì)Flash芯片進(jìn)行劃分,對(duì)芯片的操作必須按照FAT格式進(jìn)行。
◆USB通信驅(qū)動(dòng):USB驅(qū)動(dòng)通信主要包括如何按照Windows 7中對(duì)USB移動(dòng)硬盤的描述編寫設(shè)備的固件程序,以便操作系統(tǒng)對(duì)MP3系統(tǒng)的操作。
◆MP3解碼控制:控制系統(tǒng)中間的MP3解碼器把從Flash中取出來(lái)的MP3壓縮數(shù)據(jù)流解碼成音頻數(shù)據(jù)流,提供給音頻解碼接口。
◆音頻解碼接口:和外圍的音頻驅(qū)動(dòng)芯片接口,對(duì)音頻驅(qū)動(dòng)芯片進(jìn)行配置以及控制,把解碼后的數(shù)字信號(hào)轉(zhuǎn)化為模擬聲音并且驅(qū)動(dòng)耳機(jī)。
◆其他部分:由提供人機(jī)接口的鍵盤掃描驅(qū)動(dòng)、LED顯示驅(qū)動(dòng)、數(shù)碼管驅(qū)動(dòng)部分組成。
系統(tǒng)軟件結(jié)構(gòu)框圖如圖3所示。
2.3 MP3播放程序結(jié)構(gòu)
在主程序時(shí),如果處于播放狀態(tài),則調(diào)用PlayMP3函數(shù)播放歌曲,直至播放到最后一首,在PlayMP3里面,MP3解碼器一旦開始工作以后,就會(huì)一直向CPU請(qǐng)求數(shù)據(jù),直至歌曲結(jié)束。程序進(jìn)入此函數(shù)以后,只有改變當(dāng)前歌曲的鍵盤操作才能使此函數(shù)提前結(jié)束,進(jìn)入下一首歌曲的播放。
MP3播放函數(shù)的工作分兩部分進(jìn)行:第一部分是播放一首新的MP3歌曲時(shí),要做一些初始化工作;第二部分則一直在等待中斷發(fā)生。第二部分與鍵盤結(jié)合,以實(shí)現(xiàn)MP3播放過(guò)程中的用戶操作。MP3播放程序結(jié)構(gòu)框圖如圖4所示。
2.4 人機(jī)接口程序結(jié)構(gòu)
當(dāng)執(zhí)行MP3程序的時(shí)候,需要通過(guò)按鍵操作來(lái)控制MP3歌曲的播放,每個(gè)鍵對(duì)應(yīng)一個(gè)鍵盤響應(yīng)函數(shù):
①Func:功能切換。
②Next:向后。
③Previous:向前。
④PlayPause:播放/暫停。
人機(jī)接口流程圖如圖5所示。
結(jié)語(yǔ)
本文提出基于AT89C51SND1C單片機(jī)的MP3播放器的設(shè)計(jì)方案,MP3為取得較好的壓縮效果而采用相對(duì)復(fù)雜的技術(shù),寬帶音頻信號(hào)的取樣率也較高 (一般為44.1 KHz以上),所以MP3編解碼的運(yùn)算量和數(shù)據(jù)量都相當(dāng)龐大。MPEG LayerIII解碼算法在AT89C51SND1C上驗(yàn)證通過(guò)并獲得較好的效果,通過(guò)優(yōu)化后可流暢播放音樂。此MP3播放器系統(tǒng)既有播放歌曲的功能又有 U盤功能。兩種功能的轉(zhuǎn)換用USB接口檢測(cè)電路來(lái)控制:當(dāng)MP3播放器上的USB設(shè)備插入PC機(jī)上的USB接口進(jìn)行文件下載時(shí),執(zhí)行U盤功能;否則程序執(zhí)行MP3功能。
評(píng)論