freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的音樂(lè)播放器的軟硬件設(shè)計(jì)畢業(yè)論文-文庫(kù)吧

2025-06-04 13:13 本頁(yè)面


【正文】 uVision)將這些功能組合在一起。uVision當(dāng)前最高版本是uVision4,它的界面和常用的微軟VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序、軟件仿真方面也有很強(qiáng)大的功能。本設(shè)計(jì)使用的是uVision2版本。uVision2是一款集編輯、編譯和項(xiàng)目管理于一身的基于窗口的軟件開(kāi)發(fā)環(huán)境。uVision2集成了C語(yǔ)言編譯器、宏編譯、鏈接/定位、以及HEX文件產(chǎn)生器[1]。本質(zhì)是一個(gè)典型的調(diào)試窗口,主要包括以下幾個(gè)窗口,如圖7所示。圖7 Keil uVision2開(kāi)發(fā)環(huán)境 系統(tǒng)的軟件設(shè)計(jì)本系統(tǒng)采用模塊化的編程思想,把整個(gè)軟件系統(tǒng)化為多個(gè)功能模塊,主程序通過(guò)調(diào)用各個(gè)子程序來(lái)完成各個(gè)功能的實(shí)現(xiàn)。下面具體介紹各個(gè)模塊的實(shí)現(xiàn)。 軟件總體分析從整體上看,該系統(tǒng)軟件分為三個(gè)大的部分: (1)VS1003解碼。VS1003解碼即VS1003譯碼程序。主要完成數(shù)字信號(hào)的采集、信號(hào)濾波等功能。利用模塊化編程思想分別來(lái)實(shí)現(xiàn)各個(gè)模塊的功能,減少程序之間的耦合性,提高程序之間的內(nèi)聚性。通過(guò)調(diào)用各個(gè)子程序來(lái)完成系統(tǒng)的功能。該部分總體開(kāi)發(fā)思路是,VSl003通過(guò)同步串行總線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控制將存儲(chǔ)于U盤中歌曲的碼流信息送入到VSl003芯片中,通過(guò)VSl003芯片解碼以及其內(nèi)含的高質(zhì)量的立體聲DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放功能[2]。(2)USB總線的通用接口芯片CH375。CH375芯片掛接到MCU系統(tǒng)總線上,MCU通過(guò)CH375按照相應(yīng)的USB協(xié)議與其它USB設(shè)備進(jìn)行通信。本設(shè)計(jì)中CH375工作在USBHOST模式下,將8位并行數(shù)據(jù)線D0~D7與STC12C5A60S2的P0口相連,實(shí)現(xiàn)數(shù)據(jù)與命令的并行傳輸,CH375工作在主機(jī)方式MCU通過(guò)RD,WR,片選CS、中斷INT和地址線AO的綜合控制,完成與CH375的通訊,通過(guò)USB接口實(shí)現(xiàn)從U盤讀寫數(shù)據(jù)的功能。INT引腳和MCU的外部中斷輸入引腳相連,當(dāng)有U盤插入時(shí)INT變?yōu)榈碗娖接|發(fā)外部中斷,當(dāng)RD為高電平,且CS,WR和AO都為低電平時(shí),D7~DO上的數(shù)據(jù)被寫入CH375芯片中;當(dāng)RD為高電平,且CS和WR都為低電平,AO為高電平時(shí),D7~DO中的數(shù)據(jù)可作為命令碼寫入CH375芯片中;當(dāng)WR為高電平,且CS,RD和AO都為低電平時(shí),CH375中的數(shù)據(jù)可以通過(guò)D7~DO輸出[3]。(3)LCD12864液晶顯示a)LCD12864引腳功能說(shuō)明如表1所示。表1 LCD12864引腳功能說(shuō)明管腳號(hào)管腳名稱電平管腳功能描述1VSS0V電源地2VCC+5V電源正3V0對(duì)比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,DB7——DB0為顯示數(shù)據(jù)RS=“L”,DB7——DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)DB7——DB0被讀 R/W=“L”,E=“H→L”, DB7——DB0的數(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ù)位端,低電平有效18VOUTLCD驅(qū)動(dòng)電壓輸出端19AVDD背光源正端(+5V)20KVSS背光源負(fù)端b)LCD12864控制器接口信號(hào)說(shuō)明:管腳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功能說(shuō)明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)H→L時(shí)12864讀取DB端口的數(shù)據(jù)。將它視為一個(gè)開(kāi)關(guān),當(dāng)進(jìn)行數(shù)據(jù)寫入時(shí)先調(diào)節(jié)RS選擇信號(hào)種類,然后將R/W拉低設(shè)為寫狀態(tài),把數(shù)據(jù)傳到管腳后將E由L→H→L把數(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ù)或指令低/低——高無(wú)動(dòng)作(4)LCD12864串行連接數(shù)據(jù)傳輸串口模式工作過(guò)程: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ù)據(jù)是控制指令。C固定為0 第二字節(jié)(并行)8位數(shù)據(jù)的高4位——格式DDDD0000 第三字節(jié)(并行)8位數(shù)據(jù)的低4位——格式0000DDDD串口模式下只用兩根線(E和SCLK)來(lái)完成數(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內(nèi)部沒(méi)有傳送/接收緩沖區(qū)。b)一個(gè)完整的串行傳輸周期有以下部分組成。首先送入啟動(dòng)字節(jié),送入5個(gè)連續(xù)的“1”來(lái)啟動(dòng)一個(gè)周期,此時(shí)傳輸周期被重置,并且串行傳輸數(shù)據(jù)被同步,緊接的兩個(gè)為指定傳輸方向(R/W讀還是寫)和(RS確定是命令寄存器還是數(shù)據(jù)寄存器),最后的第八位是一個(gè)“0”,送完啟動(dòng)字節(jié)以后,可以送入指令或是顯示數(shù)據(jù),指令或代碼是以字節(jié)為單位的,每個(gè)字節(jié)的內(nèi)容(指令或數(shù)據(jù))在被送入時(shí)分為兩個(gè)字節(jié)來(lái)處理,高四位放在第一個(gè)字節(jié)的高四位,低四位放在第二個(gè)字節(jié)的高四位。無(wú)關(guān)的都補(bǔ)“0”。如圖8所示[4]。圖8 LCD12864串行方式數(shù)據(jù)傳輸 CH375軟件系統(tǒng)設(shè)計(jì)軟件是搭載在硬件上運(yùn)行的,硬件的資源多少在一定程度上決定了軟件的設(shè)計(jì)方法和復(fù)雜程度。由于早期的單片機(jī)硬件資源少RAM資源有限,所以工程師在編程的時(shí)候?qū)AM的應(yīng)用要十分小心,因此造成這類的設(shè)計(jì)開(kāi)發(fā)工程師更加偏向于直接用匯編語(yǔ)言來(lái)控制硬件的工作。隨著科學(xué)的發(fā)展,嵌入式系統(tǒng)復(fù)雜度的提高和EDA技術(shù)的發(fā)展,各種高級(jí)的EDA工具不斷推出,比如Keil、IAR、ADS等工具,這些工具不僅極大的方便了工程師的開(kāi)發(fā),同時(shí)也為用C語(yǔ)言這種高級(jí)語(yǔ)言來(lái)編寫程序提供了有利的條件。但是這種開(kāi)發(fā)方式隨著系統(tǒng)復(fù)雜度的增高也變的愈加吃力了,因?yàn)閷?duì)開(kāi)發(fā)人員要熟悉芯片的內(nèi)部資源,能夠進(jìn)行寄存器配置,這樣就對(duì)工程師的要求比較高。但是這些問(wèn)題可以通過(guò)移植操作系統(tǒng)來(lái)解決,操作系統(tǒng)的優(yōu)勢(shì)就是屏蔽了具體的硬件細(xì)節(jié),可以讓開(kāi)發(fā)人員把更多的精力放在應(yīng)用程序上。 本系統(tǒng)設(shè)計(jì)時(shí),考慮移植操作系統(tǒng)。但是對(duì)于具體的應(yīng)用存在一些不足之處:首先,操作系統(tǒng)在對(duì)數(shù)據(jù)區(qū)的開(kāi)銷以及一些變量的存儲(chǔ)方面浪費(fèi)了很多的RAM資源,有限的RAM資源就無(wú)法有效的分配。其次,CH375方便的庫(kù)文件開(kāi)發(fā)方式本身就屏蔽了硬件的細(xì)節(jié),處于以上考慮在本次開(kāi)發(fā)中沒(méi)用移植操作系統(tǒng),而采用庫(kù)文件的方式來(lái)開(kāi)發(fā)設(shè)計(jì)。由于CH375固件庫(kù)是一個(gè)固件包,它不僅包括了程序、數(shù)據(jù)結(jié)構(gòu)和覆蓋所有外設(shè)特性的宏單元。還包括設(shè)備驅(qū)動(dòng)的描述,該固件庫(kù)可以使得用戶在沒(méi)有深入學(xué)習(xí)外圍模塊規(guī)格手冊(cè)的情況下,也能夠在用戶應(yīng)用程序中涉及到的任何設(shè)備中直接使用。因此,使用該固件庫(kù)可以節(jié)省設(shè)計(jì)者的許多時(shí)間,可使開(kāi)發(fā)人員把更多的精力花費(fèi)在編程方面,加快了開(kāi)發(fā)周期,減少了在應(yīng)用開(kāi)發(fā)中的綜合開(kāi)銷。這是CH375軟件開(kāi)發(fā)十分顯著的優(yōu)點(diǎn)。 CH375模塊的U盤數(shù)據(jù)讀取程序設(shè)計(jì)U盤數(shù)據(jù)的讀取是MP3播放的重要環(huán)節(jié),對(duì)后面的MP3解碼進(jìn)一步處理至關(guān)重要。CH375內(nèi)置了USB通信協(xié)議,單片機(jī)可以直接調(diào)用API庫(kù)讀寫U盤中的文件數(shù)據(jù)。CH375用于低功耗模式,工作時(shí)需要外部為它提供12MHz的時(shí)鐘信號(hào)。原理如圖9所示[5]。圖9 U盤數(shù)據(jù)讀取原理圖將8位并行數(shù)據(jù)線D0~D7與單片機(jī)的P0口相連實(shí)現(xiàn)數(shù)據(jù)與命令的并行傳輸,RD,WR,CS,INT和A0五根控制線分別連接至單片機(jī)的的對(duì)應(yīng)引腳,CH375的TXD引腳通過(guò)1K的下拉電阻接地,使CH375工作于USB主機(jī)并行接口方式。單片機(jī)通過(guò)RD,WR,片選CS、中斷INT和地址線AO的綜合控制,完成與CH375的通訊,通過(guò)USB接口實(shí)現(xiàn)從U盤讀寫數(shù)據(jù)的功能。INT引腳和MCU的外部中斷輸入引腳相連,當(dāng)有U盤插入時(shí)INT變?yōu)榈碗娖接|發(fā)外部中斷,當(dāng)RD為高電平,且CS,WR和AO都為低電平時(shí),D7~DO上的數(shù)據(jù)被寫入CH375芯片中;當(dāng)RD為高電平,且CS和WR都為低電平,AO為高電平時(shí),D7~DO中的數(shù)據(jù)可作為命令碼寫入CH375芯片中;當(dāng)WR為高電平,且CS,RD和AO都為低電平時(shí),CH375中的數(shù)據(jù)可以通過(guò)D7~DO輸出。子程序庫(kù)對(duì)U 盤文件的讀寫方式分為兩種:扇區(qū)模式和字節(jié)模式。本設(shè)計(jì)采用的是字節(jié)模式。字節(jié)模式下,以字節(jié)為基本單位對(duì)U 盤文件進(jìn)行讀寫,讀寫速度較慢,但是不需要額外的文件數(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)行有限次擦寫)。查看子程序庫(kù)的全局變量“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)閉文件后再重新打開(kāi)才能恢復(fù)扇區(qū)模式),支持以字節(jié)為單位的操作子程序CH375ByteRead 和CH375ByteWrite 及CH375ByteLocate[6]。對(duì)于已打開(kāi)的同一個(gè)文件,不能混用兩種模式的操作子程序。下面是單片機(jī)針對(duì)U盤的以字節(jié)為單位進(jìn)行讀寫操作的流程,如圖10所示。在流程中涉及到的參數(shù)如下:,包括完整的路徑名;;[6,7];。圖10 U盤數(shù)據(jù)讀取流程圖 VS1003模塊的MP3文件播放程序設(shè)計(jì)系統(tǒng)上電啟動(dòng)后,由單片機(jī)控制將存儲(chǔ)于U盤中歌曲的MP3數(shù)據(jù)格式流信息通過(guò)CH375的USB接口芯片送入到VSl003芯片中,通過(guò)VSl003芯片解碼及其內(nèi)含高質(zhì)量的立體聲DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放,在按鍵的控制下,可實(shí)現(xiàn)對(duì)歌曲的選擇、音量增減等功能。VSl003的所有數(shù)據(jù)和控制命令均通過(guò)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í)被寫入。寫命令的過(guò)程如下:(1)等待DREQ為高(當(dāng)DREQ為低時(shí),說(shuō)明VS1003芯片還沒(méi)有就緒)(2)將XCS(命令片選)拉低(3)寫入0x02(寫操作命令)(4)寫入寄存器地址(5)分別寫入數(shù)據(jù)的高字節(jié)與低字節(jié)(6)將XCS置高初始化的過(guò)程如下:(1)硬件復(fù)位:接X(jué)RESET拉低(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)設(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é)的無(wú)效數(shù)據(jù),用以啟動(dòng)SPI發(fā)送對(duì)VS1003的初始化與測(cè)試都通過(guò)后,就可以給它發(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)等待DREQ為高(3)通過(guò)SPI寫入數(shù)據(jù)(4)在文件沒(méi)有結(jié)束前不斷重復(fù)2與3操作(5)在所有的數(shù)據(jù)都發(fā)送完畢后,最后發(fā)送2048個(gè)無(wú)效字節(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ù),然后檢測(cè)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)音樂(lè)斷斷續(xù)續(xù)的情況。圖11 MP3文件播放流程圖 系統(tǒng)流
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1