基于STM32F4的mp3、wav音乐播放器 (含代码)
硬件驱动+软件工具类项目
项目需要的技术:
- UCOSIII
- GUI显示
- IIS协议
- 声卡驱动—-资料及参考代码提供
- SD卡驱动—资料及参考代码提供
- Fatfs文件系统
- IIC/SPI 及W25Q128驱动
- 字库在MCU屏的使用
- mp3、WAV解码库的移植及使用–资料及参考代码提供
- JPG、BMP解码库的移植及使用–资料及参考代码提供
- DMA使用
功能基本和现在的MP3设备一样
①能够通过SD卡驱动嵌入文件系统实现对SD卡目录的扫描获取音乐文件(.mp3 .wav等)
②驱动WM8978声卡芯片 使用IIS实现对SD卡读取的音频数据后的向声卡传输 并控制声卡播放音乐
③能够自己在mcu屏中显示MP3播放器相关信息歌曲名。。。。
可以使用字库显示相关中文
1、STM32F4开发板一块(需要音频接口支持)(我用的GEC M4)(注意要买能插LCD屏的、最好有板载wm8978,没有的话可以外接音频驱动模块)作用:主控芯片、处理各种数据
2、800*480 4.3寸电容触摸LCD屏(我用的正点原子的屏)(注意不兼容其他分辨率的屏)作用:显示与触摸控制
3、一张32G以下的SD卡和一个读卡器
作用:存储mp3、wav 文件、图片文件等必要文件
1、把屏幕插到开发板上即可
1、下载好相关资料
2、下载源代码到单片机3、将SD卡根目录文件拷贝到SD卡根目录下
(一)、FATFS文件系统(就是个用来读写SD卡文件的)
1、FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言编写,所以具有良好的硬件平立性,可以移植到 8051、PIC、AVR、SH、Z80、H8、ARM 等系列单片机上而只需做简单的修改。它支持 FATl2、FATl6 和 FAT32,支持多个存储媒介;
2、为什么需要文件系统?因为SD卡只是一种存储器,普通的读写操作只能是针对地址进行读取,读取出来的数据都是一些字符数据,并没有文件的概念,加入了文件系统的SD卡可以利用FATFS文件系统进行管理,比如说要存储一张图片只需要以文件的形式存储,而普通的读写只能是把图片数据一个字节一个字节地存到一块指定内存中,读取也要严格根据地址位置读取
3、正点原子提供了比较好用的FATFS源码可以直接移植使用代码文件可以到正点原子官网下载下面是主要API函数: 进行对文件的读取、写入等一系列操作,与C语言文件IO差不多相似,看文件名应该知道大概的用途
(二)、MP3播放
(三)、图片显示
(四)、GUI界面
展示部分关键代码:
完整资料可进群免费领取。
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:
一个漂亮的开源HTML5音乐播放器——APlayer
APlayer是一个简约且漂亮的HTML5音乐播放器,支持多种模式,包括播放列表模式、吸底模式
、迷你模式、MSE模式、HLS模式。
https://github.com/DIYgod/APlayer
使用 npm:
使用 Yarn:
或者使用模块化方式
- APlayer.version: 静态属性, 返回 APlayer 的版本号
- ap.play(): 播放音频
- ap.pause(): 暂停音频
- ap.seek(time: number): 跳转到特定时间,时间的单位为秒
- ap.toggle(): 切换播放和暂停
- ap.on(event: string, handler: function): 绑定音频和播放器事件,详情
- ap.volume(percentage: number, nostorage: boolean): 设置音频音量
- ap.theme(color: string, index: number): 设置播放器主题色, index 默认为当前音频的 index
- ap.setMode(mode: string): 设置播放器模式,mode 取值应为 \’mini\’ 或 \’normal\’
- ap.mode: 返回播放器当前模式,\’mini\’ 或 \’normal\’
- ap.notice(text: string, time: number, opacity: number): 显示通知,时间的单位为毫秒,默认时间 2000 毫秒,默认透明度 0.8,设置时间为 0 可以取消通知自动隐藏
- ap.skipBack(): 切换到上一首音频
- ap.skipForward(): 切换到下一首音频
- ap.destroy(): 销毁播放器
- ap.lrc-ap.lrc.show(): 显示歌词ap.lrc.hide(): 隐藏歌词ap.lrc.toggle(): 显示/隐藏歌词
- ap.list-ap.list.show(): 显示播放列表ap.list.hide(): 隐藏播放列表ap.list.toggle(): 显示/隐藏播放列表ap.list.add(audios: array | object): 添加一个或几个新音频到播放列表ap.list.add([{ name: \’name\’, artist: \’artist\’, url: \’url.mp3\’, cover: \’cover.jpg\’, lrc: \’lrc.lrc\’, theme: \’#ebd0c2\’ }]); ap.list.remove(index: number): 移除播放列表中的一个音频ap.list.remove(1); ap.list.switch(): 切换到播放列表里的其他音频ap.list.switch(1); ap.list.clear(): 清空播放列表
- ap.audio: 原生 audioap.audio.currentTime: 返回音频当前播放时间ap.audio.duration: 返回音频总时间ap.audio.paused: 返回音频是否暂停支持大多数原生audio接口
ap.on(event, handler)
音频事件
- abort
- canplay
- canplaythrough
- durationchange
- emptied
- ended
- error
- loadeddata
- loadedmetadata
- loadstart
- mozaudioavailable
- pause
- play
- playing
- progress
- ratechange
- seeked
- seeking
- stalled
- suspend
- timeupdate
- volumechange
- waiting
播放器事件
- listshow
- listhide
- listadd
- listremove
- listswitch
- listclear
- noticeshow
- noticehide
- destroy
- lrcshow
- lrchide
APlayer是一个不错的HTML5小型音乐播放器,可以将它嵌入到自己的网页中!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。