基于stc12单片机的wav播放器

基于stc12单片机的wav播放器

ID:14122721

大小:182.50 KB

页数:11页

时间:2018-07-26

基于stc12单片机的wav播放器_第1页
基于stc12单片机的wav播放器_第2页
基于stc12单片机的wav播放器_第3页
基于stc12单片机的wav播放器_第4页
基于stc12单片机的wav播放器_第5页
资源描述:

《基于stc12单片机的wav播放器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于STC12单片机的WAV播放器物电学院电信二班小组成员:张景宝、李镇宇、周方嫒一、设计特点1、采用PWM调制方式,使硬件简单,实现容易。2、由于没有专用解码芯片,所以只能播放WAV音轨。3、通过软件自动适应音乐采样率。4、设计电池接口,可便携。5、声音大小可通过硬件调整。二、基本原理将PCM文件结合采样率调制到PWM,采取适当滤波,驱动耳机即可还原音乐文件。三、硬件设计1、电源部分2、SD卡部分3、音频接口部分1、CPU部分二、软件设计1、编译平台:KEILV9.09级优化2、使用资源情况1、SD卡低层驱动/******************************

2、*******************************-功能描述:向SD卡写命令-隶属模块:SD卡模块-函数属性:内部-参数说明:SD卡的命令是6个字节,pcmd是指向命令字节序列的指针-返回说明:命令写入后,SD卡的回应值,调用不成功,将返回0xff*************************************************************/u8SD_SendCommand(u8cmd,u32arg,u8crc){unsignedcharr1;unsignedcharRetry=0;//SPI_ReadWriteByte(0xff)

3、;//片选端置低,选中SD卡SD_CS=0;//打开片选//发送SPI_ReadWriteByte(cmd

4、0x40);//分别写入命令SPI_ReadWriteByte(arg>>24);SPI_ReadWriteByte(arg>>16);SPI_ReadWriteByte(arg>>8);SPI_ReadWriteByte(arg);SPI_ReadWriteByte(crc);//等待响应,或超时退出while((r1=SPI_ReadWriteByte(0xFF))==0xFF){Retry++;if(Retry>200){break;}}//关闭片选//在总线

5、上额外增加8个时钟,让SD卡完成剩下的工作SPI_ReadWriteByte(0xFF);SD_CS=1;//打开片选//返回状态值returnr1;}/*************************************************************-功能描述:初始化SD卡,使用CMD1-隶属模块:SD卡模块-函数属性:内部-参数说明:无-返回说明:调用成功,返回0x00,否则返回INIT_CMD1_ERROR(sd.h中有定义)***********************************************************

6、**/u8SD_Init(){unsignedchartime,temp,i;SPI_Init();SPI_SetSpeed(3);//设置到低速模式SD_CS=1;//打开片选for(i=0;i<0x0A;i++)//初始时,首先要发送最少74个时钟信号,这是必须的!!!{SPI_ReadWriteByte(0xff);//120个时钟}SD_CS=0;//打开片选time=0;do{temp=SD_SendCommand(CMD0,0,0x95);//写入CMD0复位SD卡time++;if(time==200){SD_CS=1;//打开片选}}while(temp!

7、=0x01);time=0;do{temp=SD_SendCommand(CMD1,0,0xff);//写入CMD1激活SD卡time++;if(time==200){SD_CS=1;//打开片选}}while(temp!=0);SPI_SetSpeed(0);temp=SD_SendCommand(CMD59,0,0x01);if(temp!=0x00){returntemp;//命令错误,返回r1}temp=SD_SendCommand(CMD16,512,0xff);if(temp!=0x00){returntemp;//命令错误,返回r1}SD_CS=1;//打开

8、片选SPI_ReadWriteByte(0xff);//按照SD卡的操作时序在这里补8个时钟return0;}/*----------------------------------------------------------*//*InitializeDiskDrive*//*----------------------------------------------------------*/DSTATUSdisk_initialize(void){DSTATUSstat;stat=SD_Init();returnst

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。