LPC1768 MP3录音和循环播放源码

2019-11-30来源: 51hei关键字:LPC1768  MP3录音  循环播放

LPC1768  

2个程序,一个实现录音 一个实现循环播放

** 实验名:MP3

** KEIL MDK-ARM Standard Version:4.6

** 使用外设: 3.2寸LCD

**********************************************************************************/

/**********************************************************************************

测试说明:

    此程序为MP3测试例程将MP3文件拷入到2G内存卡后,插上3.2寸液晶屏,插入耳机,下载程

    序上电,开始播放歌曲并且在液晶屏上显示MP3文件名称(这里并不支持中文显示),调节

    滑动变阻器可以改变播放声音

***********************************

单片机源程序如下:


/*******************************************************************************

  * Company: Wang Electronic Technology Co., Ltd.

  ******************************************************************************

  * 文件名称:main.c

  * 功能说明:mp3播放

  * 版    本:V1.1

        * 作    者:jeansonm        

  * 日    期:2014-4-22

********************************************************************************

  * 文件名称:

  * 功能说明:

  * 版    本:

        * 更新作者:        

  * 日    期:

        * 更新原因:

********************************************************************************/           

#include                                            

#include "LCD.h"

#include "string.h"

#include "sys.h"

#include "lcd.h"

#include "ff.h"

#include "config.h"

#include "vs1003.h"

#include "mp3.h"

#include "MMC_SD.h"

#include "delay.h"

#include "ssp0.h"

#include "adc.h"


u8 MusicNumber;

u8 temp;

u8 count=0;


u32 datasize=0;           


FATFS fs;            // Work area (file system object) for logical drive

FIL fsrc, fdst,fap,file;      // file objects

FRESULT res,re;         // FatFs function common result code

UINT br, bw,bt;;         // File R/W count

FILINFO finfo,fno;

DIR dirs;


u8 buffer[1024]; // file copy buffer

u8 flag=0;


void ReFresh(u8 *p)

{

        LCD_Clear(Black);                        //清屏

        LCD_DisplayString(60,30,"www#openmcu#com");

        LCD_DisplayString(60,50,"bbs.openmcu.com");

        LCD_DisplayString(60,70,"MP3 Test");

        LCD_DisplayString(60,90,"Play:");

        LCD_DisplayString(100,90,p);

}

/*****************************************************************************

**   Main Function  main()

******************************************************************************/

int main (void)                       

{                  

        u8 i;

        u16 AD_value,AD_Old_value;

        SystemInit();

        Vs1003_Init();                                //vs1003引脚初始化

        Vs1003SoftReset();                //vs1003软件复位

        LCD_Init();                                                //LCD初始化

        LCD_SetTextColor(Red);//设置字体为红色

        LCD_SetBackColor(Black);        //设置背景色为黑色        

        ReFresh("");                                        //刷新屏幕

        USER_ADC_Init();

                     

        SD_Init();                                                 //初始化SD卡

        f_mount(0,&fs);                                //挂载文件系统 

  temp= FindMusic();                //音乐查找

        MusicNumber=temp;

        bw = f_open(&fsrc,filename[0],FA_OPEN_EXISTING | FA_READ);                //打开第一个文件

        ReFresh((u8 *)(filename[0]));


//        VsSineTest(); //正弦波测试  ,会听到滴答声 ,说明VS1003 初始化通过

  while(1)

  {         

                if(datasize>=fsrc.fsize)                //到达文件尾播放完成

                        flag=1;

                if(count++==10)

                {

                         count=0;

                         AD_value=USER_ADC_Get();        //获取AD转换值

                        if(abs(AD_value-AD_Old_value)>30) {

                                        AD_Old_value = AD_value;

                                        AD_value=((AD_value*255)/4096);

                                        AD_value<<=8;                

                                        AD_value+=((AD_Old_value*255)/4096);          

                                        Vs1003_CMD_Write(SPI_VOL,AD_value); //设音量 高八位为左声道 第八位为右声道,这里相同

                        }

                 }

                 if(flag==1)  //文件播放完了

                {

                        flag=0;

                        if(MusicNumber--)         //下一个文件

                        {

                                if(MusicNumber==0)                 //所有文件播放完了

                                {

                                        MusicNumber=temp;                        //从头开始播放

                                }

                                bw = f_open(&fsrc,filename[temp-MusicNumber],FA_OPEN_EXISTING | FA_READ);

                                ReFresh((u8 *)filename[temp-MusicNumber]);        //更新显示

……………………


** 实验名:MP3录音

** KEIL MDK-ARM Standard Version:

** 使用外设: 3.2寸LCD mic头 耳机

**********************************************************************************/

/**********************************************************************************

测试说明:

    此程序为VS1003 MP3播放录音测试例程,将1.mp3文件拷入到2G SD卡根目录下面,将SD卡

    插在开发板上面,插上3.2寸彩屏模块,下载程序到开发板,彩屏显示按键功能信息,

    SD卡初始化成功后彩屏显示对应信息,按下INT0键开始录音,按下Key1键结束录音并播放录音

    文件,按下Key2键播放1.mp3文件

    

    注意:这里录音使用外接麦克风,开发板默认没有配置该麦克风,需要用户另行购买焊接。


/*****************************************

[1] [2] [3] [4] [5]
关键字:LPC1768  MP3录音  循环播放 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481609.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:嵌入式内存的读写方法,以及强制类型转换的知识点
下一篇:LPC2148的ADC多通道数据采集程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Cortex-M3学习LPC1768 - DAC实验
终于逮了个忙里偷闲的机会,就再学一下LPC1768的外围功能吧,循序渐进是学习的基本规则,也许LPC1768的DAC与8位单片机16位单片机里面集成的DAC操作类似,但是既然这是懒猫的学习日志,就顺便把DAC再好好复习一下了,或许能品出个什么味来^_^DAC是Digital to Analog Converter的缩写,中文名就是数模转换器,D/A转换器一般由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压等几部分组成。如下图所示:图1-1 DAC原理框图数字量以串行或并行方式输入,存储于数码寄存器中,数码寄存器输出的名位数码分别控制对应的模拟开关,使数码为1的位在位权网络上产生与其值成正比的电流值或电压值,再由求和电路
发表于 2019-12-02
Cortex-M3学习LPC1768 - DAC实验
Cortex-M3学习LPC1768 - TFT实验
自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。我的开发板上的液晶屏的用的是SPI接口,当然你也可以把它设计成并行口,其接口电路如下所示:话说这个液晶屏的驱动芯片是ILI9325,在网上下载了该芯片的数据手册,好家伙有111页,全是E文呀,没办法,谁让咱是小电工呢,就慢慢啃吧。ILI9325这个芯片的寄存器比较多,不过没关系,我们暂时用到的不是太多,这里只要简要的总结,剩下的还是日后用到了再好好研究吧。1、寄存器03H(Entry Mode),该寄存器主要设置图像的显示模式,包括屏幕的扫描方式(水平扫描或垂直扫描),这直接影响
发表于 2019-12-02
Cortex-M3学习LPC1768 - TFT实验
LPC11XX驱动1602程序_12MHz
LCD.c文件:#include "LPC11XX.h"#include "gpio.h"#include "main.h"#include "Delay.h"#include "LCD.h"/*-----------设置D0-D7为输出口-------------*/void Set_GPIO_Output(void){        LPC_GPIO2->DIR |= (0x1<<0);            
发表于 2019-11-30
LPC1768 GPIO中断实验 八个LED轮流点亮100毫秒
路虎LPC1768开发板 GPIO实验这个例程是将路虎开发板上的八个LED轮流点亮100毫秒,采用SYStick 定时器中断方式做延时  系统时钟设置在100MHZ使用时,短路JP8跳线使能LED。单片机源程序如下:/**************************************************************************//*** @file     main.c* @brief    CMSIS Cortex-M3 GPIO example*           a LED using
发表于 2019-11-30
LPC2148的ADC多通道数据采集程序
#include "config.h"#include "stdio.h"#define   GPIOSET(PIN)  IO0SET = PIN    // 方便修改置位端口#define   GPIOCLR(PIN)        IO0CLR = PIN    // 方便修改清位端口#define   LCD_CON           0x00000250         &nb
发表于 2019-11-30
小广播
何立民专栏 单片机及嵌入式宝典

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

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