基于51的单片机的MP3播放器

该文介绍了基于51单片机的MP3播放器制作方法,包括使用BY8001模块连接喇叭和SD卡播放音乐,以及通过单片机的IO口或串口控制播放特定歌曲。用户需将MP3格式的歌曲按顺序命名并放入SD卡,通过单片机的IO口或发送特定串口指令实现播放、切换和停止操作。
摘要由CSDN通过智能技术生成

基于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);

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值