基于stc12c5a60s2的mp3播放器设计.docx
- 文档编号:26685093
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:48
- 大小:1.02MB
基于stc12c5a60s2的mp3播放器设计.docx
《基于stc12c5a60s2的mp3播放器设计.docx》由会员分享,可在线阅读,更多相关《基于stc12c5a60s2的mp3播放器设计.docx(48页珍藏版)》请在冰豆网上搜索。
基于stc12c5a60s2的mp3播放器设计
摘要
MP3播放器从上世纪90年代末开始,发展至今已经是一种相当成熟,广泛应用的电子娱乐消费产品。
目前市面上的MP3播放器种类繁多,功能各异,各种MP3方案层出不穷以适应不同的需求,本设计以51单片机为主控核心,VS1003为音频解码模块,MicroSD卡为音频文件的存储煤质,加上TFT彩屏友好的人机交互界面作为该毕业设计的MP3播放器方案。
同时,为提高本设计的灵活性,可拓展性,方便后续升级,引入文件系统,而界面系统可依据需求进行配置。
关键字:
MP3播放器,51单片机,音频解码,文件系统
Abstract
MP3playersincethelate1990s,thedevelopmentsofarisaquitematureandwidelyusedelectronicentertainmentconsumerproducts.MP3playercurrentlyonthemarketawidevariety,differentfunction,allkindsofMP3solutionsemergeinendlesslytoadapttothedifferentrequirements,thedesignof51single-chipmicrocomputerasthecore,controlVS1003audiodecodingmodule,MicroSDcardforaudiofilesstoredcoalquality,coupledwithTFTcolorscreenfriendlyhuman-computerinteractioninterfaceasthegraduationdesignofMP3players.
Atthesametime,inordertoimprovetheflexibilityofthedesign,canexpandsex,convenientupgradefollow-up,theintroductionofthefilesystem,andtheinterfacesystemcanbeconfiguredaccordingtotherequirements.
Keywords:
MP3players,51single-chip,audiodecoding,filesysterm
第1章绪论
1.1课题背景
MP3是一种音频压缩技术,是MPEG-1audiolayer3的简称。
MPEG-1是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果也最好,在低码率的条件下基本能达到CD的音质效果。
如果对于一段声音不进行压缩的话,那么每存储一秒钟的立体声CD音质音乐必须用1.4Mbit,这是个十分大的开销。
通过运用MPEG音频标准的压缩技术,我们可以把存储空间压缩到原来的1/12而不会降低声音的音质。
即使使用1/24的压缩因子,仍然比单纯降低采样率的音质要好。
低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。
而MP3播放器则是能够播放MP3格式音频文件,同时具有存储,显示一体这一特定功能的小型电脑。
1.2设计意义
随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携方向不断发展,如今的MP3播放器基本与存储器一体设计,使MP3播放器更加的便于携带,但与此同时也带来其他新的问题,比如存储容量有限,尤其是在追求播放器小巧的今天,其容量一般不会很大,如果想升级更大容量的,就只能去购买新的产品了,从而造成资源浪费;另一方面,一体化的设计又限制了MP3播放器在其他领域的应用,比如LCD液晶显示升级或更换,与其他系统模块的整合,因此,MP3播放器的模块独立化也是其发展的另一方向。
本设计以单片机为主控中心,MicroSD卡为音频数据的存储煤质,其容量大小可根据需求进行自由更换,同时,以VS1003为音频解码模块,该模块也可根据解码速率及音频格式进行更改,MCU通过对MicroSD卡上的音频文件进行读取送到解码模块进行解码,并通过音频接口进行播放,且将相应信息显示在液晶屏幕实现人机交互。
1.3方案论证
(1)主控芯片选择:
作为本设计的核心大脑,主控芯片必须具有能够富有余力的执行整个代码流程的能力,这在其处理速度上有着硬性要求,照此看来,ARM系列或者STM系列或是不错的选择,无论是其强大的处理速度还是丰富的接口,都有比其他处理器有着先天的优势,但对于MP3播放器这一类的电子产品,其价格是其致命伤,成本控制同样是重要的考量因素,而51单片机似乎是个不错的选择,成本低,市场量高,是一款成熟的处理器,很多中低端的产品都有它的身影,支持度也很好,唯一的缺点是处理速度不够快,为此,我选择51系列的增强版STC12C5A60S2,该款单片机不仅价格便宜,使用度广,同时1T最高可达35MHZ的处理速度相较于AVR也毫不逊色,接口也基本满足设计需求。
尤其是具有硬件SPI。
(2)解码方式选择:
音频解码可分为软解码和硬解码两种方式,软解码需要大量的运算,无论是空间资源还是时间资源都消耗很大,因此要求处理器的存储容量(存储软解码代码的ROM和运行时所需的RAM)及处理速度都要求很高,市面上的一般的单片机甚至ARM7都很难做到对音频流畅无压力的解码,何况解码后的数据还要DAC转换才能形成模拟信号,要是其DAC驱动能力不够的话,还需另外添加功率放大电路,总之付出的硬件成本是比较高的。
硬件解码一般是由专门的解码芯片实现,处理速度快,集成度高(内含DAC,功放等所需电路),且除去繁琐的控制使得处理器可以解脱出来做其他事情,要做的只是将音频数据送入到解码模块中即可。
常见的MP3解码芯片有VS100X系列和STA01X系列,由于VS100X系列不仅自带DAC输出功能,支持MP3、WMA、WAV、MIDI等音频格式,还具有调节音量,高低音等,更为可喜的是具有MIC功能。
这极大地提高了MP3播放器的可拓展性和丰富性,本设计选择VS1003作为音频解码模块。
(3)存储煤质选择:
一首歌的大小普遍在3~4MB左右,音质稍微好点的基本在5MB以上,显然存储在处理器内部是不现实的,这要求外设存储设备,且需要大容量的,可以选择外接Flash,MicroSD卡,U盘等,由于Flash是焊接到PCB上,一旦确定其大小就被固定了,对后续升级不便,且也不方便移动和携带,而MicroSD卡和U盘是不错的选择,大容量,可插拔,价格不贵容易购买,考虑到SD卡和microSD卡兼容,大部分人相机用的是SD卡而手机用的就是microSD卡,所以本设计选择以MicroSD卡作为音频的存储设备。
(4)LCD界面选择:
良好的用户体验离不开具有人机交互的图形界面,所以本设计也着重于界面的设计,从界面的实现功能要求及成本考虑,本设计的界面模块也采用广泛使用的液晶LCD12864,该模块基本满足设计要求,如果要升级的话也可采用与LCD12864接口兼容的彩屏,不过考虑成本及目前实现的功能需求来说,暂不需要彩屏,同时,由于LCD12864具有串行传输模式和并行传输模式可供选择,增加了灵活性,因此,本设计最终采用LCD12864作为界面显示模块。
(5)文件系统选择:
对音频文件的存储,管理,检索,播放离不开文件系统的支持,而当前对存储设备管理的文件系统当属FatFS,FatFS是一个为小型嵌入式系统设计的通用FAT(FileAllocationTable)开源文件系统。
FatFs的编写遵循ANSIC,并且完全与磁盘I/O层分开。
因此,它独立(不依赖)于硬件架构。
它可以被嵌入到低成本的微控制器中,如AVR,8051,PIC,ARM,Z80,68K等等,而不需要做任何修改。
其提供的函数接口足以满足我们对存储设备的操作,但由于本设计所使用的处理器为STC12C5A60S2,内部资源尤其是RAM非常有限,且大部分的函数功能不需要用到,因此采用PetitFatFs文件传统,PetitFatFs是FatFs的精简版,比较适用于低端8位单片机中。
可以用在小RAM的单片机中,RAM可以小于扇区的RAM(512bytes)中。
因此,本设计最终方案以STC12C5A60S2为主控芯片,MicroSD卡为音频存储设备,VS1003为音频解码模块,TFT彩屏为人机交互界面,通过主控MCU搭载的PetitFatFs文件传统对MicroSD卡上的音频文件进行检索并显示在界面,根据用户选择将相应音频文件输出至VS1003模块进行解码播放,同时将其信息如歌曲名,歌词,播放时长等显示到界面。
第2章系统硬件原理及概述
2.1系统硬件总体框架介绍
歌曲信息
音频流
硬件SPI
serial
图2-1系统硬件框架图
硬件启动流程:
上电后,主控芯片STC12C5A60S2设置启用硬件SPI功能并采用该SPI对存储设备MicroSD卡进行初始化后检索根目录下的MP3格式音频文件名,然后按照检索的顺序依次显示在LCD上供用户浏览,用户可根据4个独立的按键进行选择操作,4个按键中分别为prev,next,play,quit,由于按键数量不多但要完成的操作多余4个,故采用复用功能,在选择歌曲界面时,prev表示前一首歌曲,next表示下一首歌曲,play表示播放;当处于播放状态时,prev表示快退,next表示快进,而play表示暂停,且在暂停状态时,prev表示音量调小,next表示音量调大,最后的quit是退出当前的界面返回上一级界面。
MCU收到用户的按键信息后会根据不同的指令对对应的文件名进行读取,并将数据流直接送到VS1003解码模块进行解码,用户即可通过解码模块VS103的音频口听到优雅的音乐了,同时,MCU会将该音频文件的其他信息显示到LCD上,包括MP3文件名,播放时长,以方便用户阅览并后续的操作,另外,为方便设计期间对代码的调试,也添加了serial串口模块(可裁剪),以方便开发人员软件设计的调试,可通过设置宏定义使得开发期间使能串口打印功能,而当完成调试relase的时候禁止打印功能即可。
2.2系统硬件各模块介绍
2.2.1主控芯片STC12C5A60S2处理器简介
在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASH ROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
片上集成1280字节RAM,基本满足大部分程序运行所需内存大小。
而且STC系列单片机支持串口程序烧写。
显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。
写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。
重要的一点STC12C5A60S2目前的售价与传统51差不多,市场供应也很充足,是一款高性价比的单片机。
STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍(工作频率范围:
0 - 35MHz,相当于普通8051的 0~420MHz)。
内部集成MAX810专用复位电路、2路PWM、8路高速10位A/D转换(250K/S)、双串口、特别适用强干扰场合。
本设计着重其具有的硬件SPI功能!
因为对MicroSD卡扇区的读写操作需要更快的操作。
这是普通51单片机所没有的先天优势。
其各引脚分布如下:
图2-2STC12C5A60S2引脚分布图
2.2.2VS1003音频解码模块
VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。
它包含一个高性能,自主产权的低功耗DSP 处理器核VS_DSP4,工作数据存储器,为用户应用提供5KB的指令RAM和0.5KB的数据RAM。
串行的控制和数据接口,4个常规用途的I/O口,一个UART,也有一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。
VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。
输入的比特流被解码,然后通过一个数字音量控制器到达一个18位过采样多位ε-Δ DAC。
通过串行总线控制解码器。
除了基本的解码,在用户RAM中它还可以做其他特殊应用,例如DSP音效处理。
图2-3VS1003架构图
由于本设计主要是利用VS1003的解码功能,所以仅要求了解其解码相关的部分引脚即可,其相关引脚如下
引脚名称
LQFP-48
引脚类型
引脚功能
XRESET
3
DI
低电平有效,异步复位端
DGND0
4
DHND
处理器核与I/O地
CVDD0
5
CPER
处理器核电源
IOVDD0
6
IOPWR
I/O电源
CVDD1
7
CPEW
处理器核电源
DREQ
8
DO
数据请求
GPIO2/DCLK
9
DIO
通用I/O2/串行总线时钟
GPIO3/SDATA
10
DIO
通用I/O3/串行数据总线数
XDCS/BSYNC
13
DI
数据片选端/字节同步
IOVDD1
14
IOPWR
I/O电源
XTALO
17
AO
晶振输出
XTALI
18
AI
晶振输入
IOVDD2
19
IOPWR
I/O电源
DGND2
20
DGND
处理器核与I/O地
DGND3
21
DGND
处理器核与I/O地
DGND4
22
DGND
处理器核与I/O地
XCS
23
DI
片选输入,低电平有效
CVDD2
24
CPWR
处理器核电源
RX
26
DI
UART接收口,不用时接IOVDD
SCLK
28
DI
串行总线的时钟
SI
29
DI
串行输入
SO
30
DO3
串行输出
CVDD3
31
CPWR
处理器核电源
TEST
32
DI
保留做测试,连接至IOVDD
GPIO0/SPIBOOT
33
DIO
通用I/O0/SPIBOOT,使用100K下拉电阻
GPIO1
34
DIO
通用I/O1
AGND0
37
APWR
模拟地,低噪声参考地
AVDD0
38
APWR
模拟电源
RIGHT
39
AO
右声道输出
AGND1
40
APWR
模拟地
AGND2
41
APWR
模拟地
GBUF
42
AO
公共地缓冲器
AVDD1
43
APWR
模拟电源
AVDD2
45
APWR
模拟电源
LEFT
46
AO
左声道输出
AGND3
47
APWR
模拟地
表2-4VS1003重要引脚说明
在VS1003的使用中除了对引脚有所了解外,还要对其寄存器有很好的了解才能对相应寄存器进行设置从而使用该芯片。
VS1003共有16个16位的寄存器,地址分别为0x0 – 0xF;除了模式寄存器(MODE,0x0)和状态寄存器(STATUS,0x1)在复位后的初始值分别为0x800和0x3C外,其余的寄存器在VS1003初始化后的值均为0。
下面将VS1003各寄存器逐一介绍:
1)MODE(地址0x0;RW,可读写)
模式寄存器在VS1003中是一个较为重要的寄存器,其每一位都对应着VS1003的不同设置。
●bit0:
SM_DIFF
SM_DIFF = 0 正常音频相位 SM_DIFF = 1 左声道反转
当SM_DIFF置位时,VS1003将左声道反相输出,立体声输入将产生环绕效果,对于单声道输入将产生差分(反相)左/右声道信号。
●bit1:
SM_SETTOZERO 置零
●bit2:
SM_RESET
SM_RESET = 1,VS1003软复位。
软复位之后该位会自动清零。
●bit3:
SM _OUTOFWAV
SM _OUTOFWAV = 1,停止WAW解码。
当你要中途停止WAV、WMA或者MIDI文件的解码时,置位SM _OUTOFWAV,并向VS1003持续发送数据(对于WAV文件发送0)直到将SM _OUTOFWAV清零;同时SCI_HDAT1也将被清零。
●bit4:
SM_PDOWN
SM_PDOWN = 1,软件省电电模式,该模式不及硬件省电模式(由VS1003的xReset激活)
●bit5:
SM_TESTS
SM_TESTS = 1,进入SDI测试模式。
●bit6:
SM_STREAM
SM_STREAM = 1,使能VS1003的流模式,具体请参考应用笔记VS10XX。
●bit7:
SM_PLUSV
SM_PLUSV = 1,MP3 + V解码使能。
●bit8:
SM_DACT
SM_DACT = 0,SCLK上升沿有效;SM_DACT = 1,SCLK下降沿有效。
●bit9:
SM_SDIORD
SM_SDIORD = 0,SDI总线字节数据MSB在前,即须先发送MSB; SM_SDIORD = 1,SDI总线字节数据LSB在前,即须先发送LSB; 该位的设置不会影响SCI总线。
●bit10:
SM_SDISHARE
SM_SDISHARE = 1,SDI与SCI将共用一个片选信号(同时SM_SDINEW = 1),即将xDCS与xCS这两根信号线合为一条,能省去一个IO口。
●bit11:
SM_SDINEW
SM_SDINEW = 1,VS1002本地模式(新模式)。
VS1003在启动后默认进入该模式。
注:
这里的模式指的是总线模式。
●bit12:
SM_ADPCM
SM_ADPCM = 1,ADPCM录音使能。
同时置位SM_ADPCM和SM_RESET将使能VS1003的IMA ADPCM录音功能。
●bit13:
SM_ADPCM_HP
SM_ADPCM_HP = 1,使能ADPCM高通滤波器。
同时置位SM_ADPCM_HP 、SM_ADPCM和SM_RESET将开启ADPCM录音用高通滤波器,对录音时的背景噪音有一定的抑制作用。
●bit14:
SM_LINE_IN
录音输入选择,SM_LINE_IN = 1,选择线入(line in);SM_LINE_IN = 0,选择麦克风输入(默认)。
2)SCI_STATUS(0x1,RW)
SCI_STATUS为VS1003的状态寄存器,提供VS1003当前状态信息。
3) SCI_BASS(0x2,RW) 重音/高音设置寄存器。
VS1003的内置的重音增强器VSBE是种高质量的重音增强DSP算法,能够最大限度的避免音频削波。
当SB_AMPLITUDE(bit:
7-4)不为零时,重音增强器将使能。
可以根据个人需要来设置SB_AMPLITUDE。
例如,SCI_BASS = 0x00f6,即对60Hz以下的音频信号进行15dB的增强。
当ST_AMPLITUDE(bit:
15-12)不为零时,高音增强将使能。
例如,SCI_BASS = 0x7a00,即10kHz以上的音频信号进行10.5dB的增强。
4) SCI_CLOCKF(0x3,RW)
在VS1003种对该寄存器的操作有别于VS10x1和VS1002。
●SC_MULT(bit:
15-13)时钟输入XTALI的倍频设置,设置之后将启动VS1003内置的倍频器。
●SC_ADD(bit:
12-11) 用于在WMA流解码时给倍频器增加的额外的倍频值。
●SC_FREQ(bit:
10-0) 当XTALI输入的时钟不是12.288M时才需要设置该位段,其默认值为0,即VS1003默认使用的是12.288M的输入时钟。
5) SCI_DECODE_TIME(0x4,RW)
解码时间寄存器。
当进行正确的解码时,读取该寄存器可以获得当前的解码时长(单位为秒)。
可以更改该寄存器的值,但是新值须要对该寄存器进行两次写操作。
在每次软件复位或是WAV(PCM、IMA ADPCM、WMA、MIDI)解码开始与结束时SCI_DECODE_TIME的值将清零。
6) SCI_AUDATA(0x5,RW)
当进行正确的解码时,该寄存器的值为当前的采样率(bit:
15-1)和所使用的声道(bit:
0)。
采样率须为2的倍数;bit0 = 0,单声道数据,bit0 = 1,立体声数据。
写该寄存器将直接改变采样率。
7) SCI_WRAM(0x6,RW)
该寄存器用来加载用户应用程序和数据到VS1003的指令和数据RAM中。
起始地址在SCI _WRAMADDR中进行设置,且必须先于读写SCI_WRAM。
对于16位的数据可以在进行一次SCI_WRAM的读写中完成;而对于32位的指令字来说则需要进行两次连续读写。
字节顺序是大端模式,即高字节在前,低字节在后。
在每一次完成全字读写后,内部指针将自动增加。
8) SCI_WRAMADDR(0x7,RW)
用于设置RAM读写的首地址。
地址范围见数据手册P32。
9)SPI_HDAT0和SPI_HDAT1(0x8,0x9,R)
这两个寄存器用来存放所解码的音频文件的相关信息,为只读寄存器。
●当为WAV文件时,SPI_HDAT0 = 0x7761,SPI_HDAT1 = 0x7665;
●当为WMA文件时,SPI_HDAT0的值为解码速率(字节/秒),要转换为位率的话则将SPI_HDAT0的值乘8即可,SPI_HDAT1 = 0x574D;
●当为MIDI文件时,SPI_HDAT0的值请参考数据手册P33,SPI_HDAT1 = 0x4D54;
●当为MP3文件时,SPI_HDAT0和SPI_HDAT1包含较为复杂的信息(来自于解压之后的MP3文件头),包括当前正在解码的MP3文件的采样率、位率等,具体请参考数据手册P33-P34。
复位后SPI_HDAT0和SPI_HDAT1将清零。
10)SCI_AIADDR(0xA,RW)
用户应用程序的起始地址,初始化先于SCI _WRAMADDR和SCI_WRAM。
如果没有使用任何用户应用程序,则该寄存器不应进行初始化,或是将其初始化为零,具体请参考应用笔记VS10XX。
11)SCI_VOL(0xB,RW)
音量控制寄存器。
高八位用于设置左声道,低八位用于设置右声道。
设置值为最大音量的衰减倍数,步进值为0.5dB,范围为0到255。
最大音量的设置值为0x0000,而静音为0xFFFF。
例如,左声道:
-2.0dB,右声道:
-3.5dB,则SCI_VOL = (4×256)+ 7 = 0x0407。
硬件复位将使SCI_VOL清零(最大音量),而软件复位将不改变音量设置值。
注:
设置静音(SCI_VOL = 0xFFFF)将关闭模拟部分的供电。
12)SCI_AICTRL[x](0xC-0xF,RW) 用于访问用户应用程序。
2.2.3存储煤质MicroSD卡简介
由于microSD卡是由SD卡派生而来,和SD卡兼容,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc12c5a60s2 mp3 播放 设计