当前位置:文档之家› 基于51单片机的音乐播放器

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

基于51单片机的音乐播放器
余子健、刘胤、宋亮
摘要:本大作业是基于sst89e52rd2单片机制作的wav音乐播放器。

该播放器可以播放存在sd卡中的音乐,通过对sd卡的读取并将数字信号送入单片机中,借助8位DA转换器TLC5620 变成模拟信号,经过放大器TDA2822放大交给扬声器发出最初读取的音频信号,实现音乐播放的功能。

关键词:SD卡,WAV文件,DA,音频放大
1背景
音乐随身听产品经过几年的发展,已经变得相当成熟。

市场上可以购买到各类不同的音乐播放器,产品线涵盖了高中低不同档次。

作为学习与研究,本作品尝试利用STI51开发板板载资源以及外搭的功率放大电路制作一台音乐播放器,能够播放通过计算机拷贝在SD卡(或MMC卡、TF卡)的根目录中的某一个WAV 文件。

2硬件设计
该音乐播放器硬件组成如下
本音乐播放器使用容量为2G的SD作为外部存储器
主控制器采用SST公司生产的SST89E58RDA,其40引脚封装的芯片功能模块如图1所示。

芯片主要特想如下:
•兼容80C51系列,内置超级FLASH存储器的单片机
•工作电压VDD=4.5~5V,5V工作电压时0-40MHz频率范围
•1KB的内部RAM
•两块超级FLASH EEPROM,32KB的基本存储卡和8KB的二级存储块(扇区大小为128字节),二级存储块可用于存放掉电后要保存的数据,放在内部具有极强的抗干扰性•最大片外程序/数据地址空间为64KB
•全双工增强型UART,帧错误检测,自动地址识别
•9个中断源,4个中端优先级
•降低EMI模式(通过AUXR SFR不允许ALE输出时钟),确保了单片机的高抗干扰性•双DPTR指针(查表,寻址更方便)
图1
DA转换芯片采用TLC5620,为4路八位串行DA。

具有上电复位功能,采用单+5V电源供电,可产生一倍或二倍于基准电压与地(GND)之间的电压,且单调变化。

管脚分布如图2。

图2
功放电路采用TDA2822作为主芯片。

TDA2822 是双声道音频功率放大电路,适用于在袖珍式盒式放音机(WALKMAN)、收录机和多媒体音箱中作音频放大器。

该电路的特点如下:
电源电压范围宽(1.8~15V),电源电压可低至1.8V 仍能工作,因此,该电路适合在低电源电压下工作;
•静态电流小,交越失真也小;
•适用于单声道桥式(BTL )或立体声线路两种工作状态;
•采用双列直插8 脚塑料封装(DIP8)。

功放电路原理图如图3所示
图3
SD卡电路如图4
图4
电源供电用USB电源,LM1117-3.3V电平转换后输出的3.3V为SD卡提供电源。

3.软件设计
①SD卡
SD卡在上电初期自动进入SD总线模式,在此模式下向SD卡发送复位命令CMD0。

如果SD卡在接收复位命令过程中CS低电平有效,则进入SPI模式,否则工作在SD总线模式。

对于不带SPI串行总线接口的SST89E58RDA单片机来说,用软件来模拟SPI总线操作的具体做法是:将P0.3口(模拟CLK线)的初始状态设置为1,而在允许接收后再置P0.3为0。

这样,MCU在输出1位SCK时钟的同时,将使接口芯片串行左移,从而输出1位数据至SST89E58RDA单片机的P0.2(模拟MISO线),此后再置P0.3为1,使单片机从P0.1(模拟MOSI线)输出1位数据(先为高位)至串行接口芯片。

至此,模拟1位数据输入输出便完成。

此后再置P0.3为0,模拟下1位数据的输入输出,依此循环8次,即可完成1次通过SPI总线传输8位数据的操作。

SD卡的初始化
对SD卡进行操作首先要对SD卡进行初始化,初始化的过程中设置SD卡工作在SPI模式,其流程图如图3所示。

图5
数据块的读写
完成SD卡的初始化之后即可进行它的读写操作。

SD卡的读写操作都是通过发送SD卡命令完成的。

SPI总线模式支持单块(CMD24)和多块(CMD25)写操作,多块操作是指从指定位置开始写下去,直到SD卡收到一个停止命令CMD12才停止。

单块写操作的数据块长度只能是512字节。

单块写入时,命令为CMD24,当应答为0时说明可以写入数据,大小为512字节。

SD卡对每个发送给自己的数据块都通过一个应答命令确认,它为1个字节长,当低5位为00101时,表明数据块被正确写入SD卡。

在需要读取SD卡中数据的时候,读SD卡的命令字为CMD17,接收正确的第一个响应命令字节为0xFE,随后是512个字节的用户数据块,最后为2个字节的CRC验证码。

可见,读写SD 卡的操作都是在初始化后基于SD 卡命令和响应完成操作的,写、读SD 卡的程序流程图如图6和图7所示。

另外,利用winhex 软件,可以找到音乐文件数据在SD 卡中所处扇区号。

在读取SD 卡数据时可以直接从所需位置开始读取。

②WAV 文件
本次作用采用的音频文件为微软公司开发的WAV 音频文件,WAV 文件格式是一种由微软和IBM 联合开发的用于音频数字存储的标准,它采用RIFF 文件格式结构,非常接近于AIFF 和IFF 格式。

WAV 文件主要由WAV 文件的文件头和WAV 声音文件的数据块组成。

WAV 文件的头文件
图6 图7
WAV声音文件的数据块
利用Ultraedit软件我们可以以二进制方式查看WAV文件,将WAV文件数据区的每一个字节按照一定速率顺次送入D/A中,再经过功放电路放大,即可以实现WAV文件的播放。

WAV文件的采样率是指声音信号在“模→数”转换过程中单位时间内采样的次数。

常用的声音文件主要有两种,分别对应于单声道的11.025KHz采样率和双声道44.1KHz采样率,采样率越高的WAV音频文件音质越好。

利用Adobe公司的Audition软件可以生成任意采样率的WAV文件。

③音频信息读取和播放
本次使用的SST89E58RDA工作在11.0592MHz频率下,由于工作频率限制,WAV文件采样率不能过高,否则会由于音频信息写入DA速度不够而使声音失真。

制作时采样率使用3000Hz。

音频信息通过SPI通信从SD卡中读取,在读取到一个数据后立即写入DA。

由于定时器中断的进出会浪费较多时间,所以在程序设计时没有采用定时器中断,仅仅采用了空延迟来对写入速度进行控制。

这样做能获得比较高的写入速度,但是对写入速度的控制不够精确。

4总结
最终该播放器可以稳定播放采样率为3000Hz的WAV音频文件,声音效果一般,人声和伴奏可以分辨,带有一些杂音。

本次作业研究了音乐播放器的模型,实现了对SD卡内数据的读取与处理。

参考资料:
刘文浩,51单片机音乐播放器.pdf
TDA2822 datasheet
SanDisk datasheet
SST芯片datasheet
WAV文件播放.pdf
51单片机与SD卡的接口电路和程序.pdf 电工基地暑期电子制作教材。

相关主题