LPC1768 MP3录音和循环播放源码

发布者:CrystalDawn最新更新时间: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文件

    

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


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

  * Company: Wang Electronic Technology Co., Ltd.

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

  * 文件名称:main.c

  * 功能说明:mp3播放录音

  * 版    本:V1.1

        * 作    者:jeansonm        

  * 日    期:2014-4-26

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

  * 文件名称:

  * 功能说明:

  * 版    本:

        * 更新作者:        

  * 日    期:

        * 更新原因:

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

#include                                            

#include "LCD.h"

#include "string.h"

#include "sys.h"

[1] [2] [3] [4]
关键字:LPC1768  MP3录音  循环播放 引用地址:LPC1768 MP3录音和循环播放源码

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

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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