一.硬件方案
本设计以单片机为核心控制器,设计一个音乐播放器,主要完成TF卡存储的音频文件数据提取及播放任务。该播放器类似于个人计算机的音乐播放软件,可识别、提取TF卡所存储的WMA、MP3格式的文件并可自行完成音频解码数据处理,最后送扬声器或耳机进行播放。通过自定义键盘设定,当有键按下时,能控制歌曲的播放或音量,并通过LCD来显示播放音乐的时间等。
主要由51单片机+MP3播放模块(自带3W功放)+3W音乐喇叭+U盘插口+SD卡+耳机接口+按键+液晶显示屏;如图:
二.设计功能
(1)读取U盘或SD卡里面的音乐,在屏幕上面显示播放状态,当前的音量。
(2)按键可进行上一曲、下一曲切换,音量大小可调。
(3)支持TF内存卡(支持最大32g),U盘,以及支持MP3和wav格式音乐,同时可外接耳机,音质超好。
(4)可通过蓝牙模块实现手机APP控制、和播放。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
/********************************************************************
* 名称 : main()
* 功能 : 主函数
* 变量 : 无
* 返回值 : 无
********************************************************************/
void main(void)
{
unsigned char M_VOL,flag=1;
unsigned char Table[2];
Delay_ms(1000);
LCD_init(); //初始化液晶
LCD_clear();
LCD_write_chinese_string(10,0,12,5,0,0);//显示“音乐播放器”
LCD_write_chinese_string(0,2,12,2,5,0);//显示“状态”
//LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
LCD_write_chinese_string(40,2,12,2,11,0);//显示“停止”
LCD_write_chinese_string(0,4,12,2,7,0);//显示“音量”
UART_Init();
Delay_ms(100);
M_VOL = 25;
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table);
while(1)
{
if(!KEY2)//上一首
{
Delay_ms(20);
Music_UP();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
while(!KEY2);
Delay_ms(500);
}
if(!KEY3)//下一首
{
Delay_ms(20);
Music_DOWN();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
while(!KEY3);
Delay_ms(500);
}
if(flag==1)
{
if(BUSY)
{
Delay_ms(20);
Music_DOWN();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
Delay_ms(500);
}
}
if(!KEY4)//音量加
{
Delay_ms(20);
M_VOL++;
if(M_VOL>30)M_VOL = 30;
Music_Vol(M_VOL);
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table);
Delay_ms(500);
}
if(!KEY5)//音量减
{
Delay_ms(20);
if(M_VOL<1)M_VOL = 1;
M_VOL--;
Music_Vol(M_VOL);
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table);
Delay_ms(500);
}
if(!KEY1)//停止
{
Delay_ms(20);
if(!KEY1)//停止
{
flag++;
if(flag==2)flag=0;
//Delay_ms(20);
if(flag==0)
{
Music_STOP();//停止
LCD_write_chinese_string(40,2,12,2,11,0);//显示“停止”
}
if(flag==1)
{
Music_Play();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
}
while(!KEY1);
Delay_ms(500);
}
}
if (UART_Get == '1')
{
UART_Get = 0;
flag++;
if(flag==2)flag=0;
//Delay_ms(20);
if(flag==0)
{
Music_STOP();//停止
LCD_write_chinese_string(40,2,12,2,11,0);//显示“停止”
}
if(flag==1)
{
Music_Play();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
}
}
if (UART_Get == '2')
{
UART_Get = 0;
Music_UP();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
}
if (UART_Get == '3')
{
UART_Get = 0;
Music_DOWN();
LCD_write_chinese_string(40,2,12,2,9,0);//显示“播放”
}
if (UART_Get == '4')
{
UART_Get = 0;
M_VOL++;
if(M_VOL>30)M_VOL = 30;
Music_Vol(M_VOL);
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table);
}
if (UART_Get == '5')
{
UART_Get = 0;
if(M_VOL<1)M_VOL = 1;
M_VOL--;
Music_Vol(M_VOL);
Table[0] = M_VOL/10+0x30;
Table[1] = M_VOL%10+0x30;
LCD_write_english_string(40,4,Table);
}
}
}
上一篇:基于51单片机GSM模块的家庭火灾报警系统设计
下一篇:基于51单片机的WiFi的温湿度智能开关设计
推荐阅读最新更新时间:2024-11-16 22:49
设计资源 培训 开发板 精华推荐
- NV47701PDAJGEVB:350 mA LDO 稳压器评估板
- 条形T12-修改诱骗芯片版本(山寨修改版)
- 使用 ON Semiconductor 的 MC33129 的参考设计
- 2.13寸墨水屏驱动板
- 使用 ROHM Semiconductor 的 BD4839 的参考设计
- 具有 LTC2217 16 位 105Msps、高速和高动态范围 ADC 的演示板
- EVAL-ADuM1241EBZ,基于 ADuM1447ARQZ 数字隔离器的 iCoupler 评估系统
- [已验证] IP5306模块
- 【训练营】机器狗狗
- LTC3622EDE-23/5 5V/3.3V Vout、突发模式操作、同相开关同步降压稳压器的典型应用电路