MP3范例板(Mega64+VS1003)SD卡程序改进
MP3范例板(Mega64+VS1003)SD卡程序改进:原程序的按键检测程序有问题,播放时会出同按上/下一首曲时跳变N首曲,因此本人进行了改进点击此处下载ourdev_237476.txt(文件大小:8K) 说明:基本程程基本没有改变,保留原设计作者的程序代码,只是按键检测部分增加了延时,并等待按键释放,保证了按键一次操作的准确性。重新改动的程序已在MPS范例板上进行测试,相比以前正常了好多,请大家更进,文件中的库文件请大家改为原来的,改动地方如下:
//修改后的MP3文件
//选上一首/下一首曲有问题的改进,不会发生
void mp3_play(unsigned long FirstClust)
{
uint32 LBA,NextCluster;
uint16 i,data_pointer,rate;
uint8 n,t1;
//unsigned char kk={0x00};
NextCluster = FirstClust;
while (1)
{
LBA =fatClustToSect(NextCluster);
for (i=0;i<SectorsPerCluster;i++)
{
if(flag==0)ReadBlock(LBA+i); //读完后文件指针自动后移
//按键处理程序
//ST/PS键按下
if(!(PINE&STOP))
{
//延时消抖
delay_nms(100);
while(1) //等待按键释放
{
if((PINE&STOP)) break;
}
flag^=0x01;
}
//VOLUP键按下
if(!(PINE&VOLDOWN))
{
//延时消抖
delay_nus(250);
if(!(PINE&VOLDOWN))
{
vol=vol+((uint)(2<<8)+2);
if(vol>=0xFAFA) vol=0xF0F0;
else vs1003_cmd_write(0x0b,vol); //每次左右声道VOL减2
}
}
//VOLDOWN键按下
if(!(PINE&VOLUP))
{
//延时消抖
delay_nus(250);
delay_nus(250);
delay_nus(250);
delay_nus(250);
if(!(PINE&VOLUP))
{
vol=vol-((uint)(2<<8)+2);
if(vol<=0x0505) vol=0x0505;
else vs1003_cmd_write(0x0b,vol); //每次左右声道VOL加2
}
}
//NEXT键按下
if(!(PINE&NEXTSONG))
{
//延时消抖
delay_nms(100);
while(1) //等待按键释放
{
if((PINE&NEXTSONG)) break;
}
goto NEXT; //跳到下一首歌曲
}
//PREV键按下
if(!(PINE&PREVSONG))
{
//延时消抖
delay_nms(100);
while(1) //等待按键释放
{
if((PINE&PREVSONG)) break;
}
if (t>0) //不为第一首则向前一首
{
t=t-2; //返回的循环自动增一,所以这减2
}
else
{
t=t-1; //当第一首时刚减去返回的循环自动增一的值即可
}
goto NEXT;//返回前一首歌曲
}
data_pointer=0;
while(data_pointer<512) //每次512位的数据送解码
{
if(PINB&MP3_DATA_REQ) //允许发送下一数据请求时
{
for(n=0;n<32;n++)
{
vs1003_data_write(BUFFER);
data_pointer++;
}
}
if (data_pointer==511) break; //如果现在的数据不够了,则跳出来
}
}
NextCluster = fatNextCluster(NextCluster);
if (NextCluster >=(CLUST_RSRVD&FAT_MASK))break;
}
NEXT:
//kk=t+32+17; //调试用,用于检测功能
//LCD_clear();
//LCD_write_String(0,0,kk);
delay_nus(1);//下一首歌曲
}
附件中已注明,敬请注意! 呵呵,可以算个COOL帖了,但是错区了,AVR的版主可以加裤子了~ 以下蓝色文字由版主:kingofkings 于:2008-03-24,22:01:42 加入。<font color=black>请发贴人注意:本贴放在这分区不合适,即将移走
原来分区:AVR32技术论坛
即将移去的分区:AVR (原ourAVR.com) 技术论坛
移动执行时间:自本贴发表0小时后
任何的疑问或咨询,请可随时联系站长。谢谢你的支持!</font> 楼主可否将FAT文件奉上?偶也在搞个MP3,外挂的是金士顿1G的SD卡,查询得知为FAT32格式……
借用你的FAT文件,(*^__^*) 嘻嘻……
劳烦发个邮件或者Q邮啊:lonely84@163.com Q:464466045 不胜感激~~~~ 阿莫的MP3范例板中有,如果在这上存,怕你看不明白~见谅~保留MP3范例板原作者的版本 学习学习再学习 有的网友说阿莫提供的OK.hex不行,经上面网友反应,特把上述原代码共享
MP3板SD卡MP3播放ourdev_488351.rar(文件大小:170K) (原文件名:MP3板SD卡MP3播放1.rar)
希望网友能看明白1楼所作的说明,也可能是我的意思让网友不太明白吧 mark 来个MARK mark Mark 学习 学习 mark mark mark!!!
页:
[1]