原帖地址:http://em78447.blog.163.com/blog/static/9986005120098541118433/
步骤:
第一步:用语音软件mp3小助手将普通.mp3文件转换成8k\10k\12k\..\20k采样率,比如16k,采样率高音质好
第二步:打开WT588D V1.0软件,新建工程
第三步:转换成mp3为wav
第四步:在加载区选16k,加载转换的WAV,选第几段和存储器
第五步:“操作”编译并存为BIN(注意如果是功放电路驱动选择DAC模式,直接的话选择PWM模式)
第六步:试听
第七步:“工具”,下载F5
下载页面下:
第一步选择存储容量(我的16M)
第二步点击连接
第三步连接成功后找到文件路径载入新的BIN文件
第四步下载到SPI存储器
测试:按键P34按下一次播放一段,共5段
char code dx516[3] _at_ 0x003b;
#include <reg52.H>
#include <intrins.h> //_nop_() 0.5ns
//#include <absacc.h>
#include <mb2003.h>
#define uchar unsigned char //0-0xff;0-255
#define uint unsigned int //0-0xffff;0-65535
#define KEY P34
#define DATA P37
#define CS P36
#define CLK P35
uchar tcc0=0;
//函数声明
void delay(uint i); //x=1000,4.89312ms//x=10,0.057510ms//x=1,0,013560ms
void send_wtv(uchar add); //WTV语音函数 add为地址
void delay(uint i) // 22.1184M晶振下x=433时候为2ms,x=3775时候为17ms,x=21时候为100us
{
while(i--);
}
void int_init() //初始化定义中断
{
TMOD=0x00; //定时器T0模式为0
TH0=0x0e;
TL0=0x00; //22M晶震下2.5ms,实际要短
TR0=1; //启动T0
ET0=1; //允许T0中断
// EA=1; //开中断
}
void send_wtv(uchar add) //音乐
{
uchar i;
//外部复位
delay(3775); //延时17ms
CS=0;
delay(433); //延时2ms
for(i=0;i<8;i++)
{
CLK=0;
if(add&0x01)DATA=1; //最低位
else DATA=0;
add>>=1; //右移
delay(21); //100us
CLK=1;
delay(21); //100us
}
CS=1;
}
void main()
{
uchar FD=0;
P3=0xff;
P2=0xff;
P1=0xff;
P0=0xff;
int_init();
EA=1;
while(1)
{
if(!KEY) //按键入
{
delay(2500);
if(!KEY)
{
send_wtv(FD);
FD++;
if(FD==5)FD=0;
while(!KEY); //等待下次键入
}
}
}
}
void int0()interrupt 1 //2.5ms
{
TH0=0x0e;
TL0=0x00; //22M晶震下2.5ms,实际要短
tcc0++;
if(tcc0>=200)
{
tcc0=0;
P32=!P32; //系统指示灯
}
}