新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AVR單片機(jī)的U盤MP3設(shè)計(jì)與實(shí)現(xiàn)

基于AVR單片機(jī)的U盤MP3設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2014-09-11 來源:網(wǎng)絡(luò) 收藏

  4.3 VS1003的讀寫控制

本文引用地址:http://m.butianyuan.cn/article/262816.htm

  VS1003的寄存器用下列順序讀出,如圖二。首先將XCS片選拉低以選擇芯片,再通過SI線發(fā)送8位的讀操作碼(0x03)和8位的地址。在地址被VS1003芯片讀入后,SI上的數(shù)據(jù)將被忽略。相應(yīng)地址的16位數(shù)據(jù)將從SO線移出。當(dāng)數(shù)據(jù)全被移出后XCS需拉高。

  

MP3

 

  VS1003的寄存器須按以下的順序?qū)懭?,如圖三。首先將XCS片選拉低,再通過SI線發(fā)送8位的讀操作碼(0x02)和8位的地址。隨即發(fā)送16位的數(shù)據(jù)字。當(dāng)最后一位被移入且最后的時(shí)鐘已發(fā)送,必須將XCS拉高以完成寫操作。

  4.4 MP3的播放

  當(dāng)執(zhí)行音樂播放程序時(shí),ATmega64芯片首先從中預(yù)取標(biāo)簽信息,經(jīng)過分析,由Unicode到GBK編碼的轉(zhuǎn)換,再取字模,最終在LCD上顯示;之后開始取音樂文件的數(shù)據(jù),送到VS1003芯片,VS1003開始解碼并在音頻接口發(fā)出音頻信號(hào)。當(dāng)按下暫停鍵時(shí),暫停取數(shù)據(jù),上一曲、下一曲時(shí)跳出取數(shù)據(jù)循環(huán)。

  

MP3

 

  4.5 其他軟件設(shè)計(jì)

  1.音樂標(biāo)簽的軟件設(shè)計(jì)。本系統(tǒng)可以讀取的音樂的標(biāo)簽有ID3V1、ID3V2,當(dāng)要區(qū)分這兩個(gè)標(biāo)簽時(shí)可以用程序讀取音樂文件的開頭和結(jié)尾,利用其標(biāo)志符“ID3”、“TAG”來區(qū)分其具有哪一個(gè)標(biāo)簽。但是標(biāo)簽中的文字編碼也包括UNICODE、GBK,具體的區(qū)分也要查找相關(guān)的標(biāo)志符。

  2.文檔閱讀的軟件設(shè)計(jì)。GBK的編碼中會(huì)帶有ASC碼,而GBK碼占兩個(gè)字節(jié),ASC碼占一個(gè)字節(jié),如果在取文件過程中恰好取到GBK碼的每二個(gè)字節(jié),那么以后的內(nèi)容在LCD上的顯示將全部為亂碼,特別是在向上翻頁的時(shí)候(文檔內(nèi)容在LCD上的顯示還要判斷回車以及其它字符,這樣就會(huì)造成每一頁具體讀了多少字節(jié),顯示了多少字節(jié)都不一樣)。最終解決辦法是用一個(gè)數(shù)組記錄每一次翻頁共顯示了多少字節(jié)(不是讀取了多少字節(jié))。

  3.在TFT上顯示字符和漢字。對于TFT液晶,沒有具體的字模存儲(chǔ)在控制芯片中,只能是整體系統(tǒng)的存儲(chǔ)。而且漢字的Unicode和GBK編碼并不相同。筆者把具體的字庫存儲(chǔ)在了要讀取的優(yōu)盤根目錄下(對應(yīng)的字模文件是ST16.BIN KT16.BIN)。對于Unicode到GBK的轉(zhuǎn)換,筆者把轉(zhuǎn)換文件也存儲(chǔ)在了優(yōu)盤的根目錄下面(對應(yīng)文件是UNITOGBK.SYS)。

  5 結(jié)束語

  經(jīng)測試,本設(shè)計(jì)能夠讀取并播放中MP3文件,音質(zhì)清晰悅耳,無延時(shí)和跳幀現(xiàn)象。能夠讀取中txt文檔以實(shí)現(xiàn)電子書功能。內(nèi)置的貪吃蛇游戲也可以順利實(shí)現(xiàn)。由于本設(shè)計(jì)采用播放器與存儲(chǔ)器分離的方式,因此存儲(chǔ)空間不受限制,自由度較大,這比一般MP3播放器更具有優(yōu)勢。

pa相關(guān)文章:pa是什么


c語言相關(guān)文章:c語言教程



上一頁 1 2 下一頁

關(guān)鍵詞: AVR U盤 CH375

評論


相關(guān)推薦

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

關(guān)閉