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