欢迎来到天天文库
浏览记录
ID:14122721
大小:182.50 KB
页数:11页
时间:2018-07-26
《基于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
此文档下载收益归作者所有