• 【毕业设计】基于单片机的MP3设计与实现 - stm32



    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
    #include
    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();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    单片机-嵌入式毕设选题大全及项目分享:

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


    6 最后

  • 相关阅读:
    Android Radio实战——打开Tuner(十八)
    探索 LinkedList 原理
    java中锁的面试题
    101 本地存储
    记一次 .NET 某传感器采集系统 线程爆高分析
    算法题:383.救赎金
    淘宝关键词API接口
    word操作:单独调整英文字体
    STM32F10x SPL V3.6.2 集成 FreeRTOS v202112
    ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/125689959