基于A(yíng)VR單片機的U盤(pán)MP3設計與實(shí)現
4.3 VS1003的讀寫(xiě)控制
本文引用地址:http://dyxdggzs.com/article/262816.htmVS1003的寄存器用下列順序讀出,如圖二。首先將XCS片選拉低以選擇芯片,再通過(guò)SI線(xiàn)發(fā)送8位的讀操作碼(0x03)和8位的地址。在地址被VS1003芯片讀入后,SI上的數據將被忽略。相應地址的16位數據將從SO線(xiàn)移出。當數據全被移出后XCS需拉高。

VS1003的寄存器須按以下的順序寫(xiě)入,如圖三。首先將XCS片選拉低,再通過(guò)SI線(xiàn)發(fā)送8位的讀操作碼(0x02)和8位的地址。隨即發(fā)送16位的數據字。當最后一位被移入且最后的時(shí)鐘已發(fā)送,必須將XCS拉高以完成寫(xiě)操作。
4.4 MP3的播放
當執行音樂(lè )播放程序時(shí),ATmega64芯片首先從U盤(pán)中預取標簽信息,經(jīng)過(guò)分析,由Unicode到GBK編碼的轉換,再取字模,最終在LCD上顯示;之后開(kāi)始取音樂(lè )文件的數據,送到VS1003芯片,VS1003開(kāi)始解碼并在音頻接口發(fā)出音頻信號。當按下暫停鍵時(shí),暫停取數據,上一曲、下一曲時(shí)跳出取數據循環(huán)。

4.5 其他軟件設計
1.音樂(lè )標簽的軟件設計。本系統可以讀取的音樂(lè )的標簽有ID3V1、ID3V2,當要區分這兩個(gè)標簽時(shí)可以用程序讀取音樂(lè )文件的開(kāi)頭和結尾,利用其標志符“ID3”、“TAG”來(lái)區分其具有哪一個(gè)標簽。但是標簽中的文字編碼也包括UNICODE、GBK,具體的區分也要查找相關(guān)的標志符。
2.文檔閱讀的軟件設計。GBK的編碼中會(huì )帶有ASC碼,而GBK碼占兩個(gè)字節,ASC碼占一個(gè)字節,如果在取文件過(guò)程中恰好取到GBK碼的每二個(gè)字節,那么以后的內容在LCD上的顯示將全部為亂碼,特別是在向上翻頁(yè)的時(shí)候(文檔內容在LCD上的顯示還要判斷回車(chē)以及其它字符,這樣就會(huì )造成每一頁(yè)具體讀了多少字節,顯示了多少字節都不一樣)。最終解決辦法是用一個(gè)數組記錄每一次翻頁(yè)共顯示了多少字節(不是讀取了多少字節)。
3.在TFT上顯示字符和漢字。對于TFT液晶,沒(méi)有具體的字模存儲在控制芯片中,只能是整體系統的存儲。而且漢字的Unicode和GBK編碼并不相同。筆者把具體的字庫存儲在了要讀取的優(yōu)盤(pán)根目錄下(對應的字模文件是ST16.BIN KT16.BIN)。對于Unicode到GBK的轉換,筆者把轉換文件也存儲在了優(yōu)盤(pán)的根目錄下面(對應文件是UNITOGBK.SYS)。
5 結束語(yǔ)
經(jīng)測試,本設計能夠讀取并播放U盤(pán)中MP3文件,音質(zhì)清晰悅耳,無(wú)延時(shí)和跳幀現象。能夠讀取U盤(pán)中txt文檔以實(shí)現電子書(shū)功能。內置的貪吃蛇游戲也可以順利實(shí)現。由于本設計采用播放器與存儲器分離的方式,因此存儲空間不受限制,自由度較大,這比一般MP3播放器更具有優(yōu)勢。
pa相關(guān)文章:pa是什么
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評論