新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AVR單片機的U盤MP3設計與實現

        基于AVR單片機的U盤MP3設計與實現

        作者: 時間:2014-09-11 來源:網絡 收藏

          4.3 VS1003的讀寫控制

        本文引用地址:http://www.104case.com/article/262816.htm

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

          

        MP3

         

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

          4.4 MP3的播放

          當執行音樂播放程序時,ATmega64芯片首先從中預取標簽信息,經過分析,由Unicode到GBK編碼的轉換,再取字模,最終在LCD上顯示;之后開始取音樂文件的數據,送到VS1003芯片,VS1003開始解碼并在音頻接口發出音頻信號。當按下暫停鍵時,暫停取數據,上一曲、下一曲時跳出取數據循環。

          

        MP3

         

          4.5 其他軟件設計

          1.音樂標簽的軟件設計。本系統可以讀取的音樂的標簽有ID3V1、ID3V2,當要區分這兩個標簽時可以用程序讀取音樂文件的開頭和結尾,利用其標志符“ID3”、“TAG”來區分其具有哪一個標簽。但是標簽中的文字編碼也包括UNICODE、GBK,具體的區分也要查找相關的標志符。

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

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

          5 結束語

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

        pa相關文章:pa是什么


        c語言相關文章:c語言教程



        上一頁 1 2 下一頁

        關鍵詞: AVR U盤 CH375

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 夏河县| 射阳县| 庆元县| 邛崃市| 墨竹工卡县| 鲁甸县| 含山县| 重庆市| 曲周县| 嘉定区| 封开县| 巫山县| 白水县| 蓝田县| 库尔勒市| 彰化县| 从江县| 丰顺县| 桓台县| 伊春市| 和顺县| 丹凤县| 炉霍县| 临泉县| 聂荣县| 衢州市| 尉犁县| 绥宁县| 阜平县| 邵东县| 临城县| 乐山市| 榆树市| 合川市| 民乐县| 天津市| 海林市| 日照市| 衡山县| 资兴市| 绥宁县|