毕业设计 - 基于单片机的MP3设计与实现

2023-10-26


1 简介

Hi,大家好,今天向大家介绍一个学长做的单片机项目

基于单片机的MP3设计与实现

大家可用于 课程设计 或 毕业设计

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();
}

6 最后

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

毕业设计 - 基于单片机的MP3设计与实现 的相关文章

  • ChatGPT-4.5:AI技术的最新进展

    文章目录 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 OpenAI最新发布的GPT 4 在聊天机器人的功能上取得了显著的改进 虽然GPT 4仍处于早期阶段 但有传言
  • 在阿里云Ubuntu中使用coturn创建和配置您自己的STUN/TURN服务

    1 前言 此前rtsp转webRTC的本地服务运行的不错 但是使用的某个免费stun服务突然被关停了 造成一些rtspToWebRTC的服务受到影响 因此 目前打算在我闲置的阿里云服务器上搭建stun turn服务 我的域名xiaoyaoy
  • openssl的RSA加密(base64编码)

    openssl的RSA加密 base64编码 同AES加密 开头先给出openssl实现base64编码代码 base64编码 解码 Function base64Encode Description base64 编码 Input 1 i

随机推荐

  • Python:pandas groupby实现类似excel中averageifs函数的功能

    从exccel切换到python进行数据处理 处理的主要还是excel的思路 希望实现类似excel中某个函数的功能 日常主要参考蓝鲸的 从excel到python 目前在做一些统计指标 excel中用了countifs sumifs和av
  • VBA学习基础之1.4条件语句

    VBA学习基础之条件语句 1 4 1 If Then 一个if语句由一个布尔表达式和一个或多个语句组成 如果条件被评估为True 则执行If条件块下的语句 如果条件被评估为False 则执行If循环块后面的语句 If boolean exp
  • Leetcode169.多数元素——摩尔投票

    文章目录 引入 摩尔投票 引入 Leetcode上有如下的题 169 多数元素 给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 示例
  • 批量提取PDF和图片发票信息 2.2

    人工录入发票信息真的好烦 有什么软件可以快速解决这个问题吗 那天看到这个问题后 自己写了一个批量提取发票信息的小软件 打开软件之后 选择大量发票文件所在的文件夹就可以了 会自动把发票识别的结果输出为一个Excel 文件 应较多使用者的提议
  • 面试小结

    百度内推一面 1 深浅拷贝 2 const char char const 3 对象的复制拷贝 注意的四个点 初级 高级程序员做法4 介绍项目 5 函数指针 指针函数 6 给定二叉树的前序和中序确定二叉树 前序和后续不能确定 7 SVM分类
  • yum安装dhcp安装包时报错的解决办法([Errno 256] No more mirrors to try.-----或者睡眠中)

    安装环境 CentOS 7 6 问题描述1 报错 无法安装 root localhost yum y install dhcp 已加载插件 fastestmirror langpacks Loading mirror speeds from
  • vue3(1)

    Vue3 0 了解vue3 0 1 简要了解 Vue js 3 0 one Piece 正式版再20年9月份发布 Vue3支持vue2的大多数特性 更好的支持TS 性能提升 打包大小减少41 初次渲染快55 重新渲染快133 内存减少54
  • VSCode: Conda activate base error - The term “conda“ is not recongised

    If you have your Anaconda installed and your VSCode can recognize it in interpreter selection like below then do not bot
  • mac os x 下五款播放器评测

    OS X上到底要用哪款播放器是永恒的主题 就我个人而言 1 4的Mac使用时间是在动漫中度过的 所以用过很多款视频播放器 比较多人用的播放器有QuickTime Movist MPlayerX VLC 射手影音 所以简单做个评测 评分带有主
  • 数据结构与算法:哈夫曼树与哈夫曼编码

    1 举例引入 我们先以成绩评级举例分析 一步一步的认识Haffman树和Haffman编码 分数 0 59 60 69 70 79 80 89 90 100 成绩 不及格 及格 中等 良好 优秀 所占比例 5 15 40 30 10 如果是
  • 安装系统键盘鼠标无法使用

    安装Windows原版系统 发现在BIOS中可以正常使用键盘鼠标 但是进入U盘 开始安装系统的时候键盘鼠标全部失灵 原因应该是U盘中的系统不能识别鼠标 这个大致是微软和Intel芯片之间兼容的问题 我也讲不清 直接上解决方案 我不是创造者
  • 【多人姿态估计】Alphapose_yolov8复现

    1 环境 参考此处安装docker nvidia docker https blog csdn net qq 35975447 article details 113248132 然后导入docker image https blog cs
  • 2021Java大厂面试经验分享,100%好评!

    Spring Security观后感 手绘思维脑 供参考 手绘的思维导图 是我自己根据自身的情况读完这套阿里出品的Spring Security王者晋级文档之后所绘的 相当于是一个知识的总结与梳理 我将其分为 核心组件 与 工作原理 认证流
  • 【从零开始学习C++

    目录 前言 委托构造函数 类内初始化 空指针 枚举类 总结 前言 C 的学习难度大 内容繁多 因此我们要及时掌握C 的各种特性 因此我们更新本篇文章 向大家介绍C 的新增特性 委托构造函数 委托构造函数是指一个类的构造函数调用另一个类的构造
  • 【云原生之k8s】k8s控制器

    文章目录 引言 Pod与控制器之间的关系 1 Deployment 无状态 2 SatefulSet 有状态 2 1 有状态与无状态的区别 2 2 常规service和无头服务区别 2 2 1 Service类型 2 2 2 headles
  • 未来会怎样?

    伴随Visual Studio 2008 的发布 NET 3 5也一起来了 J2EE风采依旧 Python风头正劲 未来会怎样 我们究竟要学多少新的东西才能不被日新月异的技术浪头打沉在海底 或许本不应该为了技术而技术 QQ不也很成功么 易趣
  • Docker镜像推送(push)到Docker Hub

    Docker镜像推送 push 到Docker Hub 1 Docker hub 注册账户 2 登录注册账户 随后输入账户名 密码 docker login 3 修改镜像名称 docker tag originName username o
  • n边形划分

    题目描述 已知存在n多边形 n为奇数 连接多边形所有对角线 能形成多少区域 输入描述 给定整数n 1 lt n lt 1e9 输出描述 输出区域数 对1e9 7取模 示例 输入5 输出11 include
  • 2018.09.18 atcoder Best Representation(kmp)

    传送门 思路简单不知为何调试了很久 显然要么分成n个 所有字符相同 要么分成1个 原字符串无循环节 要么分成两个 有长度至少为2的循环节 一开始以为可以直接hash搞定 后来wa了几次之后发现可以轻松举出反例于是弃了hash kmp大法好啊
  • 毕业设计 - 基于单片机的MP3设计与实现

    文章目录 1 简介 2 主要器件 3 实现效果 4 设计原理 核心算法 音频解码流程 5 部分实现代码 6 最后 1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 基于单片机的MP3设计与实现 大家可用于 课程设计 或 毕业设计