基于51單片機的音樂播放器的軟件設計_第1頁
基于51單片機的音樂播放器的軟件設計_第2頁
基于51單片機的音樂播放器的軟件設計_第3頁
基于51單片機的音樂播放器的軟件設計_第4頁
基于51單片機的音樂播放器的軟件設計_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、* * 理 工 學 院 本科生畢業(yè)設計(論文)學 院: 電子與電氣工程學院 專 業(yè): 自動化 學 生: * 指導教師 : * 完成日期 * 年 * 月 *理工學院本科生畢業(yè)設計(論文) 基于51單片機的音樂播放器的軟件設計software design of music player based on 51 mcu總 計 : 33 頁表 格 : 3 個插 圖 : 15 幅* 理 工 學 院 本 科 畢 業(yè) 設 計(論文)基于51單片機的音樂播放器的軟件設計software design of music player based on 51 mcu學 院: 電子與電氣工程學院 專 業(yè): 自動化

2、 學 生 姓 名: * 學 號: * 指 導 教 師(職稱):* 評 閱 教 師: 完 成 日 期: *理工學院nanyang institute of technology目 錄1 引言11.1 設計背景11.2 設計意義11.3 理論分析與方案論證11.3.1 理論分析11.3.2 設計方案論證22 系統(tǒng)硬件原理及概述32.1 stc12c5a60s2處理器介紹32.2 系統(tǒng)硬件電路綜述32.2.1 硬件系統(tǒng)總體設計方案32.2.2 usb總線的通用接口芯片ch375電路42.2.3 lcd12864顯示電路52.2.4 按鍵控制電路52.2.5 音頻解碼芯片vs1003電路53 系統(tǒng)軟件

3、設計63.1 軟件開發(fā)平臺63.2 系統(tǒng)的軟件設計73.2.1 軟件總體分析73.2.2 ch375軟件系統(tǒng)設計103.2.3 ch375模塊的u盤數據讀取程序設計113.2.4 vs1003模塊的mp3文件播放程序設計133.3 系統(tǒng)流程圖144 系統(tǒng)調試結果及分析15結束語18參考文獻19附錄20致謝331 引言1.1 設計背景隨著電子技術的發(fā)展,mp3播放器向大容量、高音質、小巧便攜不斷發(fā)展。雖然播放器與存儲器的一體化設計,使mp3播放器便于攜帶,但與此同時他也帶來了很多新的問題,比如存儲容量固定。如果想裝下更多的歌曲只能去購買新的產品,造成了巨大的浪費;另一方面,一體化又限制了mp3播

4、放器在其他領域的應用,比如車載mp3等不方便移動的播放器。于是將存儲器與播放器分離成為mp3的另一發(fā)展方向。本設計以單片機為核心控制器,設計一個音樂播放器,主要完成u盤存儲的音頻文件數據提取及播放任務。該播放器類似于個人計算機的音樂播放軟件,可識別、提取u盤所存儲的mp3、wma或midi格式的文件并可自行完成音頻解碼數據處理,最后送揚聲器或耳機進行播放。通過自定義鍵盤設定,當有鍵按下時,能控制歌曲的播放或音量,并通過lcd來顯示播放音樂的歌曲名,同時usb-host的開發(fā)也為實時數據采集的移動存儲提供了價格低廉的解決方案。本文將從軟硬件方面介紹如何用單片機控制usb-host讀取u盤中的文件

5、并將其解碼播放。1.2 設計意義基于單片機的音樂播放器可應用于mp3,mp4,擴音器等很多方面,并可作為很多系統(tǒng)的輔助功能,傳統(tǒng)的音樂播放器是利用定時器可以產生各種固定頻率的方波信號,可以產生包括“do”、“re”、“me”等音階在內的各種頻率聲音。將各個音階連接在一起,便可組成一支曲子或者是演奏一段旋律,不能播放真正的mp3文件?;谶@個思想本文設計了一款特殊的“音樂播放器”,該播放器可實現mp3文件的完整播放,可以選擇音量調節(jié),曲目的切換等功能。為了體現音樂播放過程中的效果,增加了lcd屏,可以實現歌曲名的顯示。本設計以stc12c5a60s2芯片作為主控制器,芬蘭vlsi公司的vs100

6、3作為音頻解碼芯片,南京沁恒公司的ch375作為usb設備接口芯片,以u盤作為媒體存儲介質,lcd12864液晶屏作為顯示屏,來完成音樂播放器的功能。該設計具有四按鍵操作界面,界面顯示友好,支持mp3、wma和mid音樂格式,該系統(tǒng)支持fat32文件系統(tǒng),支持大容量u盤。1.3 理論分析與方案論證1.3.1 理論分析針對本mp3音樂播放系統(tǒng),要選擇合適的控制芯片及外部芯片來實現,下面介紹一下芯片的選用。(1)mp3 解碼本設計是利用stc12c5a60s2單片機控制來實現歌曲播放功能的,但對單片機本身來說不能進行音頻解碼(速度與資源都不符合要求),所以只能利用外部解碼芯片來實現歌曲播放功能。m

7、p3解碼芯片常見的有vs100x 系列和 sta01x系列,vs系列自帶dac輸出功能,而且能解碼的音頻格式也比較多;而sta系列需要外加dac,使用起來多有不便,而且只能解碼mp3一種格式的音樂文件。經過比較,選用vs1003作為解碼芯片,該芯片支持 mp3、wma、wav、midi、等格式的解碼,自帶dac輸出;同時,還可以調節(jié)音量、高低音等,更重要的是它還具有mic功能,如需要,還可以實現錄音功能。因此,選用此芯片作為解碼芯片。(2)usb設備接口芯片選用南京沁恒公司的ch375,ch375是一個usb總線的通用接口芯片,支持host主機方式和slave設備方式。在本地端,ch375具有

8、8位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/dsp/mcu等控制器的系統(tǒng)總線上。在usb主機方式下,ch375還提供了串行通信方式,通過串行輸入、串行輸出和中斷輸出與單片機/dsp/mcu等相連接。ch375的usb主機方式支持各種常用的usb全速設備,外部單片機/dsp/mcu可以通過ch375按照相應的usb協(xié)議與usb設備通信。(3)液晶顯示采用普通單色lcd來實現,這里考慮到音樂播放顯示的功能,同時兼顧成本,故選用lcd12864來實現。該液晶屏本身帶有字庫功能所以,系統(tǒng)不需要有外部字庫文件,可實現曲目的漢字顯示。(4)存儲媒介,mp3播放器需要大容量的存儲器

9、來存放歌曲,可以選擇 flash芯片存儲、sd卡、u盤等。如果選用flash,則整個系統(tǒng)要求較多的i/o端口來讀取,更重要的一點是,這樣做的后果就是整個系統(tǒng)的容量就被固定了,擴容存在困難。而u盤和sd卡都是不錯的選擇,并且u盤和sd卡均容易購買到,并且價格較為低廉,所以,存儲部分選用u盤讀取來實現。1.3.2 設計方案論證通過以上的理論分析,對本設計的所有的主要芯片有了初步的了解。本mp3播放系統(tǒng)以stc12c5a60s2為控制核心,不僅要管理usb總線的通用接口芯片ch375、mp3解碼芯片vs1003、lcd12864液晶顯示屏和按鍵的處理,同時還要管理usb存儲設備中的文件系統(tǒng),查找文件

10、等等。存儲器里的媒體文件首先被讀取到mcu的ram中,然后又被送到解碼芯片中,解碼后的音頻數據被還原成模擬音頻,再由揚聲器傳出。由于stc12c5a60s2本身不支持usb接口功能,所以mcu無法直接與電腦完成數據傳輸的功能,存儲設備需要通過自身的接口與電腦相接。其它芯片是通過普通i/o端口連接的。2 系統(tǒng)硬件原理及概述2.1 stc12c5a60s2處理器介紹stc12c5a60s2/ad系列單片機是宏晶科技生產的單時鐘/機器周期(1t)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內部集成max810專用復位電路,2路pwm,

11、有8路高速10位的a/d轉換(250k/s),stc12c5a60s2引腳序列如圖1所示。圖1 stc12c5a60s2引腳序列2.2 系統(tǒng)硬件電路綜述2.2.1 硬件系統(tǒng)總體設計方案本設計的音樂播放器,有四個按鍵控制按鈕:下一曲,上一曲,音量加,音量減。通過對按鈕的控制來實現對單片機要求播放的音樂,并通過放大電路和音頻設備輸出聲音。同時通過lcd顯示屏來顯示所播放的曲目。必要時可調節(jié)音量的大小。硬件系統(tǒng)總體方框圖如圖2所示。圖2硬件系統(tǒng)總體方框圖2.2.2 usb總線的通用接口芯片ch375電路ch375芯片是一個支持usb-host主機方式和usb-device/slave設備方式的usb

12、總線通用接口芯片。ch375具有8位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/dsp/mcu/mpu等控制器的系統(tǒng)總線上。在usb 主機方式下,ch375還提供了串行通訊方式,通過串行輸入、串行輸出和中斷輸出與單片機/dsp/mcu/mpu等相連接。接線圖如圖3所示。 圖3 usb總線的通用接口芯片ch375電路接線圖ch375的usb主機方式支持常用的usb全速設備,外部單片機可以通過ch375按照相應usb協(xié)議與usb設備通訊。ch375內置了處理mass-storage海量存儲設備的專用通訊協(xié)議的固件外部單片機可以直接以扇區(qū)為基本單位讀寫常用的usb存儲設備(包括

13、usb硬盤/usb閃存盤/u 盤)。主機端點輸入和輸出緩沖區(qū)各64字節(jié),支持12mbps全速usb設備和1.5mbps低速設備??勺詣訖z測usb設備的連接和斷開,提供設備連接和斷開的事件通知。通過u 盤文件級子程序庫實現單片機讀寫usb存儲設備中的文件。并行接口包含8位數據總線,4線控制:讀選通、寫選通、片選輸入、中斷輸出。2.2.3 lcd12864顯示電路顯示電路主要是lcd12864電路,它與1602顯示屏接線一樣,唯一的區(qū)別在于1602顯示屏是字符型,只能顯示數字與字符,不可以顯示漢字。12864顯示屏是點陣型,可根據需求任意顯示字符、數字、漢字、圖形。其接線圖如圖4所示。圖4 lcd

14、12864顯示電路接線圖2.2.4 按鍵控制電路按鍵控制電路,其按鍵一與p1.0相連、按鍵二與p1.1相連、按鍵三與p1.2相連、按鍵四與p1.3相連。當按鍵按下時接口接低電平,從而實現對音樂曲目的選擇控制。按鍵一接通實現上一曲更換,按鍵二接通實現下一曲更換,按鍵三接通實現音量增大操作,按鍵四接通實現音量減小操作,接線如圖5所示。圖5 按鍵控制電路接線圖2.2.5 音頻解碼芯片vs1003電路vs1003芯片是一個mp3/wma/midi音頻解碼器和adpcm編碼器。它包含一個高性能,自主產權的低功耗dsp處理器vs_dsp4,工作數據存儲器,為用戶應用提供5kb的指令ram和0.5kb的數據

15、ram。4個常規(guī)用途的i/o端口,一個uart,一個高品質可變采樣率的adc和立體聲dac,還有一個耳機放大器和地線緩沖器。vs1003通過一個串行接口來接收輸入的比特流,它可以作為一個系統(tǒng)的從機。輸入的比特流被解碼,然后通過一個數字音量控制器到達一個18位過采樣多位-dac。通過串行總線控制解碼器。vs1003電路接線如圖6所示。圖6 vs1003電路接線圖3 系統(tǒng)軟件設計3.1 軟件開發(fā)平臺keil是德國keil公司(現已并入arm公司)開發(fā)的微控制器軟件開發(fā)平臺,是目前arm內核單片機開發(fā)的主流工具。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器在內的完整開

16、發(fā)方案,通過一個集成開發(fā)環(huán)境(uvision)將這些功能組合在一起。uvision當前最高版本是uvision4,它的界面和常用的微軟vc+的界面相似,界面友好,易學易用,在調試程序、軟件仿真方面也有很強大的功能。本設計使用的是uvision2版本。uvision2是一款集編輯、編譯和項目管理于一身的基于窗口的軟件開發(fā)環(huán)境。uvision2集成了c語言編譯器、宏編譯、鏈接/定位、以及hex文件產生器1。本質是一個典型的調試窗口,主要包括以下幾個窗口,如圖7所示。圖7 keil uvision2開發(fā)環(huán)境3.2 系統(tǒng)的軟件設計本系統(tǒng)采用模塊化的編程思想,把整個軟件系統(tǒng)化為多個功能模塊,主程序通過調

17、用各個子程序來完成各個功能的實現。下面具體介紹各個模塊的實現。3.2.1 軟件總體分析從整體上看,該系統(tǒng)軟件分為三個大的部分: (1)vs1003解碼。vs1003解碼即vs1003譯碼程序。主要完成數字信號的采集、信號濾波等功能。利用模塊化編程思想分別來實現各個模塊的功能,減少程序之間的耦合性,提高程序之間的內聚性。通過調用各個子程序來完成系統(tǒng)的功能。該部分總體開發(fā)思路是,vsl003通過同步串行總線spi與stc12c5a60s2進行命令和數據的傳輸。只要正確寫spi相關寄存器就能輕松實現控制。vsl003的spi接口具有2種工作模式:新模式和兼容模式。設置寄存器“sm_sdinew為1”

18、使vsl003處于新模式,此時設置sm_sdishare為0,控制信號和數據信號的傳送將分別采用xcs和xdcs作為同步信號。系統(tǒng)啟動后,由mcu控制將存儲于u盤中歌曲的碼流信息送入到vsl003芯片中,通過vsl003芯片解碼以及其內含的高質量的立體聲dac和耳機驅動電路,實現mp3歌曲的播放功能2。(2)usb總線的通用接口芯片ch375。ch375芯片掛接到mcu系統(tǒng)總線上,mcu通過ch375按照相應的usb協(xié)議與其它usb設備進行通信。本設計中ch375工作在usbhost模式下,將8位并行數據線d0d7與stc12c5a60s2的p0口相連,實現數據與命令的并行傳輸,ch375工作

19、在主機方式mcu通過rd,wr,片選cs、中斷int和地址線ao的綜合控制,完成與ch375的通訊,通過usb接口實現從u盤讀寫數據的功能。int引腳和mcu的外部中斷輸入引腳相連,當有u盤插入時int變?yōu)榈碗娖接|發(fā)外部中斷,當rd為高電平,且cs,wr和ao都為低電平時,d7do上的數據被寫入ch375芯片中;當rd為高電平,且cs和wr都為低電平,ao為高電平時,d7do中的數據可作為命令碼寫入ch375芯片中;當wr為高電平,且cs,rd和ao都為低電平時,ch375中的數據可以通過d7do輸出3。(3)lcd12864液晶顯示a)lcd12864引腳功能說明如表1所示。表1 lcd12

20、864引腳功能說明管腳號管腳名稱電平管腳功能描述1vss0v電源地2vcc+5v電源正3v0-對比度(亮度)調整4rs(cs)h/lrs=“h”,db7db0為顯示數據rs=“l(fā)”,db7db0為顯示指令數據5r/w(sid)h/lr/w=“h”,e=“h”,數據db7db0被讀 r/w=“l(fā)”,e=“hl”, db7db0的數據被寫到ir或dr6e(sclk)h/l使能信號7db0h/l數據線8db1h/l數據線9db2h/l數據線10db3h/l數據線11db4h/l數據線12db5h/l數據線13db6h/l數據線14db7h/l數據線15psbh/lh:8位或4位并口方式,l:串口方式

21、16nc-空腳17/reseth/l復位端,低電平有效18vout-lcd驅動電壓輸出端19avdd背光源正端(+5v)20kvss背光源負端b)lcd12864控制器接口信號說明:管腳rs、r/w為主要功能選擇端口,rs端口高低電平用于12864識別端口信號是指令數據(l)還是顯示數據(h),r/w端口高低電平用于控制12864讀(h)寫(l)狀態(tài)。rs,r/w的配合選擇決定控制界面的4種模式如表2所示。表2 lcd12864控制界面模式rsr/w功能說明llmcu寫指令到指令暫存器(ir)lh讀出忙標志(bf)及地址記數器(ac)的狀態(tài)hlmcu寫入數據到數據暫存器(dr)hhmcu從數據

22、暫存器(dr)中讀出數據c)lcd12864使能e信號e作為12864的外加時鐘,控制12864與外部的連接。當e信號hl時12864讀取db端口的數據。將它視為一個開關,當進行數據寫入時先調節(jié)rs選擇信號種類,然后將r/w拉低設為寫狀態(tài),把數據傳到管腳后將e由lhl把數據讀入寄存器。如表3所示。表3 lcd12864使能信號e狀態(tài)執(zhí)行動作結果高低i/o緩沖dr配合w進行寫數據或指令高dri/o緩沖配合r進行讀數據或指令低/低高無動作(4)lcd12864串行連接數據傳輸串口模式工作過程:a)串行數據傳送共分三個字節(jié)完成。第一字節(jié) 串口控制格式 11111abc a為數據傳送方向控制。其中,h

23、表示數據從lcd到mcu,l表示數據從mcu到lcd。b為數據類型選擇。其中,h表示數據是顯示數據,l表示數據是控制指令。c固定為0 第二字節(jié)(并行)8位數據的高4位格式dddd0000 第三字節(jié)(并行)8位數據的低4位格式0000dddd串口模式下只用兩根線(e和sclk)來完成數據傳輸。st7920是12864的控制器,如果使用多個st7920時,cs被配合使用,cs為高電平有效。sclk有獨立的操作時序,當多個連續(xù)的指令被送入時,指令執(zhí)行時間需要被考慮,需要等待上一個指令執(zhí)行完畢才送入下一個指令,因為st7920內部沒有傳送/接收緩沖區(qū)。b)一個完整的串行傳輸周期有以下部分組成。首先送入

24、啟動字節(jié),送入5個連續(xù)的“1”來啟動一個周期,此時傳輸周期被重置,并且串行傳輸數據被同步,緊接的兩個為指定傳輸方向(r/w讀還是寫)和(rs確定是命令寄存器還是數據寄存器),最后的第八位是一個“0”,送完啟動字節(jié)以后,可以送入指令或是顯示數據,指令或代碼是以字節(jié)為單位的,每個字節(jié)的內容(指令或數據)在被送入時分為兩個字節(jié)來處理,高四位放在第一個字節(jié)的高四位,低四位放在第二個字節(jié)的高四位。無關的都補“0”。如圖8所示4。圖8 lcd12864串行方式數據傳輸3.2.2 ch375軟件系統(tǒng)設計軟件是搭載在硬件上運行的,硬件的資源多少在一定程度上決定了軟件的設計方法和復雜程度。由于早期的單片機硬件資

25、源少ram資源有限,所以工程師在編程的時候對ram的應用要十分小心,因此造成這類的設計開發(fā)工程師更加偏向于直接用匯編語言來控制硬件的工作。隨著科學的發(fā)展,嵌入式系統(tǒng)復雜度的提高和eda技術的發(fā)展,各種高級的eda工具不斷推出,比如keil、iar、ads等工具,這些工具不僅極大的方便了工程師的開發(fā),同時也為用c語言這種高級語言來編寫程序提供了有利的條件。但是這種開發(fā)方式隨著系統(tǒng)復雜度的增高也變的愈加吃力了,因為對開發(fā)人員要熟悉芯片的內部資源,能夠進行寄存器配置,這樣就對工程師的要求比較高。但是這些問題可以通過移植操作系統(tǒng)來解決,操作系統(tǒng)的優(yōu)勢就是屏蔽了具體的硬件細節(jié),可以讓開發(fā)人員把更多的精力

26、放在應用程序上。 本系統(tǒng)設計時,考慮移植操作系統(tǒng)。但是對于具體的應用存在一些不足之處:首先,操作系統(tǒng)在對數據區(qū)的開銷以及一些變量的存儲方面浪費了很多的ram資源,有限的ram資源就無法有效的分配。其次,ch375方便的庫文件開發(fā)方式本身就屏蔽了硬件的細節(jié),處于以上考慮在本次開發(fā)中沒用移植操作系統(tǒng),而采用庫文件的方式來開發(fā)設計。由于ch375固件庫是一個固件包,它不僅包括了程序、數據結構和覆蓋所有外設特性的宏單元。還包括設備驅動的描述,該固件庫可以使得用戶在沒有深入學習外圍模塊規(guī)格手冊的情況下,也能夠在用戶應用程序中涉及到的任何設備中直接使用。因此,使用該固件庫可以節(jié)省設計者的許多時間,可使開發(fā)

27、人員把更多的精力花費在編程方面,加快了開發(fā)周期,減少了在應用開發(fā)中的綜合開銷。這是ch375軟件開發(fā)十分顯著的優(yōu)點。3.2.3 ch375模塊的u盤數據讀取程序設計u盤數據的讀取是mp3播放的重要環(huán)節(jié),對后面的mp3解碼進一步處理至關重要。ch375內置了usb通信協(xié)議,單片機可以直接調用api庫讀寫u盤中的文件數據。ch375用于低功耗模式,工作時需要外部為它提供12mhz的時鐘信號。原理如圖9所示5。圖9 u盤數據讀取原理圖將8位并行數據線d0d7與單片機的p0口相連實現數據與命令的并行傳輸,rd,wr,cs,int和a0五根控制線分別連接至單片機的的對應引腳,ch375的txd引腳通過1

28、k的下拉電阻接地,使ch375工作于usb主機并行接口方式。單片機通過rd,wr,片選cs、中斷int和地址線ao的綜合控制,完成與ch375的通訊,通過usb接口實現從u盤讀寫數據的功能。int引腳和mcu的外部中斷輸入引腳相連,當有u盤插入時int變?yōu)榈碗娖接|發(fā)外部中斷,當rd為高電平,且cs,wr和ao都為低電平時,d7do上的數據被寫入ch375芯片中;當rd為高電平,且cs和wr都為低電平,ao為高電平時,d7do中的數據可作為命令碼寫入ch375芯片中;當wr為高電平,且cs,rd和ao都為低電平時,ch375中的數據可以通過d7do輸出。子程序庫對u 盤文件的讀寫方式分為兩種:扇

29、區(qū)模式和字節(jié)模式。本設計采用的是字節(jié)模式。字節(jié)模式下,以字節(jié)為基本單位對u 盤文件進行讀寫,讀寫速度較慢,但是不需要額外的文件數據緩沖區(qū)(實際是與磁盤數據緩沖區(qū)合用),適用于ram少、數據量小或者數據零碎、不經常讀寫數據的單片機系統(tǒng)。如果頻繁地向u盤寫入零碎的數據,可能會縮短u盤中閃存的使用壽命(因為閃存只能進行有限次擦寫)。查看子程序庫的全局變量“ch375diskstatus(磁盤及文件狀態(tài))”可以獲取當前的文件模式。disk_open_file則代表扇區(qū)模式,disk_open_file_b則代表字節(jié)模式。當執(zhí)行一次以字節(jié)為單位的操作命令后將自動進入字節(jié)模式(只有關閉文件后再重新打開才能

30、恢復扇區(qū)模式),支持以字節(jié)為單位的操作子程序ch375byteread 和ch375bytewrite 及ch375bytelocate6。對于已打開的同一個文件,不能混用兩種模式的操作子程序。下面是單片機針對u盤的以字節(jié)為單位進行讀寫操作的流程,如圖10所示。在流程中涉及到的參數如下:在mcmdparam.open.mpathname的命令中提供文件名,包括完整的路徑名;在mcmdparam.byteoffset.bytelocate的命令中指定讀寫起始位置地址;在mcmdparam.mbytecount.mcmdparam.byteread的命令中指定讀取字節(jié)數6,7;在mcmdparam

31、.enumer.mpathname的命令中指定需要查詢的文件名中的全部或者部分字符。圖10 u盤數據讀取流程圖3.2.4 vs1003模塊的mp3文件播放程序設計系統(tǒng)上電啟動后,由單片機控制將存儲于u盤中歌曲的mp3數據格式流信息通過ch375的usb接口芯片送入到vsl003芯片中,通過vsl003芯片解碼及其內含高質量的立體聲dac和耳機驅動電路,實現mp3歌曲的播放,在按鍵的控制下,可實現對歌曲的選擇、音量增減等功能。vsl003的所有數據和控制命令均通過spi總線接口實現。要控制vs1003首先要實現的就是寫命令,它是控制實現成功的前提。關于通信接口部分,它是一種同步串行接口方式(sp

32、i從機模式),它要求sclk信號必須由外部電路產生,數據(sdata)在sclk的上升沿或下降沿時被寫入。寫命令的過程如下:(1)等待dreq為高(當dreq為低時,說明vs1003芯片還沒有就緒)(2)將xcs(命令片選)拉低(3)寫入0x02(寫操作命令)(4)寫入寄存器地址(5)分別寫入數據的高字節(jié)與低字節(jié)(6)將xcs置高初始化的過程如下:(1)硬件復位:接xreset拉低(2)延時,將xdcs、xcs、xreset置高(3)向mode中寫入0x0804(軟件復位)(4)等待dreq為高(5)設置vs1003的時鐘:sci_clockf=0x9800,3倍頻(sc_mult為4 ,sc

33、_add為3,sc_freq為0)(6)設置vs1003的采樣率:spi_audata=0xbb81,采樣率48k,立體聲(7)設置重音:spi_bass=0x0055(sb_amplitude=5,sb_freqlimit=5,低于50hz時進行5db的增強)(8)設置音量:sci_vol=0x2020(左右聲道相同)(9)這一步容易忽視,向vs1003發(fā)送4個字節(jié)的無效數據,用以啟動spi發(fā)送對vs1003的初始化與測試都通過后,就可以給它發(fā)送mp3文件了。數據的寫入方法主要是看dreq信號,在vs1003的fifo能夠接受數據的時候輸出高電平。每次可以寫入32個字節(jié)的數據,因為vs100

34、3有32byte的數據緩沖區(qū),而dreq變低時,單片機就要停止數據的發(fā)送8。具體的寫數據的方法如下:(1)將xdcs拉低(2)等待dreq為高(3)通過spi寫入數據(4)在文件沒有結束前不斷重復2與3操作(5)在所有的數據都發(fā)送完畢后,最后發(fā)送2048個無效字節(jié),用以清除vs1003的數據緩沖區(qū) (6)將xdcs置高mp3文件播放流程圖如圖11所示。一般一次讀一個扇區(qū),然后將數據發(fā)往vs1003,由于vs1003有32byte的數據緩沖區(qū),一次可以發(fā)32個字節(jié)的數據,然后檢測dreq電平,當dreq為高時送下一個32byte的數據,直到發(fā)完為止。dreq為高表明vs1003可以接受新的數據,

35、如果不考慮dreq的狀態(tài),直接連續(xù)的給vs1003發(fā)的mp3數據的話將會出現音樂斷斷續(xù)續(xù)的情況。圖11 mp3文件播放流程圖3.3 系統(tǒng)流程圖主程序實現對單片機進行初始化后,進入歌曲識別子程序。確定歌曲曲目后,顯示屏進行顯示。然后子程序對音樂播放文件進行循環(huán)判斷,得到按鍵的命令后再進行按鍵播放。音樂播放的同時,顯示屏顯示歌曲名,單片機調用字節(jié)模式讀取u盤數據進行音樂播放。在播放音樂的過程中,子程序循環(huán)判斷音樂是否播放結束。當音樂文件播放結束時,判斷是否有按鍵按下,并執(zhí)行相應的命令。系統(tǒng)流程圖如圖12所示。圖12 系統(tǒng)流程圖4 系統(tǒng)調試結果及分析(1)usb轉ttl出現的問題:1)驅動安裝調試因

36、為windows 7系統(tǒng)出現系統(tǒng)不兼容軟件,本設計調試的系統(tǒng)是64位,所以驅動很難找到,大部分驅動支持windows xp系統(tǒng),所以出現驅動安裝不成功或者安裝出現錯誤的提示或者在設備管理器出現黃色的嘆號,都表明驅動沒安裝成功。驅動安裝調試如圖13所示。解決方法是要考慮兼容性問題,下載的驅動應當手動安裝,使用系統(tǒng)自動配置會出現黃色嘆號。且安裝完畢,一定要重啟才能生效。 圖13 驅動安裝調試2)程序下載調試按照pl2303驅動手冊下載程序不能成功,認為是最小系統(tǒng)模塊燒了,進入串口數據測試沒有發(fā)現問題,重新連線搭建系統(tǒng),將stc-isp單片機下載編程燒錄軟件下載按鈕下面的兩個方框打上對號,終于把程序

37、下載進了單片機。解釋一下打對號的作用。l 每次下載前重新調入已打開在緩沖區(qū)的文件,方便調試使用。就是在點擊下載時,程序自動把已打開在緩沖區(qū)的文件重新調入,這樣方便下載程序不用總要點打開文件來重新調入文件。 l 當目標代碼發(fā)生變化后自動調入文件,并立刻發(fā)送下載命令。跟每次下載前重新調入已打開在緩沖區(qū)的文件,方便調試使用性質一樣,但是不用點擊下載來調入文件,自動調入并下載。(2)屏幕顯示調試程序下載成功后根據顯示的內容來調試,在刪除漢字的時候按下刪除格一下,就變成亂碼,經過查找資料之后,才懂得每行可以寫8個漢字或16個字符,如果寫的字符少于16個,那么用空格把未寫的地方填充滿16個字符就不會出現亂

38、碼了。屏幕顯示調試如圖14和圖15所示。圖14 屏幕顯示調試前圖15 屏幕顯示調試后(3)搭建資源i/o端口分配簡化最初lcd12864使用的是并行通信,線路復雜,占用i/o資源太多,i/o端口不夠使用,按鍵問題在并行通信時只剩下一個按鍵,只能實現下一曲功能,不能完成預定目標。經過分析將i/o資源分配簡化,把并行通信改為串行通信,簡化了線路,并且i/o端口分配也合理還留出了余量。結束語歷時十二周的畢業(yè)設計終于結束了,我收獲了很多在課堂上無法學到的知識,不僅培養(yǎng)了我親身實踐動手的能力,軟件的編程能力也得到了大幅度的提高,受益匪淺。同時檢驗了我的理論知識,也完善了我的知識體系。在keil和prot

39、el軟件的基礎上,完成了畢業(yè)設計的任務,實現了運用c語言進行編程,在lcd顯示屏上顯示播放歌曲的名字,并通過按鍵對歌曲的音量和切換進行控制的功能,這次畢業(yè)設計主要完成了以下幾個方面的內容:(1)熟悉了單片機stc12c5a60s2、解碼芯片vs1003、lcd128*64液晶顯示器的工作原理和使用方法。(2)u盤數據的讀取和mp3文件播放的設計做了分析,并根據設計功能的要求,確定了總體設計方案。(3)在總體設計方案的基礎上,完成了音樂播放器的整體設計。(4)在調試過程中發(fā)現設計的缺陷,逐步優(yōu)化軟件設計,合理完成軟件的編寫。存在的問題:由于時間和自身知識掌握能力的關系,此次設計雖然達到了設計的基本要求,由于硬件條件和工具有限,本次設計在功能上還不是很齊全。但是設計過程中可能沒有完全考慮到整體的設計問題,如歌詞的顯示,在以后

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論