找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18710|回复: 26
收起左侧

51单片机DIY的MP3

  [复制链接]
ID:140725 发表于 2016-10-12 12:56 | 显示全部楼层 |阅读模式
0.png

0.png

做这个mp3前后有很长时间了,总体感觉不是很难,当然收获也是不小的,对51单片机有了更深入的了解,在这个学习的过程中碰到了很到的问题,譬如单片机的内存,单片机的通信速度以及程序的优化等。刚开始做这个项目的时候发现RAM总是不够用,以至于每次写程序都得小心翼翼,最后通过学习对程序经行的大量优化,使得RAM不再捉襟见肘,对程序的效率以及内存的分配和速度有了深刻的认识。这个mp3项目最重要的一点是单片机与VS1003的通信速度,如果你对单片机不熟悉的话,最后可能你会发现播放的歌曲根本就无法播放 ,听到的歌曲一点都不流畅,由于51单片机没有硬件spi,需要单片机模拟spi总线,这就需要模拟的spi总线是否高效,在这个项目中采用了汇编来模拟spi,通过混编的方式来组织程序。现在对于320kps的mp3歌曲都能流畅的播放。U盘的是通过ch375来实现与单片机的通信的,vs1003和ch375的驱动程序是自己对着数据手册的时序图一点一点写出来的,感觉这样才来的实在,打好基本功是关键。最后花了半个星期才搞定。碰到的问题也很多。记忆最深刻的就是总线的问题,把位选信号CS和A0放在P2口的低两位,可能在平常不会出现错误,但是在ch375的驱动中外部数据储存器使用超过了512byte,那么就会对P2.0有影响。致使时序错误,最后花了很大的力气才解决。感受颇深啊!总线是51单片机的精华,只有理解了单片机总线才能算的上熟悉51单片机。记得上次到东莞找工作,应聘了一个测试工程师的职位,笔试考的单片机的知识很基础,譬如对单片机引脚ALE,PSEN,EA的理解和应用。但是我相信对于看了这篇文字的人不看书不一定都能答得出来,这就是考基本功,如果你没有理解熟悉总线的时序,不熟悉单片机的储存器,是答不出来的。
  完成了VS1003和ch375的驱动,配合winhex软件找到音频文件的起始扇区就能够播放歌曲,STC单片机有倍速的功能,可以提高单片机一倍的速度,这个功能不知道大家知道波!在STC-ISP烧录软件中可以配置。记得由“12/单倍速”到“6T/双倍速”转换的时候需要下载两次。下载一次是不会改变的。
  听到歌曲了就要开始搞文件系统了,在mp3项目中其实最难得是文件系统以及液晶显示部分,这个DIYMP3完全支持长文件名,在液晶屏lcd12864上显示最多39字符的文件名。学习文件系统最好的资料我觉得是《fat文件系统原理》这个资料了!!论坛里可以下载。我花了一天的时间通过这份资料用winhex看U盘里的重要数据,基本上了解了文件系统的结构和存储方式。最后通过串口调试助手写程序读取文件的一些重要数据,以及和胡水涛的交流,很快的理解了文件系统。如果有人需要学习文件系统我觉得可以借鉴这个方法,完成了文件的初始化后,就可以读取音频文件,通过液晶显示短文件名了。短文件名采用的是“8+3”的形式存储的。文件名超过8byte就会截断,看起来很不爽,所以搞定长文件名很有必要。
  这个就涉及到文件名的存储形式和gbk码与unicode的转换。我总共花了2天时间解决,当然串口调试时必不可少的工具。需要通过观察从U盘文件读取的数据发现和纠正程序的错误。充分利用好串口调试工具是解决问题的关键。
  完成文件了系统相当于成功的一大半。接下来就只需要完成菜单的编写了。我做的DIYMP3只写了一个菜单界面,没有目录显示及其他复杂功能。屏太小了不好搞,而且对菜单编程不是很熟悉。打算开学了买个彩屏回来搞一下,现在的功能是能够顺序播放,音量调节和上一曲.下一曲的切换.网上看到有人用stm32和彩屏做的毕业设计mp3很强悍,有点心动,也打算买个开发板学习哈!
  用到的模块:STC89C58RD+(mini51),CH35模块,vs1003模块,LCD12864,按键。
  系统占用的内存:Program Size: data=86.1 xdata=691 code=9899
  
  流畅播放的码率:320kbps

0.png 0.png
ch375测试程序: ch375.rar (65.42 KB, 下载次数: 58)

评分

参与人数 2黑币 +10 收起 理由
huyin + 5 赞一个!
zhaok2013 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:142685 发表于 2016-10-14 10:20 来自手机 | 显示全部楼层
支持。楼主很厉害,向你学习
回复

使用道具 举报

ID:148523 发表于 2016-11-17 22:14 | 显示全部楼层
很好,good
回复

使用道具 举报

ID:148494 发表于 2016-11-18 16:16 | 显示全部楼层
向楼主学习,楼主有扣扣吗?我初学者想通过这个项目来提高自己,不会的可以问您请教吗?
回复

使用道具 举报

ID:154115 发表于 2016-12-12 14:36 | 显示全部楼层
支持。楼主很厉害,向你学习
回复

使用道具 举报

ID:164285 发表于 2017-2-19 18:40 | 显示全部楼层
好好学习学习
回复

使用道具 举报

ID:155785 发表于 2017-2-20 22:22 | 显示全部楼层
楼主有原理图没,想照着做一个
回复

使用道具 举报

ID:165645 发表于 2017-2-20 23:12 | 显示全部楼层
向楼主学习
回复

使用道具 举报

ID:165645 发表于 2017-2-20 23:13 | 显示全部楼层
支持楼主,值得参考
回复

使用道具 举报

ID:165645 发表于 2017-2-20 23:14 | 显示全部楼层
楼主有图没,想练习做一个
回复

使用道具 举报

ID:193526 发表于 2017-4-26 11:19 | 显示全部楼层
楼主,你好,看了你这篇制作MP3播放器的文章,感觉你在单片机方面实在太厉害了,所有的外围硬件与控制器的连接都是与总线方式连接通讯。
回复

使用道具 举报

ID:193526 发表于 2017-4-26 11:26 | 显示全部楼层
请问楼主有CH375和单片机的总线方式电路图吗,略看了附件中的相关程序,对外部数据存储器的编址不是很清楚,还请楼主麻烦能发下引脚连接图波,解释下也行,感激不尽C:\Users\Administrator\Desktop
回复

使用道具 举报

ID:194847 发表于 2017-5-25 23:47 | 显示全部楼层
 支持。楼主很厉害,向你学习
回复

使用道具 举报

ID:230667 发表于 2017-9-12 17:53 | 显示全部楼层
哇,我正好也行学做个这个
回复

使用道具 举报

ID:146874 发表于 2017-9-18 11:47 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:249545 发表于 2017-11-24 17:00 | 显示全部楼层
10多年前,我买了书,要DIY MP3播放器,现在生活压力大就停歇啦,都没整成.
回复

使用道具 举报

ID:251133 发表于 2018-1-9 22:15 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:272874 发表于 2018-1-30 10:05 | 显示全部楼层
楼主威武  先马了以后看啊
回复

使用道具 举报

ID:250302 发表于 2018-1-31 09:15 | 显示全部楼层
学习一下。。。。。。。。。。。
回复

使用道具 举报

ID:392177 发表于 2018-8-31 23:48 | 显示全部楼层
楼主可以把程序代码还有原理图发我一份吗,QQ2096165865@qq.com,谢谢
回复

使用道具 举报

ID:421636 发表于 2019-2-28 09:12 | 显示全部楼层
楼主厉害,谢谢分享
回复

使用道具 举报

ID:480636 发表于 2019-2-28 13:04 | 显示全部楼层
楼主厉害了
回复

使用道具 举报

ID:481555 发表于 2019-3-1 19:57 | 显示全部楼层
想问问楼主,您这个驱动方面的知识是在哪学的,我想学驱动方面的东西,一直没头绪
回复

使用道具 举报

ID:481555 发表于 2019-3-1 20:01 | 显示全部楼层
楼主我有个战舰V3开发板,stm32的,去年初买的,我马上毕业了,用不到了,要不你收了?
回复

使用道具 举报

ID:510342 发表于 2019-4-12 12:27 | 显示全部楼层
支持一下,顶顶顶
回复

使用道具 举报

ID:626855 发表于 2019-10-20 03:50 来自手机 | 显示全部楼层
太厉害了
回复

使用道具 举报

ID:277420 发表于 2021-7-6 17:19 | 显示全部楼层

电子爱好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表