天天看點

【畢業設計】基于單片機的MP3設計與實作 - stm321 簡介2 主要器件3 實作效果4 設計原理5 部分實作代碼6 最後

文章目錄

  • 1 簡介
  • 2 主要器件
  • 3 實作效果
  • 4 設計原理
    • 核心算法:音頻解碼流程
  • 5 部分實作代碼
  • 6 最後

1 簡介

Hi,大家好,這裡是丹成學長,今天向大家介紹一個學長做的單片機項目

基于單片機的MP3設計與實作

大家可用于 課程設計 或 畢業設計

單片機-嵌入式畢設選題大全及項目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

2 主要器件

對于便攜式 MP3 系統, 主要考慮的是其體積小巧、 低功耗、 高容量、 低價格, 一個 MP3 播放器主要應包括:

  • (1) 單片機控制系統
  • (2) 大容量的移動儲存設備
  • (3) MP3 解碼器
  • (4) D/A 轉換晶片
  • (5) 音頻放大電路
  • (6) USB 接口
  • (7) LCD 顯示和鍵盤電路
【畢業設計】基于單片機的MP3設計與實作 - stm321 簡介2 主要器件3 實作效果4 設計原理5 部分實作代碼6 最後

3 實作效果

【畢業設計】基于單片機的MP3設計與實作 - stm321 簡介2 主要器件3 實作效果4 設計原理5 部分實作代碼6 最後

4 設計原理

學長主要實作一個 MP3 播放器的功能, 由于涉及檔案傳輸和存儲問題, 是以附帶需要實作 USB 存儲器的功能。 整個系統由 AT89C51SND1C(MCU)、 K9F2808U0A(Flash 晶片), 電源部分、 音頻部分、 串行通信部分和人機接口部分組成。

  • MCU 部分: 控制整個系統, 提供 USB 控制和 MP3 解碼功能;
  • Flash 晶片: 存放系統檔案;
  • 電源部分: 提供系統工作所需要的電源, 包括 1 個升壓和 1 個降壓部分;
  • 音頻部分: 把資料流轉化為聲音信号;
  • 人機接口部分: 包括按鍵和 LED 訓示等等

為了友善調試, 系統中還提供了串行通信部分, 在這個部分中主要詳細介紹電源、

音頻部分。

  • 電源部分: 整個開發闆上所有晶片統一采用 3. 3 伏供電, 對開發闆的供電采取 2

    種形式: USB 供電和 7 号電池供電。

  • USB 供電模式: USB 供電參數如下: USB 接口提供 5V 電壓和 200mA 電流, Imax=500mA;
  • PC 機為 500mA; 筆記本電腦為 100mA。

核心算法:音頻解碼流程

【畢業設計】基于單片機的MP3設計與實作 - stm321 簡介2 主要器件3 實作效果4 設計原理5 部分實作代碼6 最後

5 部分實作代碼

解碼程式
頭檔案
#define unit nusingned int
#define uchar unsingned char
#define MP3_ON 1
#define MP3_OFF 0
Bit MP3 _Switch
Uchar Key_Vol
Uchar Key_Bas
Uchar Key_Med
Uchar Key_Tre
//以上為鍵盤讀入的聲音控制參數
//MP3COM 寄存器内部位定義
sbit MPEN=MP3CON^7
sbit MPBBST= MP3CON^6
sbit CRCET=MP3CON^5
sbit MSKANC=MP3CON^4
sbit MSKREQ=MP3CON^3
sbit MSKLAY=MP3CON^2
sbit MSKSYN=MP3CON^1
sbit MSKCRC=MP3CON^0
//MP2STA1 寄存器内部位定義
sbit MPFREQ=MP3STA1^4
sbit MPFREQ=MP3STA1^3
Mp3_Reg_Init();
Mp3_Data_Input();
Mp3_Error_Del()
Mp3_Clk_Set()
Mp3_Audio_Contr()
Mp3_AncData_Del()
void Mp3_Int_Del()
解碼程式
#include<mp3_contr.h>
#include<regsnd1.h>
Mp3_Reg_Init()
{
If(MP3_Switch= = MP3_ON)
{ MP3CON=0xBF;
}
else MP3CON=px3F;
}
MP3_Data_Input()
{
If ((MPFREQ= =1 )&&(MPBREQ= =1)= =1)
{
MP3DAT= MP3_Data;
}
}
MP3_Error_Del()
{
If(ERRLAY= =1)
{
//提示
}
If(ERRCRC= =1)
{
// go on
}
//以上兩部分對應的錯誤提示使用者可以自行根據系統進行設定
If(ERRSYN= =1)
{
MP3_Data_Input();
}
}
MP3_Clk_Set()
{
If(MPVER= =1)
{
MP3CLK=0
}
Else
{
MP3CLK=1;
}
}
MP3_Audio_Contr()
{
MP3VOL = Key_Vol;
MP3VOLR= Key_Yol;
MP3MED = Key_Med;
MP3TRE = Key_Tre;
MP3BAS = Key_Bas;
}
MP3_AncData_Del()
{
//留出接口供調用
}
Void MP3_Int_Del() interrupt 5 using 2
{if(MPREQ= =1)
//缺少資料
{
MP3_Data_Input();
}
else if(MPANC= =1)
//處理附加資料
{
MP3_AncData_Del();
}
eles MP3_Error_Del();
}

           

單片機-嵌入式畢設選題大全及項目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052

6 最後

繼續閱讀