• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    多功能MP3的設(shè)計

    2014-12-31 00:00:00趙健薛成成南永兵
    電子世界 2014年20期

    【摘要】隨著科學(xué)技術(shù)的不斷發(fā)展,電子產(chǎn)品價格日益下降,功能差異化不斷突出。當(dāng)前MP3也面臨這一問題。本文介紹了一種基于STC15F單片機的低成本多功能MP3的設(shè)計及制作。與當(dāng)前市面上MP3相比,該MP3在低成本的基礎(chǔ)上融入了圖片播放和電子書播放的功能,功能新穎實用并且強大,可播放320kbs高質(zhì)音頻及SDHC卡容量限制內(nèi)的任意大txt文件??身槕?yīng)電子產(chǎn)品功能差異化需求趨勢。

    【關(guān)鍵詞】FAT32文件系統(tǒng);MP3;VS1003;電子書;電子相框;SDHC卡

    1.引言

    MP3是生活中常見的電子產(chǎn)品。受手機、paid的沖擊,當(dāng)前人們對MP3功能的要求更加差異化和苛刻。傳統(tǒng)MP3功能單一,芯片處理能力較差,大多無法播放高音質(zhì)音樂文件?;谶@一問題本文提出一種基于51增強型單片機的低成本多功能大容量MP3解決方案,在可播放高音質(zhì)MP3歌曲的基礎(chǔ)上加入圖片播放和電子書播放,以應(yīng)對MP3功能的差異化需求。詳細設(shè)計如下。

    2.硬件設(shè)計

    本多功能MP3由數(shù)據(jù)存儲、音頻解碼、液晶顯示、中心控制、電源、鍵盤等功能模塊構(gòu)成。

    2.1 數(shù)據(jù)存儲模塊

    選用Kingston SDHC卡作為存儲介質(zhì)。SDHC卡是一種高容量SD存儲卡,容量在2GB~32G,符合SD2.0規(guī)范,可采用FAT32文件系統(tǒng)管理。單片機通過通信讀寫SDHC卡命令和狀態(tài)寄存器完成相關(guān)操作工作。SD卡內(nèi)部有7個寄存器。其中OCR,CID,CSD和SCR寄存器保存卡的配置信息:RCA寄存器保存SD模式下通信過程SDHC卡當(dāng)前暫時地址;卡狀態(tài)(Card Status)和SD狀態(tài)(SD Status)寄存器保存卡當(dāng)前狀態(tài),如:是否寫成功,通信的CRC校驗是否正確等,這兩個寄存器的內(nèi)容與通信模式有關(guān)。

    須注意SD卡的工作電壓為3.3V,不能與5V單片機直接相連,可在SD模塊集成5-3.3V轉(zhuǎn)換電路,方便單片機與SDHC卡的耦合。

    2.2 音頻解碼模塊

    MP3文件其實是一種經(jīng)過MP3(即動態(tài)影像專家壓縮標準音頻層面)編碼算法壓縮的數(shù)據(jù),不能直接送給功放,必須先通過解碼還原出原始音頻數(shù)據(jù)再進行播放。本文所選解碼芯片為VLSI公司的VS1003,它支持MP3/WAV/WMA/MIDI音頻解碼和ADPCM編碼。VS1003的工作是通過對功能、狀態(tài)寄存器的讀寫完成的。其中控制信息通過SCI寫入功能寄存器,音頻數(shù)據(jù)通過SDI寫入VS1003數(shù)據(jù)緩沖區(qū)。寫音頻數(shù)據(jù)時,拉低XDCS,SDI有效;寫命令數(shù)據(jù)時,拉低XCS,SCI有效。須注意,VS1003在DREQ管腳為高電平時才可以接收數(shù)據(jù)。當(dāng)工作在解碼狀態(tài)時它通過一個串行接口接收比特流,比特流被解碼后通過數(shù)字音量控制器被送到18位DAC,得到的音頻模擬信號經(jīng)過功放被送到耳機接口,接上耳機即可聽到音樂聲。

    2.3 單片機控制模塊

    本文采用宏晶公司STC15F2K60S2單片機作為控制器,其2K字節(jié)片內(nèi)RAM可滿足系統(tǒng)運行RAM要求;該單片機采用增強型8051內(nèi)核,速度快,可滿足MP3播放數(shù)據(jù)交換要求;內(nèi)置SPI串行通信接口,易于與SD模塊、VS1003模塊耦合操作。該單片機的工作電壓5.5V~3.8V的寬電壓,推薦5V,須做好與SD卡管腳3.3V工作電壓的耦合,以防SD卡損壞或工作失常。

    2.4 TFT液晶顯示模塊

    TFT液晶即彩色晶體管液晶顯示器,它的像素點由集成在其后的薄膜晶體管來驅(qū)動,通過一定電路控制每一像素三基色光強的配比即可顯示各種彩色。8位單片機系統(tǒng)下的TFT液晶的顯示需要TFT液晶控制器來驅(qū)動,單片機可通過與TFT液晶控制器的交互間接控制TFT液晶的顯示。

    本文顯示模塊采用的是一款3.5寸320*480分辨率的16位真彩色TFT液晶屏。模塊采用8位并口方式與單片機連接,可通過8位的標準Intel8080總線進行指令和數(shù)據(jù)的傳輸,便于操作。

    TFT液晶的顯示是將圖形中每個像素點的位置和顏色信息在屏上對應(yīng)顯示,16位真彩色屏每一個像素點的位置信息(即坐標)和顏色信息按照一定格式存儲在兩個字節(jié)中。單片機操作時在對應(yīng)模式下將圖案所有像素點的信息送給控制器,在顯示器上通過像素點的點陣組合便可完成顯示。

    3.軟件設(shè)計

    本多功能MP3具備三大功能:歌曲播放、圖片播放、電子書播放。目標數(shù)據(jù)的獲取是實現(xiàn)每個功能的首要問題。由于歌曲、圖片、電子書文件大,在SDHC卡以簇鏈形式存儲,需由文件系統(tǒng)進行數(shù)據(jù)管理,故嵌入FAT32文件系統(tǒng)(znFAT)解決上述問題。在此基礎(chǔ)上完成每個子功能與之相關(guān)的數(shù)據(jù)處理及系統(tǒng)整體運行框架即可實現(xiàn)全部功能。

    3.1 數(shù)據(jù)獲取

    數(shù)據(jù)獲取需保證SDHC卡的正確驅(qū)動和FAT32文件系統(tǒng)的正常運行。

    3.2 SDHC卡的驅(qū)動

    (1)初始化操作

    ①延時至少74clock,等待SD卡內(nèi)部操作完成。

    ②拉低CS選中SD卡。

    ③發(fā)送CMD0,若返回0x01,進入Idle狀態(tài)。

    ④發(fā)送CMD8命令,若返回0x01,初步判斷為2.0卡,循環(huán)發(fā)送CMD55+ACMD41,直至返回0x00,確定SD2.0卡初始化成功。

    ⑤拉高CS。

    (2)讀數(shù)據(jù)操作

    ①發(fā)送CMD17(讀取單個扇區(qū))或CMD18(連續(xù)讀取多個扇區(qū))讀命令,返回0x00表示操作成功。

    ②接收數(shù)據(jù):格式為開始令牌(0xfe)+512B正式數(shù)據(jù)+2B CRC校驗碼。

    (3)寫數(shù)據(jù)操作

    ①發(fā)送CMD24(寫單個扇區(qū))或CMD25(連續(xù)寫多個扇區(qū))寫命令,返回0x00表示操作成功。

    ②發(fā)送數(shù)據(jù):格式為開始令牌(0xfe)+512B正式數(shù)據(jù)+2B CRC校驗碼。

    (4)擦除操作

    ①發(fā)送CMD32擦除開始地址。

    ②發(fā)送CMD33和擦除結(jié)束地址。

    ③發(fā)送CMD38,擦除指定的多扇區(qū)內(nèi)容。

    SDHC驅(qū)動常用函數(shù)如下:

    函數(shù)定義 " 功能與參數(shù)描述

    SD_Init() SD卡初始化

    SD_Write_Sector(addr,buffer) 將buffer中的數(shù)據(jù)寫入到addr扇區(qū)中

    SD_Read_Sector(addr,buffer) 讀取addr扇區(qū)中數(shù)據(jù)到buffer中

    SD_Write_nSector(nsec,addr,buffer) 將buffer中的數(shù)據(jù)寫入到addr開始的nsec個扇區(qū)中

    SD_Read_nSector(nsec,addr,buffer) 讀取addr開始的nsec個扇區(qū)數(shù)據(jù)到buffer中

    SD_Erase_nSector(addr_sta,addr_end) 擦除addr_sta開始addr_end結(jié)束的多個扇區(qū)

    SD_GetTotalSec() 獲取SD卡的物理總扇區(qū)數(shù)

    4.FAT32文件系統(tǒng)

    本文文件系統(tǒng)選擇免費開源系統(tǒng)znFAT。znFAT的整體結(jié)構(gòu)分為應(yīng)用層層、實現(xiàn)層、物理驅(qū)動層,用戶只需編寫物理驅(qū)動層扇區(qū)讀寫等函數(shù)??晒┯脩舨僮鞯墓δ馨ù蜷_文件、讀取數(shù)據(jù)、創(chuàng)建文件等;

    本文中涉及最多的是數(shù)據(jù)的讀取,讀取數(shù)據(jù)可通過“打開文件函數(shù)UINT8 znFAT_Open_File(struct FileInfo *pfi,INT8 *filepath,UINT32 n,UINT8 is_file)”和“讀取數(shù)據(jù)函數(shù)UINT32 znFAT_Read_File(struct FileInfoStruct *pfi,UINT32 offset,UINT32 len,UINT8 *pbuf)”來完成。

    4.1 歌曲播放

    歌曲播放是STC15F單片機通過文件系統(tǒng)讀取SDHC卡中的MP3文件,將MP3數(shù)據(jù)送給VS1003模塊解碼得到模擬音頻信號流的過程。同時通過MP3文件文件目錄項信息解析出文件名(歌曲名);用文件已讀取字節(jié)數(shù)量除以文件總大小得到播放進度;在VS1003打入頻譜補丁的前提下從地址0x6 0x7 0xa三個寄存器中讀出頻譜相關(guān)信息;并逐一顯示。播放過程中,按鍵可以切換歌曲,調(diào)節(jié)音量。歌曲的切換是通過改變系統(tǒng)內(nèi)部為不同歌曲分配的不同序列號而完成的。由于一方面單片機RAM有限,無法單次讀取太多MP3數(shù)據(jù)且一次讀取過多會因耗時過多而引起播放的卡頓;另一方面,兩次數(shù)據(jù)讀取中間有按鍵檢測,若一次讀取數(shù)據(jù)過多會降低按鍵的靈敏性。要實現(xiàn)邊播放邊檢側(cè)按鍵需找到一個單次讀取數(shù)據(jù)量的平衡點,建議選擇300B。

    播放過程需解決VS1003驅(qū)動問題和相關(guān)數(shù)據(jù)處理。VS1003驅(qū)動方法如下:

    單片機對VS1003驅(qū)動是通過SPI通信方式對VS1003的命令狀態(tài)寄存器進行讀取和刷寫而完成的。使用時須首先對VS1003硬件復(fù)位,將XRESET拉低并延時;其次向模式寄存器(地址0x0)寫入0X0804;再次設(shè)置時鐘寄存器(地址0x3)和采樣率寄存器(地址0x5);最后設(shè)置音量且發(fā)送4個無效數(shù)據(jù)啟動數(shù)據(jù)傳輸,4個無效數(shù)據(jù)的傳輸不能忽略。其中VS1003采用大端模式;音量寄存器的設(shè)置值為0~255,對應(yīng)音量的最大和最小,編程時需注意。

    數(shù)據(jù)處理偽代碼如下:

    void Mp3play()

    {

    //相關(guān)變量定義

    //文件系統(tǒng)及相關(guān)物理設(shè)備初始化

    //刷寫播放背景

    while(!znFAT_Open_File(amp;FileInfo,”\\歌曲\\*.mp3”,Sang_Num,1))//打開歌曲目錄下序號為1的歌曲文件

    {

    while( len = znFAT_Read_File(amp;FileInfo,F(xiàn)ileInfo.FileCurOffset,400,mp3_buf))//讀出部分MP3數(shù)據(jù)

    {

    //MP3數(shù)據(jù)發(fā)送給VS1003

    VS_XDCS = 0;

    for( i=0; ilt;len; i++)

    {

    VS_Send_Dat(mp3_buf[i]);

    }

    VS_XDCS = 1;

    //播放進度顯示

    //頻譜顯示

    }

    //歌曲名顯示

    //按鍵檢測及處理

    }

    }

    4.2 圖片播放

    圖片播放類似于歌曲播放,不同在于讀出的圖片文件數(shù)據(jù)發(fā)送給TFT顯示屏模塊進行顯示。由于所選顯示屏分辨率為320*480,單次數(shù)據(jù)讀取大小建議為320,則兩次讀數(shù)據(jù)寫屏過程便可寫滿顯示屏的一行,重復(fù)書寫320行即可完成圖片顯示。

    4.3 電子書播放

    電子書播放的首要問題是漢字顯示。漢字的顯示就是以字模信息為底本在顯示屏上畫圖,以某漢字字模信息為底本畫出的圖即是該漢字。本文選擇的字模庫是UCDOS操作系統(tǒng)下的漢字字模庫HZK16.dat。

    txt文件存儲信息實質(zhì)為漢字在字模庫中的區(qū)碼和位碼。首先從SDHC卡分多次讀出txt文件數(shù)據(jù),其中每個漢字信息由兩個字節(jié)儲存,每個英文字母及英文標點由一個字節(jié)儲存。字節(jié)內(nèi)容為字符在字模庫中的位置,漢字字模位置可由公式“字模在HZK16中的偏移量=[(區(qū)碼-1)*94+(位碼-1)]*32”算出;接著用“UINT8 znFAT_seek(struct FileInfo *pfi,UINT32 offset)函數(shù)(znfat功能層函數(shù))”讀出16*16漢字的32字節(jié)字模信息并將對應(yīng)漢字刷寫在顯示屏上。重復(fù)以上漢字的顯示過程便可實現(xiàn)電子書的播放。建議每次讀取的txt文件大小為200B,需特別注意的是,須檢測每次讀取最后一個字節(jié)是不是英文字母或英文標點,是則讀,若不是或是下個漢字的區(qū)碼,則不讀,以免造成漢字顯示紊亂。同時,在每次txt文件讀取的間隙進行按鍵處理,包括上下頁、上下篇、返回等。

    4.4 系統(tǒng)整體框架

    系統(tǒng)整體框架解決的問題是各功能之間的協(xié)調(diào)和切換.代碼中每個功能具不同序號,并設(shè)有一個功能切換標志字,通過按鍵改變功能切換標志字的值即可實現(xiàn)各個功能的切換。其具體實現(xiàn)軟件流程圖如圖1所示。

    圖1

    5.實物調(diào)試及結(jié)果

    經(jīng)過制板和元件焊接,完成實物制作。將SDHC卡格式化為FAT32格式,裝入歌曲、圖片、電子書文件。將內(nèi)存卡裝入卡座進行測試。各方面功能正常,可正常播放320kbs音樂文件、300K 320*480的二進制圖片文件、txt電子書文件。MP3文件的播放可以暫停,切換上下去,快進;圖片的播放可切換上下張;txt的播放可上下翻頁,可切換篇,查看進度。但圖片刷寫和電子書刷寫稍稍顯慢,這是受單片機處理速度所限,但也在可承受范圍。

    6.結(jié)語

    雖然當(dāng)前電子產(chǎn)品日益豐富,但由于MP3的便攜性和專業(yè)性,相信MP3不會走出人們的視角,并會將以功能個性化作為主打,在不遠的將來,MP3的功能及設(shè)計有望實現(xiàn)個人定制。本文即是針對當(dāng)前MP3功能差異化需求現(xiàn)象做出的一次嘗試,設(shè)計了一款多功能MP3,旨在滿足當(dāng)下人們對電子產(chǎn)品功能的差異化需求.該設(shè)計功能強大,成本低,宜于批量化生產(chǎn)。

    參考文獻

    [1]微軟FAT32文件系統(tǒng)白皮書.

    [2]于振南.嵌入式FAT32文件系統(tǒng)設(shè)計與實現(xiàn):基于振南znFAT[M].北京航空航天大學(xué)出版社.2014.

    [3]汪勇,熊前興.MP3文件格式解析[J].計算機應(yīng)用與軟件,2004(12).

    [4]羅鈞,桂杰出.一種基于通用單片機的MP3播放器解決方案[J].重慶大學(xué)學(xué)報(自然科學(xué)版),2003(12).

    作者簡介:

    趙?。?992—),男,寧夏固原人,成都理工大學(xué)核技術(shù)及其自動化學(xué)院在讀本科生,研究方向:嵌入式系統(tǒng)。

    薛成成(1988—),女,吉林長春人,成都理工大學(xué)核技術(shù)及其自動化學(xué)院在讀本科生,研究方向:嵌入式系統(tǒng)。

    南永兵(1991—),男,新疆昌吉人,成都理工大學(xué)核技術(shù)及其自動化學(xué)院在讀本科生,研究方向:嵌入式系統(tǒng)。

    新野县| 海南省| 宜宾市| 英德市| 金平| 金溪县| 黄骅市| 固原市| 玉屏| 金门县| 苍南县| 库伦旗| 民县| 聂荣县| 阜平县| 平潭县| 海晏县| 霍林郭勒市| 香河县| 康马县| 山丹县| 陈巴尔虎旗| 凌海市| 营山县| 怀安县| 韶关市| 合山市| 莫力| 天门市| 南投县| 秀山| 赤峰市| 固阳县| 浦东新区| 张家界市| 潞西市| 阜城县| 岫岩| 五峰| 富裕县| 咸丰县|