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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何設(shè)計基于ARM的多通道專業(yè)MP3播放器?

          如何設(shè)計基于ARM的多通道專業(yè)MP3播放器?

          作者: 時間:2018-07-25 來源:網(wǎng)絡(luò) 收藏

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

          if(STA013_SendCommand(LHP_VOL_REG,0,0x00)) //左聲道音量

          STA013_PrintError();

          if(STA013_SendCommand(RHP_VOL_REG,0,0x00)) //右聲道音量

          STA013_PrintError();

          if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //數(shù)據(jù)傳送激活

          STA013_PrintError();

          }

          4.3播放程序的設(shè)計

          作為本系統(tǒng)的一個主要創(chuàng)新點,在部分設(shè)計合理且高效的播放程序代碼很重要,在這里采用的是將待解碼的文件先由USB設(shè)備復(fù)制到內(nèi)存的緩沖區(qū),再由緩沖區(qū)發(fā)送給解碼器的方法。播放時,程序會根據(jù)每個通道的歌曲信息將文件流從USB設(shè)備復(fù)制到相應(yīng)的緩沖區(qū)中。其主要實現(xiàn)代碼如下:

          for(i=0;i4;i++){

          if((dbuf[i]=malloc(BUF_LEN))==NULL){

          printf(Allocation %d Error n, i);

          exit(1);

          }

          }

          4.4 操作界面的實現(xiàn)

          完整的播放器設(shè)備需要有一個簡潔的操作界面。本系統(tǒng)的操作界面選用MiniGUI軟件進(jìn)行編寫,通過對MiniGUI運(yùn)行模式的選擇、MiniGUI的移植[5]以及界面程序的編寫,最終的操作界面如圖4所示。整個操作界面簡潔明了,系統(tǒng)在開機(jī)后提供了當(dāng)前時間,以及播放、設(shè)置和復(fù)位按鍵,可以直接通過播放鍵來實現(xiàn)播放功能,通過設(shè)置鍵進(jìn)行歌曲目錄的編排。

          圖4 播放器主界面

          5 結(jié)束語

          MP3播放器與傳統(tǒng)的MP3播放器相比,具有許多優(yōu)勢,可以滿足大型公共場所對背景音樂更高性能的需求。多通道MP3播放器可以實現(xiàn)多個音頻輸出通道同步播放,并可以通過USB接口外掛存儲設(shè)備實現(xiàn)歌曲的大容量存儲。此外,系統(tǒng)還提供了串口、以太網(wǎng)等一系列接口,方便與外部進(jìn)行。


          上一頁 1 2 下一頁

          評論


          相關(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); })();