基于AVR單片機(jī)的U盤MP3設(shè)計(jì)與實(shí)現(xiàn)
4.3 VS1003的讀寫控制
本文引用地址:http://www.ex-cimer.com/article/262816.htmVS1003的寄存器用下列順序讀出,如圖二。首先將XCS片選拉低以選擇芯片,再通過SI線發(fā)送8位的讀操作碼(0x03)和8位的地址。在地址被VS1003芯片讀入后,SI上的數(shù)據(jù)將被忽略。相應(yīng)地址的16位數(shù)據(jù)將從SO線移出。當(dāng)數(shù)據(jù)全被移出后XCS需拉高。
VS1003的寄存器須按以下的順序?qū)懭耄鐖D三。首先將XCS片選拉低,再通過SI線發(fā)送8位的讀操作碼(0x02)和8位的地址。隨即發(fā)送16位的數(shù)據(jù)字。當(dāng)最后一位被移入且最后的時鐘已發(fā)送,必須將XCS拉高以完成寫操作。
4.4 MP3的播放
當(dāng)執(zhí)行音樂播放程序時,ATmega64芯片首先從U盤中預(yù)取標(biāo)簽信息,經(jīng)過分析,由Unicode到GBK編碼的轉(zhuǎn)換,再取字模,最終在LCD上顯示;之后開始取音樂文件的數(shù)據(jù),送到VS1003芯片,VS1003開始解碼并在音頻接口發(fā)出音頻信號。當(dāng)按下暫停鍵時,暫停取數(shù)據(jù),上一曲、下一曲時跳出取數(shù)據(jù)循環(huán)。
4.5 其他軟件設(shè)計(jì)
1.音樂標(biāo)簽的軟件設(shè)計(jì)。本系統(tǒng)可以讀取的音樂的標(biāo)簽有ID3V1、ID3V2,當(dāng)要區(qū)分這兩個標(biāo)簽時可以用程序讀取音樂文件的開頭和結(jié)尾,利用其標(biāo)志符“ID3”、“TAG”來區(qū)分其具有哪一個標(biāo)簽。但是標(biāo)簽中的文字編碼也包括UNICODE、GBK,具體的區(qū)分也要查找相關(guān)的標(biāo)志符。
2.文檔閱讀的軟件設(shè)計(jì)。GBK的編碼中會帶有ASC碼,而GBK碼占兩個字節(jié),ASC碼占一個字節(jié),如果在取文件過程中恰好取到GBK碼的每二個字節(jié),那么以后的內(nèi)容在LCD上的顯示將全部為亂碼,特別是在向上翻頁的時候(文檔內(nèi)容在LCD上的顯示還要判斷回車以及其它字符,這樣就會造成每一頁具體讀了多少字節(jié),顯示了多少字節(jié)都不一樣)。最終解決辦法是用一個數(shù)組記錄每一次翻頁共顯示了多少字節(jié)(不是讀取了多少字節(jié))。
3.在TFT上顯示字符和漢字。對于TFT液晶,沒有具體的字模存儲在控制芯片中,只能是整體系統(tǒng)的存儲。而且漢字的Unicode和GBK編碼并不相同。筆者把具體的字庫存儲在了要讀取的優(yōu)盤根目錄下(對應(yīng)的字模文件是ST16.BIN KT16.BIN)。對于Unicode到GBK的轉(zhuǎn)換,筆者把轉(zhuǎn)換文件也存儲在了優(yōu)盤的根目錄下面(對應(yīng)文件是UNITOGBK.SYS)。
5 結(jié)束語
經(jīng)測試,本設(shè)計(jì)能夠讀取并播放U盤中MP3文件,音質(zhì)清晰悅耳,無延時和跳幀現(xiàn)象。能夠讀取U盤中txt文檔以實(shí)現(xiàn)電子書功能。內(nèi)置的貪吃蛇游戲也可以順利實(shí)現(xiàn)。由于本設(shè)計(jì)采用播放器與存儲器分離的方式,因此存儲空間不受限制,自由度較大,這比一般MP3播放器更具有優(yōu)勢。
pa相關(guān)文章:pa是什么
c語言相關(guān)文章:c語言教程
評論