课 程 设 计 报 告

课程设计名称: 音乐播放器 院 系: 信息工程学院 学生姓名: 班 级: 学 号:

成 绩: 指导教师:

开课时间: 2016-2017 学年 2 学期

音乐播放器

一、实践的内容和要求

1.1实验内容

学习WAV格式音频播放原理、数字音频接口及的相关知识。了解模拟音频信号和数字音频信号的概念。掌握编写音频播主要内容 放器的方法。实现音频播放,小键盘输入操作。 1.2实验要求

本系统要做一个音乐播放器,使用通用定时器定时,用比较输出功能,输出乐谱频率的方波产生声音,对 3 首歌曲编码, 其支持 WAV 格式音频播放(上键:暂停;左键:上一首;右键:下一首)。利用硬件ARM 嵌入式开发平台、 用于 ARM7TDMI 的 JTAG 仿 真器、PC 机 Pentium100开发实现实现音频播放。主要实现:上一首按键:当点击上一首按键时,当前播放歌曲的上 一首歌首被播放。下一首按键:当点击下一首按键时,当前播放歌曲的下一首歌曲即被 播放。当点击停止键时,当前歌曲即会被停止。 播放界面设计: 在歌曲进行播放时, 界面应包含所有的按键, 并且要歌曲的曲目单。

二、实践原理

WAV播放器系统要求能够对mp3、wav格式的音频文件进行解码,处理起来速度是有要求的,尤其是对320Kbps的MP3格式数据流的处理,必须非常快,才能实现MP3的流畅播放,可供选择的八位机有AVR、PIC,可供选择的32位处理器有SAMSUNG、STM32、ATMEL等。选择MCU优先考虑于拥有丰富的RAM,八位机RAM主要靠扩展,内部RAM一般在4Kbyte以内,32位机里面,SAMSUNG一般不内带RAM,也要外扩。

本实验使用了ARM7处理器,MP3解码可以有两种方法,一是通过ARM处理器软解码,通过对MP3数据格式的解析实现MP3播放,二是通过外部解码芯片直接解码。第一种方法在解码高码率的MP3时,ARM7处理能力吃紧,而且STM32还需要外部DAC来做音频输出,所以采用第二种方法进行解码。MP3常见的解码芯片有VS100X系列和STA01系列,STA01需要外接DAC做音频输出,而VS1003自带DAC,且解码的文件格式包含mp3和wav,另外它还可以实现录音功能,方便以后进行功能的拓展应用。

1

三、实践步骤

3.1功能设计

开机后,先初始化各外设,然后检测字库文件夹是否存在,如果有问题,则提示Error,如果检测无问题,则开始循环播放 SD卡内MUSIC 文件夹里面的歌曲,在 TFTLCD 上显示歌曲名字、播放时间、歌曲总时间、歌曲数目、当前歌曲的编号等信息。KEY0选择下一首,KEY2 选择上一首,KEY_UP 控制暂停/继续播放。 3.2实验步骤

1)初始化 WM8978,这个过程包括软复位、DAC 设置、输出设置 和音量设置等。 2)初始化 I2S,此过程主要设置 SPI_I2SCFGR 寄存器,设置 I2S 模式、I2S 标准、时钟空闲电平和数据帧长等,最后开启 I2S TX DMA,使能 I2S 外设。 在库函数中初始化 I2S 调用的函数为:void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); 结构体 I2S_InitTypeDef 的定义为:

typedef struct

{ uint16_t I2S_Mode; uint16_t I2S_Standard;

uint16_t I2S_DataFormat; uint16_t I2S_MCLKOutput; uint32_t I2S_AudioFreq;

uint16_t I2S_CPOL; }I2S_InitTypeDef;

第一个参数用来设置 I2S 的模式,也就是设置 SPI_I2SCFGR 寄存器的 I2SCFG 相关位。可以配置为主模式发送 I2S_Mode_MasterTx,主模式接受 I2S_Mode_MasterRx,从模式发送 I2S_Mode_SlaveTx 以及从模式接受 I2S_Mode_SlaveRx 四种模式。第二个参数 I2S_Standard 用来设置 I2S 标准,这个前面已经讲解过。可以设置为:飞利浦 标准 I2S_Standard_Phillips,MSB 对齐标准 I2S_Standard_MSB,LSB 对齐标准

I2S_Standard_LSB 以及 PCM 标准 I2S_Standard_PCMShort。 第三个参数 I2S_DataFormat 用来设置 I2S 的数据通信格式。这里实际包含设置 SPI_I2SCFGR 寄存器的 HCLEN 位(通道长度)以及 DATLEN 位(传输的数据长度)。当我们 设置为 16 位标准格式

I2S_DataFormat_16b 的时候,实际上传输的数据长度为 16 位,通道长度 为 16 位。当我们设置为其他值的时候,通道长度都为 32 位。第四个参数 I2S_MCLKOutput用来设置是否使能主时钟输出。我们实验会使能主时钟输出。第五个参数 I2S_AudioFreq 用来设置 I2S

2

频率。实际根据输入的频率值,会来计算 SPI 预 分频寄存器 SPI_I2SPR 的预分频奇数因子以及 I2S 线性预分频器的值。这里支持 10 中频率:

#define I2S_AudioFreq_192k ((uint32_t)192000) #define I2S_AudioFreq_96k ((uint32_t)96000) #define I2S_AudioFreq_48k ((uint32_t)48000) #define I2S_AudioFreq_44k ((uint32_t)44100) #define I2S_AudioFreq_32k ((uint32_t)32000) #define I2S_AudioFreq_22k ((uint32_t)22050) #define I2S_AudioFreq_16k ((uint32_t)16000) #define I2S_AudioFreq_11k ((uint32_t)11025) #define I2S_AudioFreq_8k ((uint32_t)8000) #define I2S_AudioFreq_Default ((uint32_t)2)

第六个参数 I2S_CPOL 用来设置空闲状态时钟电平,取值为高电平 I2S_CPOL_High 以及低电平 I2S_CPOL_Low。

3)解析 WAV 文件,获取音频信号采样率和位数并设置 I2S 时钟分频器这里,要先解析 WAV 文件,取得音频信号的采样率(fs)和位数(16 位或 32 位),根据这两个参数,来设置 I2S 的时钟分频,这里我们用前面介绍的查表法来设置即可。这是我们单独写了一个设置频率的函数为 I2S2_SampleRate_Set。

4)设置 DMA I2S 播放音频的时候,一般都是通过 DMA 来传输数据的,所以必须配置 DMA,本章我们用 I2S2,其 TX是使用的 DMA1 数据流 4 的通道 0 来传输的。并且STM32F4 的 DMA 具有双缓冲机制,这样可以提高效率,大大方便了我们的数据传输,本章将 DMA1 数据流 4 设置为:双缓冲循环模式,外设和存储器都是 16 位宽,并开启 DMA 传输完成中断(方便填充数据)。

5)编写 DMA 传输完成中断服务函数为了方便填充音频数据,我们使用 DMA 传输完成中断,每当一个缓冲数据发送完后,硬件自动切换为下一个缓冲,同时进入中断服务函数,填充数据到发送完的这个缓冲。

6)开启 DMA 传输,填充数据 最后,我们就只需要开启 DMA 传输,然后及时填充 WAV 数据到 DMA 的两个缓存区即 可。此时,就可以在 WM8978 的耳机和喇叭通道听到所播放音乐了。操作方法为: DMA_Cmd(DMA1_Stream4,ENABLE);//开启 DMA TX 传输,开始播放。

3

android音乐播放器课程设计报告,音乐播放器课程设计报告相关推荐

  1. java课程设计-音乐播放器_Java程序设计课程设计报告音乐播放器

    Java程序设计课程设计报告音乐播放器 <Java及Java web应用开发>实验报告 设计题目: Java音乐播放器 专 业 计算机信息管理 班 级 1班 学 号 姓 名 2014年12 ...

  2. java音乐播放器文库_微机原理课程设计报告——音乐播放器.doc

    微机原理课程设计报告--音乐播放器.doc 微机 应用系统 课程设计报告 题 目 电子音乐播放器 专业班级 电子信息科学与技术 1001 班 设计学生 完成时间 2012 年 6 月 27 日 湖南文 ...

  3. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx

    java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...

  4. 单片机音乐播放器课程设计C语言,单片机课程设计简易音乐播放器

    单片机课程设计简易音乐播放器 论文题目:简易音乐播放器所属系部:电子工程系 指导教师: 学生姓名: 学 号: 专 业: 电子信息工程技术 题目: 简易音乐播放器任务与要求:本设计以 MCS-51 系列 ...

  5. 单片机音乐播放器课程设计C语言,单片机音乐播放器课程设计中音乐代码怎么弄...

    单片机音乐播放器课程设计中音乐代码怎么弄 答案:2  信息版本:手机版 解决时间 2019-10-06 13:16 已解决 2019-10-06 02:07 单片机音乐播放器课程设计中音乐代码怎么弄 ...

  6. java课程设计-音乐播放器_java课程设计---java音乐播放器.doc

    java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...

  7. java课程设计-音乐播放器,基于java的音乐播放器设计.doc

    摘要:音乐是生活的必需的,它能够缓解人们焦躁的心情,调节现代化生活的节奏,让人们能够舒缓身心.一个好的音乐播放器,能够实现个性化的功能,它能够根据个人的喜好来推荐歌曲.深流音乐播放器正是实现了此功能, ...

  8. 安卓APP源码和报告——音乐播放器

    课 程 设 计 报 告 院 系: 专 业: 题 目: 科 目: 学 生: 指导教师: 完成时间: 目 录 1. 引言1 1.1 目的1 1.2 背景1 2. 需求分析1 3. 系统设计1 3.1总体设 ...

  9. 《移动应用开发》实验报告——音乐播放器

    代码仓库: https://gitee.com/shentuzhigang/demo-project/tree/master/vue-music-player Blog: https://shentu ...

  10. android 音乐播放器专辑图片旋转,Android应用开发之简易、大气音乐播放器实现专辑倒影效果...

    今天要实现的功能是实现专辑倒影效果,这个功能已经属于图像处理方面的了,对图像处理我不怎么在行,等一下会介绍一个很实用的工具类,专门用来进行图像处理的.这个工具类不是我写的,我只是拿来用到自己的项目当中 ...

最新文章

  1. Franzis CutOut 9 Professional中文版
  2. 八十七、探究最短路问题:Dijkstra算法
  3. android menu 小红点,Android自定义ActionProvider ToolBar实现Menu小红点
  4. 北交专升本计算机联锁考试题,北交《计算机联锁技术》在线作业一15春满分答案...
  5. 稍微成型点的用WEBSOCKET实现的实时日志LOG输出
  6. java 双向链表_java集合类之LinkedList
  7. 讯达机器人_科大讯飞新品频发完善场景布局“双11”斩获三大平台25项冠军
  8. 强上阿里云之安装MYSQL
  9. 微信公众号-自定义菜单的创建
  10. 数字验证和table格式(KAYAK)
  11. 360木马查杀后mysql数据不能启动
  12. sre和devops_什么是SRE,它与DevOps有什么关系?
  13. python股票量化分析
  14. gtx1660是什么级别的_GTX1660显卡性能怎么样 gtx1660相当于什么显卡
  15. python获取字典第一个元素,从字典中获取第一个元素
  16. 利用Python实现阴阳师自动抽卡
  17. MPLS 次末跳弹出配置_中东版2019款三菱帕杰罗V97配置详情介绍
  18. 【图像处理】基于matlab GUI多功能图像处理系统【含Matlab源码 1876期】
  19. [架构之路-50]:目标系统 - 系统软件 - Linux下的网络通信-8-PON、EPON、GPON
  20. CMake编译C++项目-简单范例-编译脚本-Linux

热门文章

  1. vscode vue开发环境搭建
  2. 一周之内连过5人,HCIE-RS新版实验这么好考?
  3. 第十届计算机大赛获奖作品,我校获第10届中国大学生计算机设计大赛一等奖
  4. 计算机设计大赛的感悟,计算机设计大赛含金量
  5. mysql 定时备份脚本
  6. 统计学(贾俊平《第七版》) 导论部分
  7. juniper使用U盘安装junos10k2系统
  8. python分组求和法_awk分组求和分组统计次数
  9. FasterRCNN之整体框架详解
  10. 一本快速入门ARM64体系结构的编程书