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

正文內容

基于單片機的mp3播放器設計word格式-資料下載頁

2025-11-28 09:23本頁面

【導讀】分析以以C51內核單片機為核心,完成一個MP3播放器的設計。4月初——4月中旬對MP3解碼器的基本設計結構有所掌握。5月初——6月初系統(tǒng)調試并完成說明書的寫作,準備答辯。此時間安排可根據對課題的掌握情況適當調整。MP3是MPEG一1音頻層Ⅲ的簡稱。MPEG音頻是目前普遍應用的音頻壓縮標準,其中。低數據量和高播放品質的優(yōu)點使其成為音樂存儲、數字廣播、網上音樂傳輸的主要方。單片機是一種集成電路芯片,采用超大規(guī)模技術把具有數據處理能力(如算術運算,邏輯運算,數據傳送,中斷處理)的微處理器,隨即存取數據處理器,只讀程序存儲器,A/D轉換器等電路集成到一塊單塊芯片上,構成一個最小而又完善的計算機系統(tǒng)。軟件的設計,并給出了一套完整的解決方案,實現了單片機音樂播放器對音樂的演奏。

  

【正文】 有上電復位和手動按鈕復位兩種形 式, RST/VPD 端的高電平直東北林業(yè)大學畢業(yè)設計 18 接由上電瞬間產生高電 平則為上電復位;若通過按鈕產生高電平復位信號成為手動按鈕復位。 圖 311 為兼有上電復位與按鈕復位的電路。圖中,上電瞬間 RST 端的電位與 Vcc 相同,隨著電容充電電流的減小, +5V 立即加到了 RST/VPD 端,該高電平使單片機復位。若運行過程中,需要程序從頭開始執(zhí)行,這只需按圖中的按鈕即可。按下按鈕則直接把+5V 加到了 RST/VPD 端從而復位,這稱為手動復位。在實際應用系統(tǒng)中,有些外圍芯片也需要復位,如果這些復位端的復位點評要求與單片機的要求一致,則可以與之相連。 圖 311 復位電路 單片機晶振電路 單片機系統(tǒng)里都有晶振,在單片機系統(tǒng)里,晶振作用非常大,它結合單片機內部電路產生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片機的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率。在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內調整頻率,成為壓控振蕩器。晶振用一種能把電能和機械能相互轉化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定、精確的單頻震蕩。 單片機晶振的作用是為 系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,以便各部分保持同步。有些通訊系統(tǒng)的基頻和 射頻使用不同的晶振,而通過電子調整頻率的方法保持同步。電路圖如 圖 312 所示 : 圖 312 晶振電路 東北林業(yè)大學畢業(yè)設計 19 系統(tǒng)整體電路圖如圖 313 所示: 圖 313 整體電路圖 東北林業(yè)大學畢業(yè)設計 20 4 MP3 播放器軟件設計及實現 MP3 播放器播放功能的設計 MP3 播放程序設計要與鍵盤配合起來使用。在主程序中,如果已經處于播放狀態(tài),則調用 Play MP3 程序播放歌曲,直至播放到最后一首。在 Play MP3 程序里面 , MP3 解碼器一旦開始工作以后,就會一直向 CPU 請求數據,直至歌曲結束。如果用戶想切換歌曲,則可直接按暫停鍵,這樣此程序函數就會提前結束,進入下一首歌曲的播放。 其播放流程圖如 圖 41 所示 : 圖 41 播放器播放過程流程圖 產生數據請求中斷 需要讀 下一個扇區(qū)的數據 當數據已經不足一扇區(qū) 結束當前歌曲,指向下一首歌曲 讀出一個新的扇區(qū) 繼續(xù)往解碼器中送數據 是否按了暫停鍵 等待再次按下暫停鍵 否、否 是 是 是 是否單擊“選曲”按鈕 是 否 否 否 否 是 向 CPU 請求數據 東北林業(yè)大學畢業(yè)設計 21 當產生數據請求 時,程序判斷是否產生請求中斷,當產生了請求中斷時,數據讀取失敗。 如果數據請求未產生中斷,重新載入數據。產生中斷后,程序讀取下一個扇區(qū)中的數據,如果程序不需要再讀取下一扇區(qū)的數據,則將數據送入解碼器中。當讀取到的數據已經不足一扇區(qū)時,結束當前所播放的歌曲,讀取下一首歌曲的數據;如果所讀取的數據 超過一扇區(qū),則將數據存入另一個扇區(qū),并讀取這個扇區(qū)的數據。將讀取后的數據送入解碼器中,解碼時,通過鍵盤控制。 當鍵盤位于暫停狀態(tài)時,解碼器暫時不工作,等待再次按下暫停鍵后繼續(xù)解碼。在播放過程中,如果需要選擇播放的歌曲時,按下選曲按鈕則結束當前播放的歌曲,進入所選歌曲的播放過程。 其主要程序代碼為: Void playMP3(unsigned char *SongName) { Int i=0,j=0。 //First 1024 Byte MP3 Data m=ReadSector(SongName,Page_Buf) 。//從當前歌曲中讀取 512 字節(jié) if(MP3STA1amp。MPFREQ) //解碼器數據請求中斷產生時 { For(i=0。i1024。i++) //第一次要向解碼器緩存中置入 1024 字節(jié) { if(j==512) //當用完 512 字節(jié)時 { m=ReadSector(SongName,Page_Buf)。 //讀取當前歌曲的下一個 512 字節(jié) j=0。 } MP3DAT=Page_Buf[j++]。 //向 MP3 解碼器數據寄存器送入一個數 while(!PlayState)。 //如果是暫停狀態(tài)則等待 while(ChangeSong) {DataRead=0。ChangeSong=0。return。} //如果選曲時,則重新播放當前曲目 while(!(MP3STA1amp。MPBREQ))。 //等待中斷再次產生 } } //Other MP3 data while(1){ while(MP3STA1amp。MPFREQ) {0 解碼器數據請求中斷產生時 if(j==512) {//當用完 512 字節(jié)時 j=0。 if(m512) {NowPlaying++。return。} //如果上一次從歌曲中讀取的數據 //不足 512 時,則結束本歌曲播放 m=ReadSector(SongName,Page_Buf)。 //讀取當前歌曲的下一個 512 字節(jié) } MP3DAT=Page_Buf[j++]。 //向 MP3 解碼器數據寄存器送入一個數 while(!PlayState)。 //如果是暫停狀態(tài)則等待 東北林業(yè)大學畢業(yè)設計 22 while(ChangeSong) {DataRead=0。ChangeSong=0。return。} //如果選曲時 ,則重新播放當前曲目 while(!(MP3STA1amp。MPBREQ))。 //等待中斷再次產生 } MP3 功能按鈕設計 當執(zhí)行 MP3 程序的時候,需要通過按鍵操作來控制 MP3 歌曲的播放, 當 鍵盤響應流程圖如 圖 42 所示。 圖 42 鍵盤相應流程圖 每個鍵對應了一個鍵盤響應函數。 1) Func,功能切換。功能切換的作用是設置功能狀態(tài)。沒按下一次此鍵,則功能狀態(tài)計數器在 1~ 3 之間輪換。 源代碼如下: void Func() { if(CurrentFun3) CurrentFun++。//在選曲 /音量調節(jié) /音效調節(jié)三者之間切換 else if(CurrentFun==3) CurrentFun==1。 } 2) Next,向后。根據所處功能狀態(tài)的不同,按下此鍵時,將進行不同的操作,進而可以實現不同的功能。當處于“音量控制( VOLUME)”狀態(tài)時,則改變音量寄存器的值,從而控制音樂音量。當處于“音效( EFFECTION)”狀態(tài)時,則改變音產生鍵盤中斷 判斷哪個鍵被按下 播放 向前 向后 功能切換 置播放 /暫停狀態(tài) 根據所處功能不同設置不同寄存器的值 切換功能 清中斷標志,等待下一次中斷 東北林業(yè)大學畢業(yè)設計 23 效寄存器的值。而如果處于“選曲 ( SELECTSONG)”狀態(tài)時,則切換到當前MP3 歌曲列表中的下一曲。 源代碼如下: void Next() //按下 *下一首 /音量減小 *鍵時的處理 { switch(CurrentFun){ //如果當前處于音量調節(jié)功能 case VOLUME : { if(MP3VOR0x00) //當前音量沒有達到最小時 MP3VOR=0x01。 //右聲道音量增大一檔 MP3VOL=0x01。 //左聲道音量增大一檔 } break。 } case EFFECTION : //如果出于音效調節(jié)功能 { If(MP3BAS7){ //降低重音效果 MP3BAS=7。 MP3MED=0x0f。 MP3TRE+=7。 } break。 } case SELECTSONG : //如果處于 MP3 選曲功能 { if(NowPlaying==(NumofSong1)) NowPlayiing=0。 //如果已經處于最后一首了,則指 向第一首 else NowPlaying++。 //否則,指向下一首 ChangeSong=1。 //置選曲標志位 break。 } default:break。 } } 3) Previous,向前。此鍵的功能與 Next 正好相對應。源代碼如下: void previous() //按下“上一首 /音量增大”鍵時的處理 { switch(CurrentFun){ case VOLUME : //如果當前處于音量調節(jié)功能 { if(MP3VOR0x1f) //當前音量沒有達到最大時 { MP3VOR+=0x01。 //右聲道音量增大一檔 MP3VOL+=0x01。 //左聲道音量增大一檔 } 東北林業(yè)大學畢業(yè)設計 24 break。 } case EFFECTION: //如果處于音效調 節(jié)功能 { If(MP3BAS0x1d){ //增加重音效果 MP3BAS+=7。 MP3MED=0x0f。 MP3TRE=7。 } break。 case SELECTSONG : //如果處于 MP3 選曲功能 { if(NowPlaying0)NowPlaying。 //如 果當前播放歌曲不為第一首,則指向上一首 else NowPlaying=NumofSong1。 //如果當前已經到達第一首,則指向最后一首 ChangwSong=1。 //置選曲標志位 break。 } default:break。 } } 4) Play Pause,播放 /暫停。每當按下此鍵時,改變一下播放狀態(tài),配合在 MP3 播放函數中對此狀態(tài)的判斷,可以實現 MP3 播放過程中 的暫停。 源代碼如下: void PlayPause() { PlayState=!PlayState。 //按一下播放鍵時,改變播放狀態(tài) } USB 通信功能程序設計 USB 通信功能模塊用于對 Flash 存儲器內的文件進行管理,實現 MP3 文件的下載,由于 AT89C51SND1C 沒有外部中斷引腳, USB 中斷沒
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1