使用51单片机实现的高性能MP3播放器

基于51单片机的MP3播放器

1.用到的模块

51单片机开发板一块,BY-8001,喇叭一个,SD卡

2.介绍BY8001模块


以上是BY8001的基本信息

这里是对BY8001的基本功能进行解释说明
看完以上的三张信息我们就可以开始对BY8001开始研究了

3.直接用IO口来使BY8001播放音乐

我们先将BY8001上的VCC和GND接到单片机上的VCC和GND,SPK1和SPK2接到喇叭上,这两根线只要接到喇叭的两个口上就好了,剩下的就是来启动模块了,在这之前我们要先准备一张SD卡。
SD卡里面的歌曲顺序就是播放顺序,所以我们一定要排好序,我们将歌曲 下载到SD卡里面必须是MP3格式的,不然模块会识别不了,我们把歌曲的命名为001,002这种类型的,下载好后我们将SD卡插入到BY8001内,我们只要把BY8001的IO1接地就会播放第一首歌,IO2接地就会播放第二首,具体如下,当然我们可以把BY8001上的IO口接到单片机的IO口上,通过按键来将IO口置成低电平从而来自主选择播放的歌曲

4.通过串口通信来播放歌曲

通过串口来控制,我们必须在SD卡里面创建一个文件夹取名为01,如果想要两个文件夹就把第二个命名为02,歌曲放在文件夹里,必须命名为001类型
我们还要把BY8001上的RX与TX分别与单片机上的TX与RX相连

一下是经常用到的指令


例如我们要开始播放歌曲我们就通过串口发送0x7E,0x03,0x01,0x02,0xEF
以下为代码示例

// An highlighted block
#include<regx52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX=P3^1;
sbit k1=P3^6;
sbit k2=P3^7;
sbit k3=P3^4;
sbit k4=P3^5;

uchar Music1[7]={0x7e,0x05,0x42,0x00,0x01,0x46,0xef};
uchar Music2[7]={0x7e,0x05,0x42,0x00,0x02,0x45,0xef};
uchar Music3[7]={0x7e,0x05,0x42,0x00,0x03,0x44,0xef};
uchar Music4[7]={0x7e,0x05,0x42,0x00,0x04,0x43,0xef};
uchar a;
void Send_dat(uchar dat);
void start();
void next();
void last();
void stop();
void lll();
void ll2();
void delay(uint x)
{
		uint i,j;
		for(i=x;i>0;i--)
				for(j=600;j>0;j--);
}

void Uart_init()
{
 TMOD=0x20;
 SCON=0x50;
 TR1=1;
 TH1=0xfd;
 TL1=0xfd;
 EA=1;
 ES=1;
}
void main()
{
	uchar i;
	Uart_init();
	delay(500);
		
		
		if(k1==0)
		{start();  
			}
		if(k2==0)
		{next();
			if(k3==0)
			{last();}
		}
		if(k4==0)
		{stop();}
			
//		if(k1==0)
//		{lll();}
//		if(k2==0)
//		{ll2();}
//		if(k3==0)
//		{start();}

}
void stop()
{Send_dat(0x7E);
	Send_dat(0x03);
	Send_dat(0x02);
	Send_dat(0x01);
	Send_dat(0xEF);


}
void last()
{
Send_dat(0x7E);
	Send_dat(0x03);
	Send_dat(0x04);
	Send_dat(0x07);
	Send_dat(0xEF);


}
void Send_dat(uchar dat)
{
	SBUF=dat;
	while(!TI);
	TI=0;

}
void start()//开始播放
{
Send_dat(0x7E);
	Send_dat(0x03);
	Send_dat(0x01);
	Send_dat(0x02);

	Send_dat(0xEF);
}
void next()//下一首
{
	Send_dat(0x7E);
	Send_dat(0x03);
	Send_dat(0x03);
	Send_dat(0x00);
	Send_dat(0xEF);

}
void serial() interrupt 4
{
if(RI==1)
{
RI=0;
	RX=SBUF;
	Send_dat();
	
}
}
void lll()
{
Send_dat(0x7E);
	Send_dat(0x05);
	Send_dat(0x41);
	Send_dat(0x00);
	Send_dat(0x03);
	Send_dat(0x45);
	Send_dat(0xEF);
}
void ll2()
{
Send_dat(0x7E);
	Send_dat(0x05);
	Send_dat(0x41);
	Send_dat(0x00);
	Send_dat(0x01);
	Send_dat(0x45);
	Send_dat(0xEF);

}

具体的播放歌曲大家可以根据自己的命名来修改代码

物联沃分享整理
物联沃-IOTWORD物联网 » 使用51单片机实现的高性能MP3播放器

发表评论