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

正文內(nèi)容

基于單片機(jī)的mp3播放器設(shè)計(jì)畢業(yè)設(shè)計(jì)-資料下載頁

2025-06-03 08:53本頁面
  

【正文】 case SELECTSONG : //如果處于 MP3 選曲功能 { if(NowPlaying==(NumofSong1)) NowPlayiing=0。 //如果已經(jīng)處于最后一首了,則指向第一首 else NowPlaying++。 //否則,指向下一首 ChangeSong=1。 //置選曲標(biāo)志位 break。 } default:break。 } } 3) Previous,向前。此鍵的功能與 Next 正好相對(duì)應(yīng)。源代碼如下: void previous() //按下“上一首 /音量增大”鍵時(shí)的處理 { switch(CurrentFun){ case VOLUME : //如果當(dāng)前處于音量調(diào)節(jié)功能 { if(MP3VOR0x1f) //當(dāng)前音量沒有達(dá)到最大時(shí) { MP3VOR+=0x01。 //右聲道音量增大一檔 MP3VOL+=0x01。 //左聲道音量增大一檔 } break。 } case EFFECTION: //如果處于音效調(diào)節(jié)功能 { If(MP3BAS0x1d){ //增加重音效果 MP3BAS+=7。 MP3MED=0x0f。 MP3TRE=7。 } break。 case SELECTSONG : //如果處于 MP3 選曲功能 { if(NowPlaying0)NowPlaying。 //如果當(dāng)前播放歌曲不為第一首,則指向上一首 else NowPlaying=NumofSong1。 //如果當(dāng)前已經(jīng)到達(dá)第一首,則指向最后一首 ChangwSong=1。 //置選曲標(biāo)志位 break。 } default:break。 } } 4) Play Pause,播放 /暫停。每當(dāng)按下此鍵時(shí),改變一下播放狀態(tài),配合在 MP3 播放函數(shù)中對(duì)此狀態(tài)的判斷,可以實(shí)現(xiàn) MP3 播放過程中的暫停。 源代碼如下: void PlayPause() { PlayState=!PlayState。 //按一下播放鍵時(shí),改變播放狀態(tài) } USB 通信功能程序設(shè)計(jì) USB 通信功能模塊用于對(duì) Flash 存儲(chǔ)器內(nèi)的文件進(jìn)行管理,實(shí)現(xiàn) MP3 文件的下載,由于 AT89C51SND1C 沒有外部中斷引腳, USB 中斷沒有中斷向量地址入口, USB 驅(qū)動(dòng)程序采用中斷查詢工作方式。其流程圖 如圖 43 所示。 在 USB 控制器使用前,首先對(duì)其進(jìn)行初始化,然后在主程序中循環(huán)讀取 USB 斷電中斷寄存器,當(dāng)查詢到有中斷產(chǎn)生時(shí)則進(jìn)入到相應(yīng)的中斷處理程序,開始設(shè)備配置 和數(shù)據(jù)傳輸。 程序代碼如下: include //51 單片機(jī)頭文件 include // CH375 頭文件 unsigned char CH375_RD_DAT_PORT( void ) { return( CH375_DAT_PORT )。 } void CH375_Init( ) { switch ( InterruptStatus ) { case USB_INT_BUS_RESET1: //USB 總線復(fù)位 { break。 } case USB_INT_BUS_RESET2: //USB 總線復(fù)位 { break。 } case USB_INT_BUS_RESET3: //USB 總線復(fù)位 { break。 } case USB_INT_BUS_RESET4: //USB 總線復(fù)位 { break。 } case USB_INT_EP0_SETUP: { //端點(diǎn) 0 的接收器接收到數(shù)據(jù), SETUP 事務(wù)成功,內(nèi)部固件模式時(shí)不需要處理 break。 } case USB_INT_EP0_OUT: { //端點(diǎn) 0 的接收器接收到數(shù)據(jù), OUT 事務(wù)成功,內(nèi)部固件模式時(shí)不需要處理 break。 } case USB_INT_EP0_IN: { //端點(diǎn) 0 的發(fā)送器發(fā)送完數(shù)據(jù), IN 事務(wù)成功,內(nèi)部固件模式時(shí)不需要處理 break。 } case USB_INT_EP2_OUT: //批量端點(diǎn) /端點(diǎn) 2 接收到數(shù)據(jù), OUT 成功 { //從當(dāng)前 USB 中斷的端點(diǎn)緩沖區(qū)讀取數(shù)據(jù)塊 ,并釋放緩沖區(qū) CH375_WR_CMD_PORT( CMD_RD_USB_DATA )。 length = CH375_RD_DAT_PORT( )。 /* 首先讀取后續(xù)數(shù)據(jù)長(zhǎng)度 */ for ( i = 0。 i length。 i ++ ) buffer[ i ] = CH375_RD_DAT_PORT( )。 //接收數(shù)據(jù)包 /* 測(cè)試數(shù)據(jù)正確性 ,將接收到的命令包數(shù)據(jù)返回給 PC 機(jī) */ CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 )。 /* 向 USB 端點(diǎn) 2 的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */ CH375_WR_DAT_PORT( length )。 /* 首先寫入后續(xù)數(shù)據(jù)長(zhǎng)度 ,回傳剛接收到的數(shù)據(jù)長(zhǎng)度 */ for ( i = 0。 i length。 i ++ ) CH375_WR_DAT_PORT( buffer[ i ] )。 /* 數(shù)據(jù)返回 ,由計(jì)算機(jī)應(yīng)用程序測(cè)試數(shù)據(jù)是否正確 */ /* */ break。 } case USB_INT_EP2_IN: //批量端點(diǎn) /端點(diǎn) 2 發(fā)送完數(shù)據(jù), IN 成功 { CH375_WR_CMD_PORT( CMD_UNLOCK_USB )。 //釋放當(dāng)前 USB 緩沖區(qū) break。 } default: { CH375_WR_CMD_PORT( CMD_UNLOCK_USB )。 break。 } } } main( ) { Delay50ms( )。 CH375_Init( )。 //對(duì) CH375/CH372 初始化 EA = 1。 //允許中斷 while(1)。 } 圖 43 USB 通信功能程序流程圖 5 結(jié)論 本次設(shè)計(jì)我采用的是 AT89C51SND1C 單片機(jī)為核心展開對(duì) MP3 播放器的設(shè)計(jì),在AT89C51SND1 的 64KFlash 中,其中地址在 F000~FFFF 的區(qū)域?yàn)?4K 字節(jié)的 Boot Flash,這部分程序是出廠時(shí)已經(jīng)固化的 Boot Loader 代碼,它使用 DFU(設(shè)備固件升級(jí))協(xié)議來更新芯片 Flash 存儲(chǔ)器中的用戶程 序。有兩種方式可以使得芯片在上電復(fù)位后執(zhí)行 Boot Flash 中的這段程序:一是當(dāng)芯片中的 BLJB 位為 1 時(shí),上電即執(zhí)行這段代碼;二是當(dāng) BLJB位不為 1 時(shí),如果在復(fù)位后芯片檢測(cè)到引腳 ISP 為低時(shí),也會(huì)執(zhí)行這段程序。在輸入程序時(shí), AT89C51SND1 自帶 USB 接口,可對(duì) Flash 進(jìn)行在線編程,不需要硬件燒寫器就可以下載目標(biāo)代碼到芯片中,這樣大大的降低了這次畢業(yè)設(shè)計(jì)的成本 。 在硬件部分, 首先由復(fù)位電路和晶振電路與單片機(jī)構(gòu)成最小系統(tǒng),由最小系統(tǒng)為核心展開對(duì)外圍電路的設(shè)計(jì),這樣會(huì)大大減少設(shè)計(jì)電路的難度。 由于設(shè)計(jì)所需 電源為 ,而外接電源為 5V,因此,要在設(shè)計(jì)中加上可調(diào)輸出電源電路部分,在設(shè)計(jì)中我采用 AS1117低壓差線性穩(wěn)壓器,不僅僅它可以將 5V 電壓轉(zhuǎn)換為設(shè)計(jì)所需要的 電壓,它還具有開始 初始化 USB 時(shí)鐘 讀取中斷寄存器狀態(tài) 是否有端點(diǎn)產(chǎn)生中斷 中斷寄存器清零 相應(yīng)的中斷服務(wù)子程序 是 否、否 完善的過流保護(hù)和過熱保護(hù)功能,可以很好的保護(hù)電路;在 D/A 轉(zhuǎn)換電路部分,我選用CS4331 將解碼后的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。 AT89C51SND1C 從 Flash 中讀取數(shù)據(jù)之后,將 MP3 格式的音樂在其內(nèi)部進(jìn)行硬件解碼為二進(jìn)制數(shù)據(jù), 之后通過 D/A 轉(zhuǎn)換器 CS4331來對(duì)這些數(shù)據(jù)進(jìn)行數(shù)模轉(zhuǎn)換,轉(zhuǎn)換成人耳可以接受的音樂。 CS4331 在改善音頻質(zhì)量,降低信噪比等方面都很好,可以減少信號(hào)的失真 。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1