<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于單片機的FLAC高保真數(shù)字音頻播放器設(shè)計

          基于單片機的FLAC高保真數(shù)字音頻播放器設(shè)計

          作者: 時間:2014-06-03 來源:網(wǎng)絡(luò) 收藏

          B編解碼芯片

          本文引用地址:http://www.ex-cimer.com/article/247721.htm

          3.3系統(tǒng)軟件架構(gòu)

          系統(tǒng)組件可分解為如下圖所示的模塊:

           

           

          圖2 系統(tǒng)模塊圖

          系統(tǒng)層模塊

          文件系統(tǒng):由于要讀取SD卡、U盤上的文件,所以要在底層實現(xiàn)一個文件系統(tǒng),如fat。

          網(wǎng)絡(luò)協(xié)議棧:播放器可以接收網(wǎng)絡(luò)流媒體,這需要網(wǎng)絡(luò)協(xié)議棧的支持,如LwIP。

          設(shè)備驅(qū)動:由于程序中會使用LCD、按鍵、SD card讀卡器、USB接口、網(wǎng)絡(luò)接口、編解碼芯片,需要為它們實現(xiàn)驅(qū)動。

          應(yīng)用層模塊

          音頻獲取:

          從網(wǎng)絡(luò)流或者SD卡、U盤中讀取音頻文件。

          音頻解碼:

          解碼音頻數(shù)據(jù),并進行播放。

          播放器UI:

          用于控制播放的過程,例如開始播放、停止播放,以及響應(yīng)用戶的其它操作請求。

          3.4 系統(tǒng)軟件流程

           

           

          圖3 程序運行流程圖

          系統(tǒng)在啟動之后,進行相關(guān)的初始化工作。初始化結(jié)束、進入了開始界面之后,若用戶按下按鈕播放音樂,那么就選擇播放本地音頻或者網(wǎng)絡(luò)音頻:若選擇本地音頻文件,則讀取SD卡、U盤、移動硬盤中的相應(yīng)文件并進行播放;若選擇網(wǎng)絡(luò)音頻文件,則接收網(wǎng)絡(luò)音頻數(shù)據(jù)流并進行播放。播放完畢后,重新回到開始界面。

          3.5 系統(tǒng)預(yù)計實現(xiàn)結(jié)果

          該系統(tǒng)能夠播放SD卡、U盤和移動硬盤上存儲的FLAC文件,也可以播放網(wǎng)絡(luò)流媒體;由按鍵來控制播放器,在LCD上顯示音頻信息。此外,爭取實現(xiàn)對APE格式文件的支持。

          單片機相關(guān)文章:單片機教程


          單片機相關(guān)文章:單片機視頻教程


          單片機相關(guān)文章:單片機工作原理


          存儲器相關(guān)文章:存儲器原理



          上一頁 1 2 下一頁

          關(guān)鍵詞: AVR ATMEL

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();