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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 本科生畢業(yè)設(shè)計(jì)(論文)學(xué)院: 電子與電氣工程學(xué)院專 業(yè):自動(dòng)化 *理工學(xué)院本科生畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的音樂播放器的軟件設(shè)計(jì)Software Design of Music Player Based on 51 MCU總計(jì): 33 頁表 格: 3 個(gè)插 圖: 15幅21 / 25* 理 工 學(xué) 院 本 科 畢 業(yè) 設(shè) 計(jì)(論文)基于51單片機(jī)的音樂播放器的軟件設(shè)計(jì)Software Design of Music Player Based on 51 MCU學(xué) 院: 電子與電氣工程學(xué)院專 業(yè): 自動(dòng)化 學(xué) 生 姓 名:* 學(xué) 號(hào):* 指 導(dǎo) 教 師(職稱):*評 閱 教 師:完 成 日

2、 期:*理工學(xué)院Nanyang Institute of Technology目 錄1 引言11.1 設(shè)計(jì)背景11.2 設(shè)計(jì)意義11.3 理論分析與方案論證11.3.1 理論分析11.3.2 設(shè)計(jì)方案論證22 系統(tǒng)硬件原理與概述32.1 STC12C5A60S2處理器介紹32.2 系統(tǒng)硬件電路綜述32.2.1 硬件系統(tǒng)總體設(shè)計(jì)方案32.2.2 USB總線的通用接口芯片CH375電路42.2.3 LCD12864顯示電路52.2.4 按鍵控制電路52.2.5 音頻解碼芯片VS1003電路53 系統(tǒng)軟件設(shè)計(jì)63.1 軟件開發(fā)平臺(tái)63.2 系統(tǒng)的軟件設(shè)計(jì)73.2.1 軟件總體分析73.2.2 CH3

3、75軟件系統(tǒng)設(shè)計(jì)103.2.3 CH375模塊的U盤數(shù)據(jù)讀取程序設(shè)計(jì)113.2.4 VS1003模塊的MP3文件播放程序設(shè)計(jì)133.3 系統(tǒng)流程圖144 系統(tǒng)調(diào)試結(jié)果與分析15結(jié)束語18參考文獻(xiàn)19附錄20致331 引言1.1 設(shè)計(jì)背景隨著電子技術(shù)的發(fā)展,MP3播放器向大容量、高音質(zhì)、小巧便攜不斷發(fā)展。雖然播放器與存儲(chǔ)器的一體化設(shè)計(jì),使MP3播放器便于攜帶,但與此同時(shí)他也帶來了很多新的問題,比如存儲(chǔ)容量固定。如果想裝下更多的歌曲只能去購買新的產(chǎn)品,造成了巨大的浪費(fèi);另一方面,一體化又限制了MP3播放器在其他領(lǐng)域的應(yīng)用,比如車載MP3等不方便移動(dòng)的播放器。于是將存儲(chǔ)器與播放器分離成為MP3的另一

4、發(fā)展方向。本設(shè)計(jì)以單片機(jī)為核心控制器,設(shè)計(jì)一個(gè)音樂播放器,主要完成U盤存儲(chǔ)的音頻文件數(shù)據(jù)提取與播放任務(wù)。該播放器類似于個(gè)人計(jì)算機(jī)的音樂播放軟件,可識(shí)別、提取U盤所存儲(chǔ)的MP3、WMA或MIDI格式的文件并可自行完成音頻解碼數(shù)據(jù)處理,最后送揚(yáng)聲器或耳機(jī)進(jìn)行播放。通過自定義鍵盤設(shè)定,當(dāng)有鍵按下時(shí),能控制歌曲的播放或音量,并通過LCD來顯示播放音樂的歌曲名,同時(shí)USB-HOST的開發(fā)也為實(shí)時(shí)數(shù)據(jù)采集的移動(dòng)存儲(chǔ)提供了價(jià)格低廉的解決方案。本文將從軟硬件方面介紹如何用單片機(jī)控制USB-HOST讀取U盤中的文件并將其解碼播放。1.2設(shè)計(jì)意義基于單片機(jī)的音樂播放器可應(yīng)用于MP3,MP4,擴(kuò)音器等很多方面,并可

5、作為很多系統(tǒng)的輔助功能,傳統(tǒng)的音樂播放器是利用定時(shí)器可以產(chǎn)生各種固定頻率的方波信號(hào),可以產(chǎn)生包括“Do”、“Re”、“Me”等音階在的各種頻率聲音。將各個(gè)音階連接在一起,便可組成一支曲子或者是演奏一段旋律,不能播放真正的MP3文件。基于這個(gè)思想本文設(shè)計(jì)了一款特殊的“音樂播放器”,該播放器可實(shí)現(xiàn)MP3文件的完整播放,可以選擇音量調(diào)節(jié),曲目的切換等功能。為了體現(xiàn)音樂播放過程中的效果,增加了LCD屏,可以實(shí)現(xiàn)歌曲名的顯示。本設(shè)計(jì)以STC12C5A60S2芯片作為主控制器,芬蘭VLSI公司的VS1003作為音頻解碼芯片,沁恒公司的CH375作為USB設(shè)備接口芯片,以U盤作為媒體存儲(chǔ)介質(zhì),LCD1286

6、4液晶屏作為顯示屏,來完成音樂播放器的功能。該設(shè)計(jì)具有四按鍵操作界面,界面顯示友好,支持MP3、WMA和MID音樂格式,該系統(tǒng)支持FAT32文件系統(tǒng),支持大容量U盤。1.3 理論分析與方案論證1.3.1理論分析針對本MP3音樂播放系統(tǒng),要選擇合適的控制芯片與外部芯片來實(shí)現(xiàn),下面介紹一下芯片的選用。(1)MP3 解碼本設(shè)計(jì)是利用STC12C5A60S2單片機(jī)控制來實(shí)現(xiàn)歌曲播放功能的,但對單片機(jī)本身來說不能進(jìn)行音頻解碼(速度與資源都不符合要求),所以只能利用外部解碼芯片來實(shí)現(xiàn)歌曲播放功能。MP3解碼芯片常見的有VS100X 系列和 STA01X系列,VS系列自帶DAC輸出功能,而且能解碼的音頻格式

7、也比較多;而STA系列需要外加DAC,使用起來多有不便,而且只能解碼MP3一種格式的音樂文件。經(jīng)過比較,選用VS1003作為解碼芯片,該芯片支持 MP3、WMA、WAV、MIDI、等格式的解碼,自帶DAC輸出;同時(shí),還可以調(diào)節(jié)音量、高低音等,更重要的是它還具有MIC功能,如需要,還可以實(shí)現(xiàn)錄音功能。因此,選用此芯片作為解碼芯片。(2)USB設(shè)備接口芯片選用沁恒公司的CH375,CH375是一個(gè)USB總線的通用接口芯片,支持HOST主機(jī)方式和SLAVE設(shè)備方式。在本地端,CH375具有8位數(shù)據(jù)總線和讀、寫、片選控制線以與中斷輸出,可以方便地掛接到單片機(jī)/DSP/MCU等控制器的系統(tǒng)總線上。在US

8、B主機(jī)方式下,CH375還提供了串行通信方式,通過串行輸入、串行輸出和中斷輸出與單片機(jī)/DSP/MCU等相連接。CH375的USB主機(jī)方式支持各種常用的USB全速設(shè)備,外部單片機(jī)/DSP/MCU可以通過CH375按照相應(yīng)的USB協(xié)議與USB設(shè)備通信。(3)液晶顯示采用普通單色LCD來實(shí)現(xiàn),這里考慮到音樂播放顯示的功能,同時(shí)兼顧成本,故選用LCD12864來實(shí)現(xiàn)。該液晶屏本身帶有字庫功能所以,系統(tǒng)不需要有外部字庫文件,可實(shí)現(xiàn)曲目的漢字顯示。(4)存儲(chǔ)媒介,MP3播放器需要大容量的存儲(chǔ)器來存放歌曲,可以選擇 Flash芯片存儲(chǔ)、SD卡、U盤等。如果選用Flash,則整個(gè)系統(tǒng)要求較多的I/O端口來讀

9、取,更重要的一點(diǎn)是,這樣做的后果就是整個(gè)系統(tǒng)的容量就被固定了,擴(kuò)容存在困難。而U盤和SD卡都是不錯(cuò)的選擇,并且U盤和SD卡均容易購買到,并且價(jià)格較為低廉,所以,存儲(chǔ)部分選用U盤讀取來實(shí)現(xiàn)。1.3.2 設(shè)計(jì)方案論證通過以上的理論分析,對本設(shè)計(jì)的所有的主要芯片有了初步的了解。本MP3播放系統(tǒng)以STC12C5A60S2為控制核心,不僅要管理USB總線的通用接口芯片CH375、MP3解碼芯片VS1003、LCD12864液晶顯示屏和按鍵的處理,同時(shí)還要管理USB存儲(chǔ)設(shè)備中的文件系統(tǒng),查找文件等等。存儲(chǔ)器里的媒體文件首先被讀取到MCU的RAM中,然后又被送到解碼芯片中,解碼后的音頻數(shù)據(jù)被還原成模擬音頻,

10、再由揚(yáng)聲器傳出。由于STC12C5A60S2本身不支持USB接口功能,所以MCU無法直接與電腦完成數(shù)據(jù)傳輸?shù)墓δ?,存?chǔ)設(shè)備需要通過自身的接口與電腦相接。其它芯片是通過普通I/O端口連接的。2系統(tǒng)硬件原理與概述2.1STC12C5A60S2處理器介紹STC12C5A60S2/AD系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。部集成MAX810專用復(fù)位電路,2路PWM,有8路高速10位的A/D轉(zhuǎn)換(250K/S),STC12C5A60S2引腳序列如圖1所示。圖1 STC12C5A60S

11、2引腳序列2.2系統(tǒng)硬件電路綜述2.2.1硬件系統(tǒng)總體設(shè)計(jì)方案本設(shè)計(jì)的音樂播放器,有四個(gè)按鍵控制按鈕:下一曲,上一曲,音量加,音量減。通過對按鈕的控制來實(shí)現(xiàn)對單片機(jī)要求播放的音樂,并通過放大電路和音頻設(shè)備輸出聲音。同時(shí)通過LCD顯示屏來顯示所播放的曲目。必要時(shí)可調(diào)節(jié)音量的大小。硬件系統(tǒng)總體方框圖如圖2所示。圖2硬件系統(tǒng)總體方框圖2.2.2USB總線的通用接口芯片CH375電路CH375芯片是一個(gè)支持USB-HOST主機(jī)方式和USB-DEVICE/SLAVE設(shè)備方式的USB總線通用接口芯片。CH375具有8位數(shù)據(jù)總線和讀、寫、片選控制線以與中斷輸出,可以方便地掛接到單片機(jī)/DSP/MCU/MPU

12、等控制器的系統(tǒng)總線上。在USB 主機(jī)方式下,CH375還提供了串行通訊方式,通過串行輸入、串行輸出和中斷輸出與單片機(jī)/DSP/MCU/MPU等相連接。接線圖如圖3所示。圖3 USB總線的通用接口芯片CH375電路接線圖CH375的USB主機(jī)方式支持常用的USB全速設(shè)備,外部單片機(jī)可以通過CH375按照相應(yīng)USB協(xié)議與USB設(shè)備通訊。CH375置了處理Mass-Storage海量存儲(chǔ)設(shè)備的專用通訊協(xié)議的固件外部單片機(jī)可以直接以扇區(qū)為基本單位讀寫常用的USB存儲(chǔ)設(shè)備(包括USB硬盤/USB閃存盤/U 盤)。主機(jī)端點(diǎn)輸入和輸出緩沖區(qū)各64字節(jié),支持12Mbps全速USB設(shè)備和1.5Mbps低速設(shè)備。

13、可自動(dòng)檢測USB設(shè)備的連接和斷開,提供設(shè)備連接和斷開的事件通知。通過U 盤文件級子程序庫實(shí)現(xiàn)單片機(jī)讀寫USB存儲(chǔ)設(shè)備中的文件。并行接口包含8位數(shù)據(jù)總線,4線控制:讀選通、寫選通、片選輸入、中斷輸出。2.2.3 LCD12864顯示電路顯示電路主要是LCD12864電路,它與1602顯示屏接線一樣,唯一的區(qū)別在于1602顯示屏是字符型,只能顯示數(shù)字與字符,不可以顯示漢字。12864顯示屏是點(diǎn)陣型,可根據(jù)需求任意顯示字符、數(shù)字、漢字、圖形。其接線圖如圖4所示。圖4 LCD12864顯示電路接線圖2.2.4按鍵控制電路按鍵控制電路,其按鍵一與P1.0相連、按鍵二與P1.1相連、按鍵三與P1.2相連、

14、按鍵四與P1.3相連。當(dāng)按鍵按下時(shí)接口接低電平,從而實(shí)現(xiàn)對音樂曲目的選擇控制。按鍵一接通實(shí)現(xiàn)上一曲更換,按鍵二接通實(shí)現(xiàn)下一曲更換,按鍵三接通實(shí)現(xiàn)音量增大操作,按鍵四接通實(shí)現(xiàn)音量減小操作,接線如圖5所示。圖5 按鍵控制電路接線圖2.2.5音頻解碼芯片VS1003電路VS1003芯片是一個(gè)MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個(gè)高性能,自主產(chǎn)權(quán)的低功耗DSP處理器VS_DSP4,工作數(shù)據(jù)存儲(chǔ)器,為用戶應(yīng)用提供5KB的指令RAM和0.5KB的數(shù)據(jù)RAM。4個(gè)常規(guī)用途的I/O端口,一個(gè)UART,一個(gè)高品質(zhì)可變采樣率的ADC和立體聲DAC,還有一個(gè)耳機(jī)放大器和地線緩沖器。VS10

15、03通過一個(gè)串行接口來接收輸入的比特流,它可以作為一個(gè)系統(tǒng)的從機(jī)。輸入的比特流被解碼,然后通過一個(gè)數(shù)字音量控制器到達(dá)一個(gè)18位過采樣多位-DAC。通過串行總線控制解碼器。VS1003電路接線如圖6所示。圖6 VS1003電路接線圖3系統(tǒng)軟件設(shè)計(jì)3.1 軟件開發(fā)平臺(tái)Keil是德國Keil公司(現(xiàn)已并入ARM公司)開發(fā)的微控制器軟件開發(fā)平臺(tái),是目前ARM核單片機(jī)開發(fā)的主流工具。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器在的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些功能組合在一起。uVision當(dāng)前最高版本是uVision4,它的界面和常用的微軟VC

16、+的界面相似,界面友好,易學(xué)易用,在調(diào)試程序、軟件仿真方面也有很強(qiáng)大的功能。本設(shè)計(jì)使用的是uVision2版本。uVision2是一款集編輯、編譯和項(xiàng)目管理于一身的基于窗口的軟件開發(fā)環(huán)境。uVision2集成了C語言編譯器、宏編譯、/定位、以與HEX文件產(chǎn)生器1。本質(zhì)是一個(gè)典型的調(diào)試窗口,主要包括以下幾個(gè)窗口,如圖7所示。圖7 Keil uVision2開發(fā)環(huán)境3.2 系統(tǒng)的軟件設(shè)計(jì)本系統(tǒng)采用模塊化的編程思想,把整個(gè)軟件系統(tǒng)化為多個(gè)功能模塊,主程序通過調(diào)用各個(gè)子程序來完成各個(gè)功能的實(shí)現(xiàn)。下面具體介紹各個(gè)模塊的實(shí)現(xiàn)。3.2.1軟件總體分析從整體上看,該系統(tǒng)軟件分為三個(gè)大的部分:(1)VS1003

17、解碼。VS1003解碼即VS1003譯碼程序。主要完成數(shù)字信號(hào)的采集、信號(hào)濾波等功能。利用模塊化編程思想分別來實(shí)現(xiàn)各個(gè)模塊的功能,減少程序之間的耦合性,提高程序之間的聚性。通過調(diào)用各個(gè)子程序來完成系統(tǒng)的功能。該部分總體開發(fā)思路是,VSl003通過同步串行總線SPI與STC12C5A60S2進(jìn)行命令和數(shù)據(jù)的傳輸。只要正確寫SPI相關(guān)寄存器就能輕松實(shí)現(xiàn)控制。VSl003的SPI接口具有2種工作模式:新模式和兼容模式。設(shè)置寄存器“SM_SDINEW為1”使VSl003處于新模式,此時(shí)設(shè)置SM_SDISHARE為0,控制信號(hào)和數(shù)據(jù)信號(hào)的傳送將分別采用XCS和XDCS作為同步信號(hào)。系統(tǒng)啟動(dòng)后,由MCU控

18、制將存儲(chǔ)于U盤中歌曲的碼流信息送入到VSl003芯片中,通過VSl003芯片解碼以與其含的高質(zhì)量的立體聲DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放功能2。(2)USB總線的通用接口芯片CH375。CH375芯片掛接到MCU系統(tǒng)總線上,MCU通過CH375按照相應(yīng)的USB協(xié)議與其它USB設(shè)備進(jìn)行通信。本設(shè)計(jì)中CH375工作在USBHOST模式下,將8位并行數(shù)據(jù)線D0D7與STC12C5A60S2的P0口相連,實(shí)現(xiàn)數(shù)據(jù)與命令的并行傳輸,CH375工作在主機(jī)方式MCU通過RD,WR,片選CS、中斷INT和地址線AO的綜合控制,完成與CH375的通訊,通過USB接口實(shí)現(xiàn)從U盤讀寫數(shù)據(jù)的功能。INT引腳

19、和MCU的外部中斷輸入引腳相連,當(dāng)有U盤插入時(shí)INT變?yōu)榈碗娖接|發(fā)外部中斷,當(dāng)RD為高電平,且CS,WR和AO都為低電平時(shí),D7DO上的數(shù)據(jù)被寫入CH375芯片中;當(dāng)RD為高電平,且CS和WR都為低電平,AO為高電平時(shí),D7DO中的數(shù)據(jù)可作為命令碼寫入CH375芯片中;當(dāng)WR為高電平,且CS,RD和AO都為低電平時(shí),CH375中的數(shù)據(jù)可以通過D7DO輸出3。(3)LCD12864液晶顯示a)LCD12864引腳功能說明如表1所示。表1 LCD12864引腳功能說明管腳號(hào)管腳名稱電平管腳功能描述1VSS0V電源地2VCC+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,DB

20、7DB0為顯示數(shù)據(jù)RS=“L”,DB7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)DB7DB0被讀R/W=“L”,E=“HL”, DB7DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號(hào)7DB0H/L數(shù)據(jù)線8DB1H/L數(shù)據(jù)線9DB2H/L數(shù)據(jù)線10DB3H/L數(shù)據(jù)線11DB4H/L數(shù)據(jù)線12DB5H/L數(shù)據(jù)線13DB6H/L數(shù)據(jù)線14DB7H/L數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式16NC-空腳17/RESETH/L復(fù)位端,低電平有效18VOUT-LCD驅(qū)動(dòng)電壓輸出端19AVDD背光源正端(+5V)20KVSS背光源負(fù)端b)LCD

21、12864控制器接口信號(hào)說明:管腳RS、R/W為主要功能選擇端口,RS端口高低電平用于12864識(shí)別端口信號(hào)是指令數(shù)據(jù)(L)還是顯示數(shù)據(jù)(H),R/W端口高低電平用于控制12864讀(H)寫(L)狀態(tài)。RS,R/W的配合選擇決定控制界面的4種模式如表2所示。表2 LCD12864控制界面模式RSR/W功能說明LLMCU寫指令到指令暫存器(IR)LH讀出忙標(biāo)志(BF)與地址記數(shù)器(AC)的狀態(tài)HLMCU寫入數(shù)據(jù)到數(shù)據(jù)暫存器(DR)HHMCU從數(shù)據(jù)暫存器(DR)中讀出數(shù)據(jù)c)LCD12864使能E信號(hào)E作為12864的外加時(shí)鐘,控制12864與外部的連接。當(dāng)E信號(hào)HL時(shí)12864讀取DB端口的數(shù)據(jù)

22、。將它視為一個(gè)開關(guān),當(dāng)進(jìn)行數(shù)據(jù)寫入時(shí)先調(diào)節(jié)RS選擇信號(hào)種類,然后將R/W拉低設(shè)為寫狀態(tài),把數(shù)據(jù)傳到管腳后將E由LHL把數(shù)據(jù)讀入寄存器。如表3所示。表3 LCD12864使能信號(hào)E狀態(tài)執(zhí)行動(dòng)作結(jié)果高>低I/O緩沖>DR配合W進(jìn)行寫數(shù)據(jù)或指令高DR>I/O緩沖配合R進(jìn)行讀數(shù)據(jù)或指令低/低>高無動(dòng)作 (4)LCD12864串行連接數(shù)據(jù)傳輸串口模式工作過程:a)串行數(shù)據(jù)傳送共分三個(gè)字節(jié)完成。第一字節(jié) 串口控制格式 11111ABC A為數(shù)據(jù)傳送方向控制。其中,H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCD。B為數(shù)據(jù)類型選擇。其中,H表示數(shù)據(jù)是顯示數(shù)據(jù),L表示數(shù)

23、據(jù)是控制指令。C固定為0 第二字節(jié)(并行)8位數(shù)據(jù)的高4位格式DDDD0000 第三字節(jié)(并行)8位數(shù)據(jù)的低4位格式0000DDDD串口模式下只用兩根線(E和SCLK)來完成數(shù)據(jù)傳輸。ST7920是12864的控制器,如果使用多個(gè)ST7920時(shí),CS被配合使用,CS為高電平有效。SCLK有獨(dú)立的操作時(shí)序,當(dāng)多個(gè)連續(xù)的指令被送入時(shí),指令執(zhí)行時(shí)間需要被考慮,需要等待上一個(gè)指令執(zhí)行完畢才送入下一個(gè)指令,因?yàn)镾T7920部沒有傳送/接收緩沖區(qū)。b)一個(gè)完整的串行傳輸周期有以下部分組成。首先送入啟動(dòng)字節(jié),送入5個(gè)連續(xù)的“1”來啟動(dòng)一個(gè)周期,此時(shí)傳輸周期被重置,并且串行傳輸數(shù)據(jù)被同步,緊接的兩個(gè)為指定傳輸

24、方向(R/W讀還是寫)和(RS確定是命令寄存器還是數(shù)據(jù)寄存器),最后的第八位是一個(gè)“0”,送完啟動(dòng)字節(jié)以后,可以送入指令或是顯示數(shù)據(jù),指令或代碼是以字節(jié)為單位的,每個(gè)字節(jié)的容(指令或數(shù)據(jù))在被送入時(shí)分為兩個(gè)字節(jié)來處理,高四位放在第一個(gè)字節(jié)的高四位,低四位放在第二個(gè)字節(jié)的高四位。無關(guān)的都補(bǔ)“0”。如圖8所示4。圖8 LCD12864串行方式數(shù)據(jù)傳輸3.2.2CH375軟件系統(tǒng)設(shè)計(jì)軟件是搭載在硬件上運(yùn)行的,硬件的資源多少在一定程度上決定了軟件的設(shè)計(jì)方法和復(fù)雜程度。由于早期的單片機(jī)硬件資源少RAM資源有限,所以工程師在編程的時(shí)候?qū)AM的應(yīng)用要十分小心,因此造成這類的設(shè)計(jì)開發(fā)工程師更加偏向于直接用匯

25、編語言來控制硬件的工作。隨著科學(xué)的發(fā)展,嵌入式系統(tǒng)復(fù)雜度的提高和EDA技術(shù)的發(fā)展,各種高級的EDA工具不斷推出,比如Keil、IAR、ADS等工具,這些工具不僅極大的方便了工程師的開發(fā),同時(shí)也為用C語言這種高級語言來編寫程序提供了有利的條件。但是這種開發(fā)方式隨著系統(tǒng)復(fù)雜度的增高也變的愈加吃力了,因?yàn)閷﹂_發(fā)人員要熟悉芯片的部資源,能夠進(jìn)行寄存器配置,這樣就對工程師的要求比較高。但是這些問題可以通過移植操作系統(tǒng)來解決,操作系統(tǒng)的優(yōu)勢就是屏蔽了具體的硬件細(xì)節(jié),可以讓開發(fā)人員把更多的精力放在應(yīng)用程序上。本系統(tǒng)設(shè)計(jì)時(shí),考慮移植操作系統(tǒng)。但是對于具體的應(yīng)用存在一些不足之處:首先,操作系統(tǒng)在對數(shù)據(jù)區(qū)的開銷以

26、與一些變量的存儲(chǔ)方面浪費(fèi)了很多的RAM資源,有限的RAM資源就無法有效的分配。其次,CH375方便的庫文件開發(fā)方式本身就屏蔽了硬件的細(xì)節(jié),處于以上考慮在本次開發(fā)中沒用移植操作系統(tǒng),而采用庫文件的方式來開發(fā)設(shè)計(jì)。由于CH375固件庫是一個(gè)固件包,它不僅包括了程序、數(shù)據(jù)結(jié)構(gòu)和覆蓋所有外設(shè)特性的宏單元。還包括設(shè)備驅(qū)動(dòng)的描述,該固件庫可以使得用戶在沒有深入學(xué)習(xí)外圍模塊規(guī)格手冊的情況下,也能夠在用戶應(yīng)用程序中涉與到的任何設(shè)備中直接使用。因此,使用該固件庫可以節(jié)省設(shè)計(jì)者的許多時(shí)間,可使開發(fā)人員把更多的精力花費(fèi)在編程方面,加快了開發(fā)周期,減少了在應(yīng)用開發(fā)中的綜合開銷。這是CH375軟件開發(fā)十分顯著的優(yōu)點(diǎn)。3

27、.2.3CH375模塊的U盤數(shù)據(jù)讀取程序設(shè)計(jì)U盤數(shù)據(jù)的讀取是MP3播放的重要環(huán)節(jié),對后面的MP3解碼進(jìn)一步處理至關(guān)重要。CH375置了USB通信協(xié)議,單片機(jī)可以直接調(diào)用API庫讀寫U盤中的文件數(shù)據(jù)。CH375用于低功耗模式,工作時(shí)需要外部為它提供12MHz的時(shí)鐘信號(hào)。原理如圖9所示5。圖9 U盤數(shù)據(jù)讀取原理圖將8位并行數(shù)據(jù)線D0D7與單片機(jī)的P0口相連實(shí)現(xiàn)數(shù)據(jù)與命令的并行傳輸,RD,WR,CS,INT和A0五根控制線分別連接至單片機(jī)的的對應(yīng)引腳,CH375的TXD引腳通過1K的下拉電阻接地,使CH375工作于USB主機(jī)并行接口方式。單片機(jī)通過RD,WR,片選CS、中斷INT和地址線AO的綜合控

28、制,完成與CH375的通訊,通過USB接口實(shí)現(xiàn)從U盤讀寫數(shù)據(jù)的功能。INT引腳和MCU的外部中斷輸入引腳相連,當(dāng)有U盤插入時(shí)INT變?yōu)榈碗娖接|發(fā)外部中斷,當(dāng)RD為高電平,且CS,WR和AO都為低電平時(shí),D7DO上的數(shù)據(jù)被寫入CH375芯片中;當(dāng)RD為高電平,且CS和WR都為低電平,AO為高電平時(shí),D7DO中的數(shù)據(jù)可作為命令碼寫入CH375芯片中;當(dāng)WR為高電平,且CS,RD和AO都為低電平時(shí),CH375中的數(shù)據(jù)可以通過D7DO輸出。子程序庫對U 盤文件的讀寫方式分為兩種:扇區(qū)模式和字節(jié)模式。本設(shè)計(jì)采用的是字節(jié)模式。字節(jié)模式下,以字節(jié)為基本單位對U 盤文件進(jìn)行讀寫,讀寫速度較慢,但是不需要額外的

29、文件數(shù)據(jù)緩沖區(qū)(實(shí)際是與磁盤數(shù)據(jù)緩沖區(qū)合用),適用于RAM少、數(shù)據(jù)量小或者數(shù)據(jù)零碎、不經(jīng)常讀寫數(shù)據(jù)的單片機(jī)系統(tǒng)。如果頻繁地向U盤寫入零碎的數(shù)據(jù),可能會(huì)縮短U盤中閃存的使用壽命(因?yàn)殚W存只能進(jìn)行有限次擦寫)。查看子程序庫的全局變量“CH375DiskStatus(磁盤與文件狀態(tài))”可以獲取當(dāng)前的文件模式。DISK_OPEN_FILE則代表扇區(qū)模式,DISK_OPEN_FILE_B則代表字節(jié)模式。當(dāng)執(zhí)行一次以字節(jié)為單位的操作命令后將自動(dòng)進(jìn)入字節(jié)模式(只有關(guān)閉文件后再重新打開才能恢復(fù)扇區(qū)模式),支持以字節(jié)為單位的操作子程序CH375ByteRead 和CH375ByteWrite 與CH375Byt

30、eLocate6。對于已打開的同一個(gè)文件,不能混用兩種模式的操作子程序。下面是單片機(jī)針對U盤的以字節(jié)為單位進(jìn)行讀寫操作的流程,如圖10所示。在流程中涉與到的參數(shù)如下:在mCmdParam.Open.mPathName的命令中提供文件名,包括完整的路徑名;在mCmdParam.ByteOffset.ByteLocate的命令中指定讀寫起始位置地址;在mCmdParam.mByteCount.mCmdParam.ByteRead的命令中指定讀取字節(jié)數(shù)6,7;在mCmdParam.Enumer.mPathName的命令中指定需要查詢的文件名中的全部或者部分字符。圖10 U盤數(shù)據(jù)讀取流程圖3.2.4V

31、S1003模塊的MP3文件播放程序設(shè)計(jì)系統(tǒng)上電啟動(dòng)后,由單片機(jī)控制將存儲(chǔ)于U盤中歌曲的MP3數(shù)據(jù)格式流信息通過CH375的USB接口芯片送入到VSl003芯片中,通過VSl003芯片解碼與其含高質(zhì)量的立體聲DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放,在按鍵的控制下,可實(shí)現(xiàn)對歌曲的選擇、音量增減等功能。VSl003的所有數(shù)據(jù)和控制命令均通過SPI總線接口實(shí)現(xiàn)。要控制VS1003首先要實(shí)現(xiàn)的就是寫命令,它是控制實(shí)現(xiàn)成功的前提。關(guān)于通信接口部分,它是一種同步串行接口方式(SPI從機(jī)模式),它要求SCLK信號(hào)必須由外部電路產(chǎn)生,數(shù)據(jù)(SDATA)在SCLK的上升沿或下降沿時(shí)被寫入。寫命令的過程如下:(

32、1)等待DREQ為高(當(dāng)DREQ為低時(shí),說明VS1003芯片還沒有就緒)(2)將XCS(命令片選)拉低(3)寫入0x02(寫操作命令)(4)寫入寄存器地址(5)分別寫入數(shù)據(jù)的高字節(jié)與低字節(jié)(6)將XCS置高初始化的過程如下:(1)硬件復(fù)位:接XRESET拉低(2)延時(shí),將XDCS、XCS、XRESET置高(3)向MODE中寫入0X0804(軟件復(fù)位)(4)等待DREQ為高(5)設(shè)置VS1003的時(shí)鐘:SCI_CLOCKF=0x9800,3倍頻(SC_MULT為4 ,SC_ADD為3,SC_FREQ為0)(6)設(shè)置VS1003的采樣率:SPI_AUDATA=0xBB81,采樣率48k,立體聲(7

33、)設(shè)置重音:SPI_BASS=0x0055(SB_AMPLITUDE=5,SB_FREQLIMIT=5,低于50Hz時(shí)進(jìn)行5dB的增強(qiáng))(8)設(shè)置音量:SCI_VOL=0x2020(左右聲道一樣)(9)這一步容易忽視,向VS1003發(fā)送4個(gè)字節(jié)的無效數(shù)據(jù),用以啟動(dòng)SPI發(fā)送對VS1003的初始化與測試都通過后,就可以給它發(fā)送MP3文件了。數(shù)據(jù)的寫入方法主要是看DREQ信號(hào),在VS1003的FIFO能夠接受數(shù)據(jù)的時(shí)候輸出高電平。每次可以寫入32個(gè)字節(jié)的數(shù)據(jù),因?yàn)閂S1003有32Byte的數(shù)據(jù)緩沖區(qū),而DREQ變低時(shí),單片機(jī)就要停止數(shù)據(jù)的發(fā)送8。具體的寫數(shù)據(jù)的方法如下:(1)將XDCS拉低(2)

34、等待DREQ為高(3)通過SPI寫入數(shù)據(jù)(4)在文件沒有結(jié)束前不斷重復(fù)2與3操作(5)在所有的數(shù)據(jù)都發(fā)送完畢后,最后發(fā)送2048個(gè)無效字節(jié),用以清除VS1003的數(shù)據(jù)緩沖區(qū) (6)將XDCS置高M(jìn)P3文件播放流程圖如圖11所示。一般一次讀一個(gè)扇區(qū),然后將數(shù)據(jù)發(fā)往VS1003,由于VS1003有32Byte的數(shù)據(jù)緩沖區(qū),一次可以發(fā)32個(gè)字節(jié)的數(shù)據(jù),然后檢測DREQ電平,當(dāng)DREQ為高時(shí)送下一個(gè)32Byte的數(shù)據(jù),直到發(fā)完為止。DREQ為高表明VS1003可以接受新的數(shù)據(jù),如果不考慮DREQ的狀態(tài),直接連續(xù)的給VS1003發(fā)的MP3數(shù)據(jù)的話將會(huì)出現(xiàn)音樂斷斷續(xù)續(xù)的情況。圖11 MP3文件播放流程圖3

35、.3 系統(tǒng)流程圖主程序?qū)崿F(xiàn)對單片機(jī)進(jìn)行初始化后,進(jìn)入歌曲識(shí)別子程序。確定歌曲曲目后,顯示屏進(jìn)行顯示。然后子程序?qū)σ魳凡シ盼募M(jìn)行循環(huán)判斷,得到按鍵的命令后再進(jìn)行按鍵播放。音樂播放的同時(shí),顯示屏顯示歌曲名,單片機(jī)調(diào)用字節(jié)模式讀取U盤數(shù)據(jù)進(jìn)行音樂播放。在播放音樂的過程中,子程序循環(huán)判斷音樂是否播放結(jié)束。當(dāng)音樂文件播放結(jié)束時(shí),判斷是否有按鍵按下,并執(zhí)行相應(yīng)的命令。系統(tǒng)流程圖如圖12所示。圖12 系統(tǒng)流程圖4 系統(tǒng)調(diào)試結(jié)果與分析(1)USB轉(zhuǎn)TTL出現(xiàn)的問題:1)驅(qū)動(dòng)安裝調(diào)試因?yàn)閃indows 7系統(tǒng)出現(xiàn)系統(tǒng)不兼容軟件,本設(shè)計(jì)調(diào)試的系統(tǒng)是64位,所以驅(qū)動(dòng)很難找到,大部分驅(qū)動(dòng)支持Windows XP系統(tǒng)

36、,所以出現(xiàn)驅(qū)動(dòng)安裝不成功或者安裝出現(xiàn)錯(cuò)誤的提示或者在設(shè)備管理器出現(xiàn)黃色的嘆號(hào),都表明驅(qū)動(dòng)沒安裝成功。驅(qū)動(dòng)安裝調(diào)試如圖13所示。解決方法是要考慮兼容性問題,下載的驅(qū)動(dòng)應(yīng)當(dāng)手動(dòng)安裝,使用系統(tǒng)自動(dòng)配置會(huì)出現(xiàn)黃色嘆號(hào)。且安裝完畢,一定要重啟才能生效。圖13 驅(qū)動(dòng)安裝調(diào)試2)程序下載調(diào)試按照PL2303驅(qū)動(dòng)手冊下載程序不能成功,認(rèn)為是最小系統(tǒng)模塊燒了,進(jìn)入串口數(shù)據(jù)測試沒有發(fā)現(xiàn)問題,重新連線搭建系統(tǒng),將STC-ISP單片機(jī)下載編程燒錄軟件下載按鈕下面的兩個(gè)方框打上對號(hào),終于把程序下載進(jìn)了單片機(jī)。解釋一下打?qū)μ?hào)的作用。l 每次下載前重新調(diào)入已打開在緩沖區(qū)的文件,方便調(diào)試使用。就是在點(diǎn)擊下載時(shí),程序自動(dòng)把已打

37、開在緩沖區(qū)的文件重新調(diào)入,這樣方便下載程序不用總要點(diǎn)打開文件來重新調(diào)入文件。 l 當(dāng)目標(biāo)代碼發(fā)生變化后自動(dòng)調(diào)入文件,并立刻發(fā)送下載命令。跟每次下載前重新調(diào)入已打開在緩沖區(qū)的文件,方便調(diào)試使用性質(zhì)一樣,但是不用點(diǎn)擊下載來調(diào)入文件,自動(dòng)調(diào)入并下載。(2)屏幕顯示調(diào)試程序下載成功后根據(jù)顯示的容來調(diào)試,在刪除漢字的時(shí)候按下刪除格一下,就變成亂碼,經(jīng)過查找資料之后,才懂得每行可以寫8個(gè)漢字或16個(gè)字符,如果寫的字符少于16個(gè),那么用空格把未寫的地方填充滿16個(gè)字符就不會(huì)出現(xiàn)亂碼了。屏幕顯示調(diào)試如圖14和圖15所示。圖14 屏幕顯示調(diào)試前圖15 屏幕顯示調(diào)試后(3)搭建資源I/O端口分配簡化最初LCD12

38、864使用的是并行通信,線路復(fù)雜,占用I/O資源太多,I/O端口不夠使用,按鍵問題在并行通信時(shí)只剩下一個(gè)按鍵,只能實(shí)現(xiàn)下一曲功能,不能完成預(yù)定目標(biāo)。經(jīng)過分析將I/O資源分配簡化,把并行通信改為串行通信,簡化了線路,并且I/O端口分配也合理還留出了余量。結(jié)束語歷時(shí)十二周的畢業(yè)設(shè)計(jì)終于結(jié)束了,我收獲了很多在課堂上無法學(xué)到的知識(shí),不僅培養(yǎng)了我親身實(shí)踐動(dòng)手的能力,軟件的編程能力也得到了大幅度的提高,受益匪淺。同時(shí)檢驗(yàn)了我的理論知識(shí),也完善了我的知識(shí)體系。在Keil和Protel軟件的基礎(chǔ)上,完成了畢業(yè)設(shè)計(jì)的任務(wù),實(shí)現(xiàn)了運(yùn)用C語言進(jìn)行編程,在LCD顯示屏上顯示播放歌曲的名字,并通過按鍵對歌曲的音量和切換進(jìn)行控制的功能,這次畢業(yè)設(shè)計(jì)主要完成了以下幾個(gè)方面的容:(1)熟悉了單片機(jī)STC12C5A60S2、解碼芯片VS1003、LCD128*64液晶顯示器的工作原理和使用方法。(2)U盤數(shù)據(jù)的讀取和MP3文件播放的設(shè)計(jì)做了分析,并根據(jù)設(shè)計(jì)功能的要求,確定了總體設(shè)計(jì)方案。(3)在總體設(shè)計(jì)方案的基礎(chǔ)上,完成了音樂播放器的整體設(shè)計(jì)。(4)在調(diào)試過程中發(fā)現(xiàn)設(shè)計(jì)的缺陷,逐步優(yōu)化軟件設(shè)計(jì),合理完成軟件的編寫。存在的問題:由于時(shí)間和自身知識(shí)掌握能力的關(guān)系,此次設(shè)計(jì)

溫馨提示

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

評論

0/150

提交評論