基于51单片机的音乐播放器的设计.docx

上传人:b****6 文档编号:8878234 上传时间:2023-05-15 格式:DOCX 页数:15 大小:163.47KB
下载 相关 举报
基于51单片机的音乐播放器的设计.docx_第1页
第1页 / 共15页
基于51单片机的音乐播放器的设计.docx_第2页
第2页 / 共15页
基于51单片机的音乐播放器的设计.docx_第3页
第3页 / 共15页
基于51单片机的音乐播放器的设计.docx_第4页
第4页 / 共15页
基于51单片机的音乐播放器的设计.docx_第5页
第5页 / 共15页
基于51单片机的音乐播放器的设计.docx_第6页
第6页 / 共15页
基于51单片机的音乐播放器的设计.docx_第7页
第7页 / 共15页
基于51单片机的音乐播放器的设计.docx_第8页
第8页 / 共15页
基于51单片机的音乐播放器的设计.docx_第9页
第9页 / 共15页
基于51单片机的音乐播放器的设计.docx_第10页
第10页 / 共15页
基于51单片机的音乐播放器的设计.docx_第11页
第11页 / 共15页
基于51单片机的音乐播放器的设计.docx_第12页
第12页 / 共15页
基于51单片机的音乐播放器的设计.docx_第13页
第13页 / 共15页
基于51单片机的音乐播放器的设计.docx_第14页
第14页 / 共15页
基于51单片机的音乐播放器的设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的音乐播放器的设计.docx

《基于51单片机的音乐播放器的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的音乐播放器的设计.docx(15页珍藏版)》请在冰点文库上搜索。

基于51单片机的音乐播放器的设计.docx

基于51单片机的音乐播放器的设计

基于51单片机的音乐播放器的设计

学院:

电子与电气工程学院

专业:

测控技术与仪器

学生姓名:

**

学号:

***********

 

湖南工业大学

HunanuniversityofTechnology

基于51单片机的音乐播放器的设计

[摘要]本课题完成了基于51单片机的音乐播放器的软件设计。

论文主要介绍了对U盘所存储的MP3、WMA或MIDI格式的文件识别、提取以及音频解码程序实现的方法,通过与硬件调试表明所设计的音乐播放器可以通过按键选择歌曲以及控制音量,同时还可以通过显示屏来显示所播放的歌曲名。

声音的播放可以通过扬声器或耳机进行,基本实现了音乐播放器的功能。

[关键词]单片机;音乐播放器;U盘文件读取;音频解码

 

 

 

1引言

1.1设计意义

基于单片机的音乐播放器可应用于MP3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,传统的音乐播放器是利用定时器可以产生各种固定频率的方波信号,可以产生包括“Do”、“Re”、“Me”等音阶在内的各种频率声音。

将各个音阶连接在一起,便可组成一支曲子或者是演奏一段旋律,不能播放真正的MP3文件。

基于这个思想本文设计了一款特殊的“音乐播放器”,该播放器可实现MP3文件的完整播放,可以选择音量调节,曲目的切换等功能。

为了体现音乐播放过程中的效果,增加了LCD屏,可以实现歌曲名的显示。

本设计以STC12C5A60S2芯片作为主控制器,芬兰VLSI公司的VS1003作为音频解码芯片,南京沁恒公司的CH375作为USB设备接口芯片,以U盘作为媒体存储介质,LCD12864液晶屏作为显示屏,来完成音乐播放器的功能。

该设计具有四按键操作界面,界面显示友好,支持MP3、WMA和MID音乐格式,该系统支持FAT32文件系统,支持大容量U盘。

1.2理论分析与方案论证

1.2.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盘读取来实现。

2系统硬件原理及概述

2.1STC12C5A60S2处理器介绍

STC12C5A60S2/AD系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,有8路高速10位的A/D转换(250K/S)。

2.2系统硬件电路综述

2.2.1硬件系统总体设计方案

本设计的音乐播放器,有四个按键控制按钮:

下一曲,上一曲,音量加,音量减。

通过对按钮的控制来实现对单片机要求播放的音乐,并通过放大电路和音频设备输出声音。

同时通过LCD显示屏来显示所播放的曲目。

必要时可调节音量的大小。

硬件系统总体方框图如图1所示。

图1硬件系统总体方框图

2.2.2USB总线的通用接口芯片CH375电路

CH375芯片是一个支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式的USB总线通用接口芯片。

CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。

在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。

接线图如图2所示。

图2USB总线的通用接口芯片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显示屏是点阵型,可根据需求任意显示字符、数字、汉字、图形。

2.2.4按键控制电路

按键控制电路,其按键一与P1.0相连、按键二与P1.1相连、按键三与P1.2相连、按键四与P1.3相连。

当按键按下时接口接低电平,从而实现对音乐曲目的选择控制。

按键一接通实现上一曲更换,按键二接通实现下一曲更换,按键三接通实现音量增大操作,按键四接通实现音量减小操作。

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电路接线如图3所示。

图3VS1003电路接线图

3系统软件设计

3.1软件开发平台

我们使用的keil软件在软件开发和proteus软件在仿真。

3.2系统的软件设计

从整体上看,该系统软件分为三个大的部分:

(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)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”。

如图7所示[4]。

图4LCD12864串行方式数据传输

最初LCD12864使用的是并行通信,线路复杂,占用I/O资源太多,I/O端口不够使用,按键问题在并行通信时只剩下一个按键,只能实现下一曲功能,不能完成预定目标。

经过分析将I/O资源分配简化,把并行通信改为串行通信,简化了线路,并且I/O端口分配也合理还留出了余量。

3.2.2CH375软件系统设计

本系统设计时,考虑移植操作系统。

但是对于具体的应用存在一些不足之处:

首先,操作系统在对数据区的开销以及一些变量的存储方面浪费了很多的RAM资源,有限的RAM资源就无法有效的分配。

其次,CH375方便的库文件开发方式本身就屏蔽了硬件的细节,处于以上考虑在本次开发中没用移植操作系统,而采用库文件的方式来开发设计。

使用该固件库可以节省设计者的许多时间,可使开发人员把更多的精力花费在编程方面,加快了开发周期,减少了在应用开发中的综合开销。

这是CH375软件开发十分显著的优点。

3.2.3CH375模块的U盘数据读取程序设计

U盘数据的读取是MP3播放的重要环节,对后面的MP3解码进一步处理至关重要。

CH375内置了USB通信协议,单片机可以直接调用API库读写U盘中的文件数据。

CH375用于低功耗模式,工作时需要外部为它提供12MHz的时钟信号。

原理如图9所示[5]。

图5U盘数据读取原理图

将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盘的以字节为单位进行读写操作的流程,如图10所示。

图6U盘数据读取流程图

3.2.4VS1003模块的MP3文件播放程序设计

系统上电启动后,由单片机控制将存储于U盘中歌曲的MP3数据格式流信息通过CH375的USB接口芯片送入到VSl003芯片中,通过VSl003芯片解码及其内含高质量的立体声DAC和耳机驱动电路,实现MP3歌曲的播放,在按键的控制下,可实现对歌曲的选择、音量增减等功能。

VSl003的所有数据和控制命令均通过SPI总线接口实现。

要控制VS1003首先要实现的就是写命令,它是控制实现成功的前提。

关于通信接口部分,它是一种同步串行接口方式(SPI从机模式),它要求SCLK信号必须由外部电路产生,数据(SDATA)在SCLK的上升沿或下降沿时被写入。

写命令的过程如下:

(1)等待DREQ为高(当DREQ为低时,说明VS1003芯片还没有就绪)

(2)将XCS(命令片选)拉低

(3)写入0x02(写操作命令)

(4)写入寄存器地址

(5)分别写入数据的高字节与低字节

(6)将XCS置高

初始化的过程如下:

(1)硬件复位:

接XRESET拉低

(2)延时,将XDCS、XCS、XRESET置高

(3)向MODE中写入0X0804(软件复位)

(4)等待DREQ为高

(5)设置VS1003的时钟:

SCI_CLOCKF=0x9800,3倍频(SC_MULT为4,SC_ADD为3,SC_FREQ为0)

(6)设置VS1003的采样率:

SPI_AUDATA=0xBB81,采样率48k,立体声

(7)设置重音:

SPI_BASS=0x0055(SB_AMPLITUDE=5,SB_FREQLIMIT=5,低于50Hz时进行5dB的增强)

(8)设置音量:

SCI_VOL=0x2020(左右声道相同)

(9)这一步容易忽视,向VS1003发送4个字节的无效数据,用以启动SPI发送

对VS1003的初始化与测试都通过后,就可以给它发送MP3文件了。

数据的写入方法主要是看DREQ信号,在VS1003的FIFO能够接受数据的时候输出高电平。

每次可以写入32个字节的数据,因为VS1003有32Byte的数据缓冲区,而DREQ变低时,单片机就要停止数据的发送[8]。

具体的写数据的方法如下:

(1)将XDCS拉低

(2)等待DREQ为高

(3)通过SPI写入数据

(4)在文件没有结束前不断重复2与3操作

(5)在所有的数据都发送完毕后,最后发送2048个无效字节,用以清除VS1003的数据缓冲区

(6)将XDCS置高

MP3文件播放流程图如图7所示。

图7MP3文件播放流程图

3.3系统流程图

主程序实现对单片机进行初始化后,进入歌曲识别子程序。

确定歌曲曲目后,显示屏进行显示。

然后子程序对音乐播放文件进行循环判断,得到按键的命令后再进行按键播放。

音乐播放的同时,显示屏显示歌曲名,单片机调用字节模式读取U盘数据进行音乐播放。

在播放音乐的过程中,子程序循环判断音乐是否播放结束。

当音乐文件播放结束时,判断是否有按键按下,并执行相应的命令。

系统流程图如图8所示。

图8系统流程图

参考文献

[1]袁卫,党纪源.基于单片机的MP3播放器设计[J].2011,34(4):

123-125

[2]黄平平,吉荣廷,沈大鹏.基于CH375实现单片机读写U盘[J].现代电子技术,2006,29(18)

[3]王澜锦.基于CH375U盘MP3播放器设计[J].嵌入式技术,2007.6:

58-60

[4]VLSISolutionOy.VSl003MP3/WMAAUDIOCODEC[EB/OL].2005.

[5]周国运.单片机原理及应用(C语言版)[M].北京:

北京水利水电出版社,2009.2

[6]李朝清.单片机原理及接口技术[M].北京:

北京航空航天大学出版社,2011.01

[7]宋红星,郭兴旺.以优盘为存储介质的MP3播放器设计[J].单片机与嵌入式系统应用,2006:

58-60

[8]QinhengInterfacechipforUSB[EB/OL].2007..download.index.asp

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2