基于Stm32的MP3播放器设计与实现
原创博文,转载请注明出处
这是我高级电子技术试验课做的作业,拿来共享一下。项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程。当然用的板子也是安福莱的板子,因为算起来总共做了也没几天,技术含量嘛,一般般,大家不喜勿喷。如果你正在学习stm32,希望能帮助到你。
项目代码已提交到我的github,点击进入。
下面是一些简单的介绍。
摘 要
Cortex-M3是ARM公司为要求高性能(1.25 Dhrystone MIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。
本报告给出一个由STM32、普通SD卡、VS1003B硬件解码芯片以及其他外围器件构成的MP3播放器。系统采用ARM Cortex-M3内核的STM32F103ZE作为微控制器,结合VS1003B音频解码芯片,SD卡存储器,TFT液晶显示屏等外围设备,以及FAT文件操作,设计并实现了可以控制暂停、播放、静音、删除、选择歌曲和调整音量的MP3播放器。本报告从硬件设计和软件设计两个方面对该MP3播放器的工作过程做了详尽分析。
关键词:STM32F103ZE、VS1003、FAT、Fonts、SD卡、MP3播放器
1、设计目的
MP3是MPEG Audio Layer3的简称,其实就是一种音频压缩技术。通过这个技术,MP3可以把音乐以1:10甚至1:12的压缩率压缩,从而大大降低了音乐文体的体积。由于MP3体积小,音质高的特征,所以MP3格式的音乐被广泛传播。
本次实验的目的是通过制作一个MP3播放器有助于我们更加了解对STM32、SPI接口、SD卡、TIMER、中断、FAT文件系统、VS1003B解码器的应用。
2、设计任务与性能指标
整个系统的功能实现包括:
1、SD卡读写
2、FAT文件系统
3、LCD人界界面
4、MP3文件播放
对于播放器的歌曲控制功能则包括暂停、播放、静音、删除、选择歌曲和调整音量。
3、系统总体设计与工作原理
STM32嵌入式MP3播放器由微处理器STM32F103ZE、SD卡、I2S音频DAC、VS1003B音频解码芯片、电源电路、晶振电路、复位电路、SPI总线、RS232串口、功能按键、指示灯、JTAG接口及各种扩展接口组成。
整个系统模块分为四个模块:MCU主芯片、CPU外围电路、VS1003B音频解码芯片、TFT液晶显示。MCU是STM32主芯片的最小板,上面有芯片工作需要的最小资源:时钟控制电路、复位电路、JTAG控制口以及与外围电路的接口。CPU外围电路上集成了稳压电源、滤波电路、SD卡、与液晶及音频解码芯片的连接电路。VS1003B和液晶分别是单独的音频解码芯片、控制显示部分。
整个系统的工作原理:STM32F103ZE微控制器首先对硬件设备进行初始化,然后读取SD卡中的音乐文件,并将数据送入VS1003B进行音频解码,得到模拟的音乐流,从而实现MP3的播放功能,同时结合TFT显示屏和功能按键实现了人机交互。
系统框图如下:

基于Stm32的MP3播放器设计与实现的更多相关文章
- 基于GStreamer编写Mp3播放器
一.简介 作者系统为CentOS6,本文在此基础上对Mp3播放器进行开发,需要使用mp3解码库libmad和gstreamer0.10-plugins-ugly,详细步骤如下. 二.操作步骤 1) ...
- 你用java的swing可以做出这么炫的mp3播放器吗?
这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...
- MP3播放器团队项目
一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...
- 基于ffmpeg的C++播放器1
基于ffmpeg的C++播放器 (1) 2011年12月份的时候发了这篇博客 http://blog.csdn.net/qq316293804/article/details/7107049 ,博文最 ...
- x宝23大洋包邮的老式大朝华MP3播放器简单评测
(纯兴趣测评,非广告) 最近逛X宝,看到了这个古董级MP3播放器居然还在售,于是脑抽+情怀泛滥买了一个. 然后呢,从遥远的深圳跨越好几千公里邮过来了这个玩意: 那节南孚5号电池是我自己的,是为了对比一 ...
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- 基于jQuery虾米音乐播放器样式代码
分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div c ...
- 团队编程--MP3播放器
设计思路: 这次的作业是一个MP3播放器,它是一个团队项目.由于我们都没接触过这类的编程.刚开始的时候我们是不知道从什么地方着手的.经过我们的商量我们决定从现在市场主流的音乐播放器上找到几个主要的功能 ...
- 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...
随机推荐
- C++定义自己的命名空间和头文件
下面的例子演示如何使用一个简单的演示空间和自己的头文件定义.码如下面: compare.h: namespace compare{ double max(const double* data,int ...
- ubuntu分屏终端
一:更新source 列表: 将/etc/apt/sources.list的镜像源改为网易源:http://mirrors.163.com/ubuntu/dists/ deb http://mirro ...
- 自定义Data Service Providers
自定义Data Service Providers 作者:AlexJ 翻译:谈少民 原文链接:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data ...
- NYOJ 904 search(stable_sort函数的应用)
描述 游戏积分的排行榜出来了,小z想看看得某个积分的人是谁.但是由于人数很多,他自己找很浪费时间,所以他想请你帮忙写一个程序,能快速的帮他找到他想要找的人 输入 多组测试数据,第一行有一个数T,表 ...
- Spring搭建MVC WEB项目[转]
原文链接:http://blog.csdn.net/initphp/article/details/8208349 1.创建一个web项目 2.假设,我们已经安装完毕Spring所需要的依赖包,以及一 ...
- .NET 中易混淆的概念(Delegate vs Event)
事件(event)是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以及处理操作系统的各种事件.所谓事件就是 由某个对象发出的消息.比如用户按下了某个按钮,某个文件 ...
- HTML在Select具体的使用说明
<html> <head> <SCRIPT LANGUAGE="JavaScript"> <!-- //oSelect 列表的底部加入了一 ...
- linux_后台启动多个java -jar 程序,及关闭
启动脚本 startup.sh #!/bin/bash x=$(($)) )) do java -jar /home/chenpenghui/crawler/crawler-hb/StartUpIp. ...
- mysql 数据库插入语句之insert into,replace into ,insert ignore
近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into t ...
- ShellExecuteEx的使用方法
关于怎样在c++中启动外部的exe程序,之前看到在百度一搜就看到了: ShellExecute(this->m_hWnd,"open","calc.exe" ...