基于单片机mp3音乐播放器设计

发布者:知音学友最新更新时间:2021-09-29 来源: eefocus关键字:单片机  mp3  音乐播放器 手机看文章 扫描二维码
随时随地手机看文章

一.硬件方案

本设计以单片机为核心控制器,设计一个音乐播放器,主要完成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);

        }

}


}

关键字:单片机  mp3  音乐播放器 引用地址:基于单片机mp3音乐播放器设计

上一篇:基于51单片机GSM模块的家庭火灾报警系统设计
下一篇:基于51单片机的WiFi的温湿度智能开关设计

推荐阅读最新更新时间:2024-11-16 22:49

单片机如何输出4-20ma电流信号?
电路原理图 电路分析 如上图所示,是一个压控恒流源(VCCS),VS1来自单片机DAC引脚的模拟电压信号。经过R1,C1组成的低通滤波器进行滤波后送往运放,从伯德图中可以看出该滤波器在-3dB增益处对应的截止频率为1.59K,足以用来滤除高频数字干扰信号。 运放在深度负反馈条件下具有虚短的特性,DAC信号进入运放的同相输入端后,运放会控制输出,通过反馈回路使得反向输入端电压逼近同相输入端电压,最后保持相等。 这个过程中三极管进入线性区,IC电流逐渐变大,流过电阻R3的电流增大,R3两端电压也随之增大,最终运放反向输入端电压等于同相输入端电压,电路进入稳定状态。 电路中电阻R2,R3,三极管T1,和输出引脚(连接电流表)为串
[单片机]
单片机定时计数器初值设置
定时器实际上也是计数器,只是计数的是固定周期的脉冲 定时器实际上也是工作在计数方式下,只是计数的是固定周期的脉冲,由于脉冲周期固定,由计数值可以计算时间,有定时功能 定时和计数只是触发来源不同(时钟信号和外部脉冲)其他方面是一样的。 单片机里的寄存器可以看成一个个电子开关,用来切换不同的功能、信号。 定时也是通过计数来实现的,定时实际上是对机器周期的计数,如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么
[单片机]
基于MCS-51单片机的实时在线环境监测系统
  1 引言   基于GPRS和MCS-51单片机的数据采集器是一种实时在线 环境监测 系统,它采用分组无线业务GPRS将实时在线检测到的环境状况通过Internet传到环保部门监测信息处理中心,监测信息实时处理软件通过对采集来的数据进行整理分析,使环保机关足不出户即能掌握辖区监测点和污染源的监测指标信息,从而使环保机关的管理在机制上实现从人工化向信息化的转变,克服了过去对各项环境指标的检测主要靠环保人员到现场手工取样,带回实验室分析后再作出结论的周期长、效率低的问题;还可以提高对环境的监测频次,克服过去由于监测频次低,总结出来的环境质量和污染源监测信息可信度较低的问题。   2 监测系统的工作过程      
[单片机]
基于MCS-51<font color='red'>单片机</font>的实时在线环境监测系统
基于单片机的交通信号灯控制系统设计
本系统采用STC89C51单片机以及单片机最小系统和74HC245驱动电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共阴极数码管显示,并能通过按键对定时进行设置。 本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示。按键可以控制禁行、深夜模式、复位、东西通行、南北通行、时间加、时间减、切换等功能。 共四个二位阴极数码管,东南西北各一个显示时间,四个数码管的阴极都接到STC89C51的P1口,阳极接到74HC245芯片上,通过P0口控制74HC245芯片,起到驱动放大作用。共12个发光二极管,四个路口每个路口各有一个红(禁行)、黄(警告)发光二
[单片机]
基于<font color='red'>单片机</font>的交通信号灯控制系统设计
基于MSP430单片机的路灯/饰灯无线监控终端的设计
1 引言 随着社会经济的发展,城市照明设施的功能从单纯的以照明为主转变为实现美化环境、改善形象、活跃夜市经济的目的。对城市灯饰的管理与控制迫切需要一种科学、合理、高效的方法。因此,提供一种有效而合理的控制与管理的方法,对城市路灯与饰灯的运行状态进行远程智能监控显得极为重要。针对城市路灯和饰灯“终端多、地域广、户外、分散、信息量不大”等特点,总体上选择无线通讯方式比较合适。但对路灯进行单灯控制和相邻楼宇的亮化控制时,可以采用有线通信的方式。这样,既克服了传统的路灯控制方法、控制方式单一而无法满足实时监控和管理要求的弱点,又能适应现代城市队灯饰控制的要求。而无线监控终端是灯饰监控系统的下位机,是确保开关灯及时性、准确性、节约能源
[单片机]
基于MSP430<font color='red'>单片机</font>的路灯/饰灯无线监控终端的设计
51单片机C语言教程(七) 表达式1
上课到这一课相隔了好长一段时间,这些日子里收到不少网友的来信支持和鼓励,要求尽快完成余下的部分。出门在外的人不得不先为吃饭而努力,似乎这也成为我的借口,以后每晚抽空打一些吧这样大家也就可以不用隔太久就能看到一些新东西。或许我的笔记并不是很正确,但我尽量的保证每课的实验都会亲自做一次,包括硬件的部分,已求不会误人子弟。 随着访问量不断的增加,网站已启用了www.cdle.net的国际域名,在这里我感谢各位一直支持磁动力工作室的朋友,更要感激身在远方一直默默支持我的女友。                     明浩 2003-7-14 晚   呵,费话少说了。上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句
[单片机]
51<font color='red'>单片机</font>C语言教程(七) 表达式1
8051单片机进行8路LED模拟分支控制
一、设计题目 用8051的P1口作为输入、P0口作为输出,通过74LS244接8路LED模拟分支控制。 P1.0为低电平时,点亮一LED;P1.0为高电平、P1.1为低电平时点亮全部LED;当P1.0、P1.1都为高电平时,LED按四个一组,轮流反复点亮;P1.0、P1.1、P1.2都为高电平时,8LED逐一点亮并反复循环。 二、设计目的 1. 进一步熟悉和掌握单片机的结构及工作原理。 2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 3. 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数 的计算方法。 4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5. 通过完成
[单片机]
8051<font color='red'>单片机</font>进行8路LED模拟分支控制
单片机基础(七):串行通信概念及其工作原理
通信的基本概念 按照信息的传递方向,通信分为:单工、半双工、全双工三种 单工:一端发送,一端接收 半双工:通信双方都可以发送与接收,但同一时刻,数据传递方向是单一的 全双工:通信双方都可以发送与接收,可以同时进行发送与接收   并行通信和串行通信 并行通信:多个二进制位同时发送/同时接收,传输速度快,适合近距离传输 串行通信:数据排队接收/发送,占用线路少,远距离传输有成本优势   同步通信和异步通信 串行异步通信:根据通信双方各自的时钟基准,按照约定好的速率传输串行数据,实际上若通信双方的时钟基准有偏差,就有可能产生错误 串行同步通信:通信双方按照同一个时钟信号为基准,根据时钟信号传输串行数据。串行同步通信可靠性
[单片机]
<font color='red'>单片机</font>基础(七):串行通信概念及其工作原理
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved