基于51单片机的音乐播放器的软件.docx
- 文档编号:27140285
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:26
- 大小:1,012.17KB
基于51单片机的音乐播放器的软件.docx
《基于51单片机的音乐播放器的软件.docx》由会员分享,可在线阅读,更多相关《基于51单片机的音乐播放器的软件.docx(26页珍藏版)》请在冰豆网上搜索。
基于51单片机的音乐播放器的软件
基于51单片机的音乐播放器的软件
**理工学院
本科生毕业设计(论文)
学院:
电子与电气工程学院
专业:
自动化
学生:
***
指导教师:
***
完成日期**年**月
**理工学院本科生毕业设计(论文)
基于51单片机的音乐播放器的软件设计
SoftwareDesignofMusicPlayerBasedon51MCU
总计:
33页
表格:
3个
插图:
15幅
**理工学院本科毕业设计(论文)
基于51单片机的音乐播放器的软件设计
SoftwareDesignofMusicPlayerBasedon51MCU
学院:
电子与电气工程学院
专业:
自动化
学生姓名:
***
学号:
***
指导教师(职称):
***
评阅教师:
完成日期:
**理工学院
NanyangInstituteofTechnology
1引言1
1.1设计背景1
1.2设计意义1
1.3理论分析与方案论证1
1.3.1理论分析1
1.3.2设计方案论证2
2系统硬件原理及概述3
2.1STC12C5A60S2处理器介绍3
2.2系统硬件电路综述3
2.2.1硬件系统总体设计方案3
2.2.2USB总线的通用接口芯片CH375电路4
2.2.3LCD12864显示电路5
2.2.4按键控制电路5
2.2.5音频解码芯片VS1003电路5
3系统软件设计6
3.1软件开发平台6
3.2系统的软件设计7
3.2.1软件总体分析7
3.2.2CH375软件系统设计10
3.2.3CH375模块的U盘数据读取程序设计11
3.2.4VS1003模块的MP3文件播放程序设计13
3.3系统流程图14
4系统调试结果及分析15
结束语18
参考文献19
附录20
致谢33
1引言
1.1设计背景
随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携不断发展。
虽然播放器与存储器的一体化设计,使MP3播放器便于携带,但与此同时他也带来了很多新的问题,比如存储容量固定。
如果想装下更多的歌曲只能去购买新的产品,造成了巨大的浪费;另一方面,一体化又限制了MP3播放器在其他领域的应用,比如车载MP3等不方便移动的播放器。
于是将存储器与播放器分离成为MP3的另一发展方向。
本设计以单片机为核心控制器,设计一个音乐播放器,主要完成U盘存储的音频文件数据提取及播放任务。
该播放器类似于个人计算机的音乐播放软件,可识别、提取U盘所存储的MP3、WMA或MIDI格式的文件并可自行完成音频解码数据处理,最后送扬声器或耳机进行播放。
通过自定义键盘设定,当有键按下时,能控制歌曲的播放或音量,并通过LCD来显示播放音乐的歌曲名,同时USB-HOST的开发也为实时数据采集的移动存储提供了价格低廉的解决方案。
本文将从软硬件方面介绍如何用单片机控制USB-HOST读取U盘中的文件并将其解码播放。
1.2设计意义
基于单片机的音乐播放器可应用于MP3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,传统的音乐播放器是利用定时器可以产生各种固定频率的方波信号,可以产生包括“Do”、“Re”、“Me”等音阶在内的各种频率声音。
将各个音阶连接在一起,便可组成一支曲子或者是演奏一段旋律,不能播放真正的MP3文件。
基于这个思想本文设计了一款特殊的“音乐播放器”,该播放器可实现MP3文件的完整播放,可以选择音量调节,曲目的切换等功能。
为了体现音乐播放过程中的效果,增加了LCD屏,可以实现歌曲名的显示。
本设计以STC12C5A60S2芯片作为主控制器,芬兰VLSI公司的VS1003作为音频解码芯片,南京沁恒公司的CH375作为USB设备接口芯片,以U盘作为媒体存储介质,LCD12864液晶屏作为显示屏,来完成音乐播放器的功能。
该设计具有四按键操作界面,界面显示友好,支持MP3、WMA和MID音乐格式,该系统支持FAT32文件系统,支持大容量U盘。
1.3理论分析与方案论证
1.3.1理论分析
针对本MP3音乐播放系统,要选择合适的控制芯片及外部芯片来实现,下面介绍一下芯片的选用。
(1)MP3解码
本设计是利用STC12C5A60S2单片机控制来实现歌曲播放功能的,但对单片机本身来说不能进行音频解码(速度与资源都不符合要求),所以只能利用外部解码芯片来实现歌曲播放功能。
MP3解码芯片常见的有VS100X系列和STA01X系列,VS系列自带DAC输出功能,而且能解码的音频格式也比较多;而STA系列需要外加DAC,使用起来多有不便,而且只能解码MP3一种格式的音乐文件。
经过比较,选用VS1003作为解码芯片,该芯片支持MP3、WMA、WAV、MIDI、等格式的解码,自带DAC输出;同时,还可以调节音量、高低音等,更重要的是它还具有MIC功能,如需要,还可以实现录音功能。
因此,选用此芯片作为解码芯片。
(2)USB设备接口芯片选用南京沁恒公司的CH375,CH375是一个USB总线的通用接口芯片,支持HOST主机方式和SLAVE设备方式。
在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU等控制器的系统总线上。
在USB主机方式下,CH375还提供了串行通信方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU等相连接。
CH375的USB主机方式支持各种常用的USB全速设备,外部单片机/DSP/MCU可以通过CH375按照相应的USB协议与USB设备通信。
(3)液晶显示采用普通单色LCD来实现,这里考虑到音乐播放显示的功能,同时兼顾成本,故选用LCD12864来实现。
该液晶屏本身带有字库功能所以,系统不需要有外部字库文件,可实现曲目的汉字显示。
(4)存储媒介,MP3播放器需要大容量的存储器来存放歌曲,可以选择Flash芯片存储、SD卡、U盘等。
如果选用Flash,则整个系统要求较多的I/O端口来读取,更重要的一点是,这样做的后果就是整个系统的容量就被固定了,扩容存在困难。
而U盘和SD卡都是不错的选择,并且U盘和SD卡均容易购买到,并且价格较为低廉,所以,存储部分选用U盘读取来实现。
1.3.2设计方案论证
通过以上的理论分析,对本设计的所有的主要芯片有了初步的了解。
本MP3播放系统以STC12C5A60S2为控制核心,不仅要管理USB总线的通用接口芯片CH375、MP3解码芯片VS1003、LCD12864液晶显示屏和按键的处理,同时还要管理USB存储设备中的文件系统,查找文件等等。
存储器里的媒体文件首先被读取到MCU的RAM中,然后又被送到解码芯片中,解码后的音频数据被还原成模拟音频,再由扬声器传出。
由于STC12C5A60S2本身不支持USB接口功能,所以MCU无法直接与电脑完成数据传输的功能,存储设备需要通过自身的接口与电脑相接。
其它芯片是通过普通I/O端口连接的。
2系统硬件原理及概述
2.1STC12C5A60S2处理器介绍
STC12C5A60S2/AD系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,有8路高速10位的A/D转换(250K/S),STC12C5A60S2引脚序列如图1所示。
图1STC12C5A60S2引脚序列
2.2系统硬件电路综述
2.2.1硬件系统总体设计方案
本设计的音乐播放器,有四个按键控制按钮:
下一曲,上一曲,音量加,音量减。
通过对按钮的控制来实现对单片机要求播放的音乐,并通过放大电路和音频设备输出声音。
同时通过LCD显示屏来显示所播放的曲目。
必要时可调节音量的大小。
硬件系统总体方框图如图2所示。
图2硬件系统总体方框图
2.2.2USB总线的通用接口芯片CH375电路
CH375芯片是一个支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式的USB总线通用接口芯片。
CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。
在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。
接线图如图3所示。
图3USB总线的通用接口芯片CH375电路接线图
CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应USB协议与USB设备通讯。
CH375内置了处理Mass-Storage海量存储设备的专用通讯协议的固件外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。
主机端点输入和输出缓冲区各64字节,支持12Mbps全速USB设备和1.5Mbps低速设备。
可自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。
通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。
并行接口包含8位数据总线,4线控制:
读选通、写选通、片选输入、中断输出。
2.2.3LCD12864显示电路
显示电路主要是LCD12864电路,它与1602显示屏接线一样,唯一的区别在于1602显示屏是字符型,只能显示数字与字符,不可以显示汉字。
12864显示屏是点阵型,可根据需求任意显示字符、数字、汉字、图形。
其接线图如图4所示。
图4LCD12864显示电路接线图
2.2.4按键控制电路
按键控制电路,其按键一与P1.0相连、按键二与P1.1相连、按键三与P1.2相连、按键四与P1.3相连。
当按键按下时接口接低电平,从而实现对音乐曲目的选择控制。
按键一接通实现上一曲更换,按键二接通实现下一曲更换,按键三接通实现音量增大操作,按键四接通实现音量减小操作,接线如图5所示。
图5按键控制电路接线图
2.2.5音频解码芯片VS1003电路
VS1003芯片是一个MP3/WMA/MIDI音频解码器和ADPCM编码器。
它包含一个高性能,自主产权的低功耗DSP处理器VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。
4个常规用途的I/O端口,一个UART,一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。
VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。
输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位ε-ΔDAC。
通过串行总线控制解码器。
VS1003电路接线如图6所示。
图6VS1003电路接线图
3系统软件设计
3.1软件开发平台
Keil是德国Keil公司(现已并入ARM公司)开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVision)将这些功能组合在一起。
uVision当前最高版本是uVision4,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序、软件仿真方面也有很强大的功能。
本设计使用的是uVision2版本。
uVision2是一款集编辑、编译和项目管理于一身的基于窗口的软件开发环境。
uVision2集成了C语言编译器、宏编译、链接/定位、以及HEX文件产生器[1]。
本质是一个典型的调试窗口,主要包括以下几个窗口,如图7所示。
图7KeiluVision2开发环境
3.2系统的软件设计
本系统采用模块化的编程思想,把整个软件系统化为多个功能模块,主程序通过调用各个子程序来完成各个功能的实现。
下面具体介绍各个模块的实现。
3.2.1软件总体分析
从整体上看,该系统软件分为三个大的部分:
(1)VS1003解码。
VS1003解码即VS1003译码程序。
主要完成数字信号的采集、信号滤波等功能。
利用模块化编程思想分别来实现各个模块的功能,减少程序之间的耦合性,提高程序之间的内聚性。
通过调用各个子程序来完成系统的功能。
该部分总体开发思路是,VSl003通过同步串行总线SPI与STC12C5A60S2进行命令和数据的传输。
只要正确写SPI相关寄存器就能轻松实现控制。
VSl003的SPI接口具有2种工作模式:
新模式和兼容模式。
设置寄存器“SM_SDINEW为1”使VSl003处于新模式,此时设置SM_SDISHARE为0,控制信号和数据信号的传送将分别采用XCS和XDCS作为同步信号。
系统启动后,由MCU控制将存储于U盘中歌曲的码流信息送入到VSl003芯片中,通过VSl003芯片解码以及其内含的高质量的立体声DAC和耳机驱动电路,实现MP3歌曲的播放功能[2]。
(2)USB总线的通用接口芯片CH375。
CH375芯片挂接到MCU系统总线上,MCU通过CH375按照相应的USB协议与其它USB设备进行通信。
本设计中CH375工作在USBHOST模式下,将8位并行数据线D0~D7与STC12C5A60S2的P0口相连,实现数据与命令的并行传输,CH375工作在主机方式MCU通过RD,WR,片选CS、中断INT和地址线AO的综合控制,完成与CH375的通讯,通过USB接口实现从U盘读写数据的功能。
INT引脚和MCU的外部中断输入引脚相连,当有U盘插入时INT变为低电平触发外部中断,当RD为高电平,且CS,WR和AO都为低电平时,D7~DO上的数据被写入CH375芯片中;当RD为高电平,且CS和WR都为低电平,AO为高电平时,D7~DO中的数据可作为命令码写入CH375芯片中;当WR为高电平,且CS,RD和AO都为低电平时,CH375中的数据可以通过D7~DO输出[3]。
(3)LCD12864液晶显示
a)LCD12864引脚功能说明如表1所示。
表1LCD12864引脚功能说明
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,DB7——DB0为显示数据
RS=“L”,DB7——DB0为显示指令数据
5
R/W(SID)
H/L
R/W=“H”,E=“H”,数据DB7——DB0被读
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
H/L
使能信号
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
PSB
H/L
H:
8位或4位并口方式,L:
串口方式
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)
20
K
VSS
背光源负端
b)LCD12864控制器接口信号说明:
管脚RS、R/W为主要功能选择端口,RS端口高低电平用于12864识别端口信号是指令数据(L)还是显示数据(H),R/W端口高低电平用于控制12864读(H)写(L)状态。
RS,R/W的配合选择决定控制界面的4种模式如表2所示。
表2LCD12864控制界面模式
RS
R/W
功能说明
L
L
MCU写指令到指令暂存器(IR)
L
H
读出忙标志(BF)及地址记数器(AC)的状态
H
L
MCU写入数据到数据暂存器(DR)
H
H
MCU从数据暂存器(DR)中读出数据
c)LCD12864使能E信号
E作为12864的外加时钟,控制12864与外部的连接。
当E信号H→L时12864读取DB端口的数据。
将它视为一个开关,当进行数据写入时先调节RS选择信号种类,然后将R/W拉低设为写状态,把数据传到管脚后将E由L→H→L把数据读入寄存器。
如表3所示。
表3LCD12864使能信号
E状态
执行动作
结果
高——>低
I/O缓冲——>DR
配合W进行写数据或指令
高
DR——>I/O缓冲
配合R进行读数据或指令
低/低——>高
无动作
(4)LCD12864串行连接数据传输
串口模式工作过程:
a)串行数据传送共分三个字节完成。
第一字节串口控制——格式11111ABC
A为数据传送方向控制。
其中,H表示数据从LCD到MCU,L表示数据从MCU到LCD。
B为数据类型选择。
其中,H表示数据是显示数据,L表示数据是控制指令。
C固定为0
第二字节(并行)8位数据的高4位——格式DDDD0000
第三字节(并行)8位数据的低4位——格式0000DDDD
串口模式下只用两根线(E和SCLK)来完成数据传输。
ST7920是12864的控制器,如果使用多个ST7920时,CS被配合使用,CS为高电平有效。
SCLK有独立的操作时序,当多个连续的指令被送入时,指令执行时间需要被考虑,需要等待上一个指令执行完毕才送入下一个指令,因为ST7920内部没有传送/接收缓冲区。
b)一个完整的串行传输周期有以下部分组成。
首先送入启动字节,送入5个连续的“1”来启动一个周期,此时传输周期被重置,并且串行传输数据被同步,紧接的两个为指定传输方向(R/W读还是写)和(RS确定是命令寄存器还是数据寄存器),最后的第八位是一个“0”,送完启动字节以后,可以送入指令或是显示数据,指令或代码是以字节为单位的,每个字节的内容(指令或数据)在被送入时分为两个字节来处理,高四位放在第一个字节的高四位,低四位放在第二个字节的高四位。
无关的都补“0”。
如图8所示[4]。
图8LCD12864串行方式数据传输
3.2.2CH375软件系统设计
软件是搭载在硬件上运行的,硬件的资源多少在一定程度上决定了软件的设计方法和复杂程度。
由于早期的单片机硬件资源少RAM资源有限,所以工程师在编程的时候对RAM的应用要十分小心,因此造成这类的设计开发工程师更加偏向于直接用汇编语言来控制硬件的工作。
随着科学的发展,嵌入式系统复杂度的提高和EDA技术的发展,各种高级的EDA工具不断推出,比如Keil、IAR、ADS等工具,这些工具不仅极大的方便了工程师的开发,同时也为用C语言这种高级语言来编写程序提供了有利的条件。
但是这种开发方式随着系统复杂度的增高也变的愈加吃力了,因为对开发人员要熟悉芯片的内部资源,能够进行寄存器配置,这样就对工程师的要求比较高。
但是这些问题可以通过移植操作系统来解决,操作系统的优势就是屏蔽了具体的硬件细节,可以让开发人员把更多的精力放在应用程序上。
本系统设计时,考虑移植操作系统。
但是对于具体的应用存在一些不足之处:
首先,操作系统在对数据区的开销以及一些变量的存储方面浪费了很多的RAM资源,有限的RAM资源就无法有效的分配。
其次,CH375方便的库文件开发方式本身就屏蔽了硬件的细节,处于以上考虑在本次开发中没用移植操作系统,而采用库文件的方式来开发设计。
由于CH375固件库是一个固件包,它不仅包括了程序、数据结构和覆盖所有外设特性的宏单元。
还包括设备驱动的描述,该固件库可以使得用户在没有深入学习外围模块规格手册的情况下,也能够在用户应用程序中涉及到的任何设备中直接使用。
因此,使用该固件库可以节省设计者的许多时间,可使开发人员把更多的精力花费在编程方面,加快了开发周期,减少了在应用开发中的综合开销。
这是CH375软件开发十分显著的优点。
3.2.3CH375模块的U盘数据读取程序设计
U盘数据的读取是MP3播放的重要环节,对后面的MP3解码进一步处理至关重要。
CH375内置了USB通信协议,单片机可以直接调用API库读写U盘中的文件数据。
CH375用于低功耗模式,工作时需要外部为它提供12MHz的时钟信号。
原理如图9所示[5]。
图9U盘数据读取原理图
将8位并行数据线D0~D7与单片机的P0口相连实现数据与命令的并行传输,RD,WR,CS,INT和A0五根控制线分别连接至单片机的的对应引脚,CH375的TXD引脚通过1K的下拉电阻接地,使CH375工作于USB主机并行接口方式。
单片机通过RD,WR,片选CS、中断INT和地址线AO的综合控制,完成与CH375的通讯,通过USB接口实现从U盘读写数据的功能。
INT引脚和MCU的外部中断输入引脚相连,当有U盘插入时INT变为低电平触发外部中断,当RD为高电平,且CS,WR和AO都为低电平时,D7~DO上的数据被写入CH375芯片中;当RD为高电平,且CS和WR都为低电平,AO为高电平时,D7~DO中的数据可作为命令码写入CH375芯片中;当WR为高电平,且CS,RD和AO都为低电平时,CH375中的数据可以通过D7~DO输出。
子程序库对U盘文件的读写方式分为两种:
扇区模式和字节模式。
本设计采用的是字节模式。
字节模式下,以字节为基本单位对U盘文件进行读写,读写速度较慢,但是不需要额外的文件数据缓冲区(实际是与磁盘数据缓冲区合用),适用于RAM少、数据量小或者数据零碎、不经常读写数据的单片机系统。
如果频繁地向U盘写入零碎的数据,可能会缩短U盘中闪存的使用寿命(因为闪存只能进行有限次擦写)。
查看子程序库的全局变量“CH375DiskStatus(磁盘及文件状态)”可以获取当前的文件模式。
DISK_OPEN_FILE则代表扇区模式,DISK_OPEN_FILE_B则代表字节模式。
当执行一次以字节为单位的操作命令后将自动进入字节模式(只有关闭文件后再重新打开才能恢复扇区模式),支持以字节为单位的操作子程序CH375ByteRead和CH375ByteWrite及CH375ByteLocate[6]。
对于已打开的同一个文件,不能混用两种模式的操作子程序。
下面是单片机针对U盘的以字节为单位进行读写操作的流程,如图10所示。
在流程中涉及到的参数如下:
在mCmdParam.Open.mPathName的命令中提供文件名,包括完整的路径名;在mCmdParam.ByteOffset.ByteLocate的命令中指定读写起始位置地址;在mCmdParam.mByteCount.mCmdParam.ByteRead的命令中指定读取字节数[6,7];在mCmdParam.Enumer.mPathName的命令中指定需要查询的文件名中的全部或者部分字符。
图10U盘数据读取流程图
3.2.4VS1003模块的MP3文件播放程序设计
系统上电启动后,由单片机控制将存储于U盘中歌曲的MP3数据格式流信息通过CH375的USB接口芯片送入到VSl003芯片中,通过VSl003芯片解码及其内含高质量的立体声DAC和耳机驱动电路,实现MP3歌曲的播放,在按键的控制下,可实现对歌曲的选择、音量增减等功能。
VSl003的所有数据和控制命令均通过SPI总线接口实现。
要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 音乐 播放 软件
![提示](https://static.bdocx.com/images/bang_tan.gif)