文章目錄
- 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 顯示和鍵盤電路
3 實作效果
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。
核心算法:音頻解碼流程
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