STC单片机WAV播放器.pdf
《STC单片机WAV播放器.pdf》由会员分享,可在线阅读,更多相关《STC单片机WAV播放器.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 基于 STC12 单片机的 WAV 播放器 物电学院电信二班 小组成员:张景宝、李镇宇、周方媛、设计特点 1、米用 PWM 调制方式,使硬件简单,实现容易。2、由于没有专用解码芯片,所以只能播放 WAV 音轨。3、通过软件自动适应音乐采样率。4、设计电池接口,可便携。5、声音大小可通过硬件调整。_、基本原理 将 PCM 文件结合采样率调制到 PWM,采取适当滤波,驱动耳机即可还 原音乐文件。三、硬件设计 1、电源部分 2、SD 卡部分 3、音频接口部分 4、CPU 部分 四、软件设计 1、编译平台:KEIL V9.0 9 级优化 2、使用资源情况 3、SD 卡低层驱动/*-功能描述:向 SD
2、 卡写命令-隶属模块:SD 卡模块-函数属性:内部-参数说明:SD 卡的命令是 6 个字节,pcmd 是指向命令字节序列的指针-返回说明:命令写入后,SD 卡的回应值,调用不成功,将返回 0 xff*/u8 SD_SendCommand(u8 cmd,u32 arg,u8 crc)unsigned char r1;unsigned char Retry=0;/SPI_ReadWriteByte(0 xff);/片选端置低,选中 SD 卡 SD_CS=0;/打开片选/发送 SPI_ReadWriteByte(cmd|0 x40);/分别写入命令 SPI_ReadWriteByte(arg 24)
3、;SPI_ReadWriteByte(arg 16);SPI_ReadWriteByte(arg 8);SPI_ReadWriteByte(arg);SPI_ReadWriteByte(crc);/等待响应,或超时退出 while(r1=SPI_ReadWriteByte(OxFF)=OxFF)Retry+;if(Retry 200)break;/关闭片选 在总线上额外增加 8 个时钟,让 SD 卡完成剩下的工作 SPI_ReadWriteByte(0 xFF);SD_CS=1;/打开片选/返回状态值 return r1;/*-功能描述:初始化 SD 卡,使用 CMD1-隶属模块:SD 卡模块
4、-函数属性:内部-参数说明:无-返回说明:调用成功,返回 0 x00,否则返回 INIT_CMD1_ERROR(sd.h*/u8 SD_Init()unsigned char time,temp,i;SPI_Init();SPI_SetSpeed(3);/设置到低速模式 SD_CS=1;/打开片选 for(i=0;i512)return RES_PARERR;岀扇区 if(SD_SendCommand(CMD17,sector 0 xfffe)超时错误 SD_CS_DEASSERT;return RES_ERROR;while(response!=0 xfe);等待回应 if(offset)跳
5、过 offset(偏移字节数)个数据 do SPI_ReadWriteByte(0 xff);while(-offset);if(buff)do 接收到的数据块数据存入缓冲区 *buff+=SPI_ReadWriteByte(0 xff);while(-count);else /dummy if(byteLeft)/跳过 byteLeft 个数据 do /读取字节超/读命令发送 SPI_ReadWriteByte(Oxff);while(-byteLeft);SPI_ReadWriteByte(Oxff);/忽略 CRC 校验(两个字节)SPI_ReadWriteByte(Oxff);res=
6、RES_OK;SD_CS_DEASSERT;SPI_ReadWriteByte(Oxff);等待 8 个 clk return res;4、数据缓冲区设计 BYTE xdata CacheOSIZE;BYTE xdata Cache1SIZE;LPBYTE data Cache;LPBYTE data AudioCache=CacheO;if(Cache=CacheO)Cache=Cache1;else Cache=CacheO;5、音乐还原过程 void TimerO(void)interrupt 1 CCAPOL=CCAPOH=AudioCacheAudioPos;AudioPos+;if
7、(AudioPos=SIZE)play_f=1;AudioPos=0;if(AudioCache=CacheO)AudioCache=Cache1;else AudioCache=CacheO;6 WAV 文件格式与自适应采样率 static DWORD load_header(void)DWORD sz,f;BYTE b,al=O;if(pf_read(Cache,12,&rb)return 1;if(rb!=12|LD_DW0RD(Cache+8)!=FCC(W,A,V,E)return O;for(;)pf_read(Cache,8,&rb);if(rb!=8)return O;sz=L
8、D_DWORD(&Cache4);switch(LD_DWORD(&CacheO)case FCC(f,m,t,):if(sz&1)sz+;/*0:lnvalid format,1:1/0 error,=1024:Number of samples*/*Load file header(12 bytes)*/*Get Chunk ID and size*/*Chunk size*/*FCC*/*fmt chunk*/*Align chunk size*/if(sz 100|sz 16)return 0;/*Check chunk size*/if(rb!=sz)return 0;if(Cach
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC 单片机 WAV 播放
限制150内