标题: 51单片机DIY的MP3 [打印本页]

作者: 51hei学习技术中    时间: 2016-10-12 12:56
标题: 51单片机DIY的MP3




做这个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


ch375测试程序: ch375.rar (65.42 KB, 下载次数: 59)
vs1003测试程序: vs1003.rar (22.51 KB, 下载次数: 51)
完整版: MP3_V2.rar (251.14 KB, 下载次数: 113)
能够显示短文件名: MP3_V2_1.rar (222.13 KB, 下载次数: 62)

CH375资料.rar (1.01 MB, 下载次数: 51)

vs1003原理图.rar (80.24 KB, 下载次数: 73)

驱动你的vs1003.pdf (314.72 KB, 下载次数: 79)



作者: hunto    时间: 2016-10-14 10:20
支持。楼主很厉害,向你学习
作者: 738722773    时间: 2016-11-17 22:14
很好,good
作者: sxz330967303    时间: 2016-11-18 16:16
向楼主学习,楼主有扣扣吗?我初学者想通过这个项目来提高自己,不会的可以问您请教吗?
作者: wwwang    时间: 2016-12-12 14:36
支持。楼主很厉害,向你学习
作者: shiyikang68    时间: 2017-2-19 18:40
好好学习学习
作者: 51郑    时间: 2017-2-20 22:22
楼主有原理图没,想照着做一个
作者: 薄薄    时间: 2017-2-20 23:12
向楼主学习
作者: 薄薄    时间: 2017-2-20 23:13
支持楼主,值得参考
作者: 薄薄    时间: 2017-2-20 23:14
楼主有图没,想练习做一个
作者: 1044694063    时间: 2017-4-26 11:19
楼主,你好,看了你这篇制作MP3播放器的文章,感觉你在单片机方面实在太厉害了,所有的外围硬件与控制器的连接都是与总线方式连接通讯。
作者: 1044694063    时间: 2017-4-26 11:26
请问楼主有CH375和单片机的总线方式电路图吗,略看了附件中的相关程序,对外部数据存储器的编址不是很清楚,还请楼主麻烦能发下引脚连接图波,解释下也行,感激不尽C:\Users\Administrator\Desktop
作者: 挖卡卡卡    时间: 2017-5-25 23:47
 支持。楼主很厉害,向你学习
作者: tiexiedaqin    时间: 2017-9-12 17:53
哇,我正好也行学做个这个
作者: bleach    时间: 2017-9-18 11:47
谢谢分享
作者: GUOXUAN    时间: 2017-11-24 17:00
10多年前,我买了书,要DIY MP3播放器,现在生活压力大就停歇啦,都没整成.
作者: sishunhu    时间: 2018-1-9 22:15
谢谢分享
作者: 785798653    时间: 2018-1-30 10:05
楼主威武  先马了以后看啊
作者: jingcard    时间: 2018-1-31 09:15
学习一下。。。。。。。。。。。
作者: kuiyin    时间: 2018-8-31 23:48
楼主可以把程序代码还有原理图发我一份吗,QQ2096165865@qq.com,谢谢
作者: 沙诺1234    时间: 2019-2-28 09:12
楼主厉害,谢谢分享
作者: Alex紫枫    时间: 2019-2-28 13:04
楼主厉害了
作者: xdnf    时间: 2019-3-1 19:57
想问问楼主,您这个驱动方面的知识是在哪学的,我想学驱动方面的东西,一直没头绪
作者: xdnf    时间: 2019-3-1 20:01
楼主我有个战舰V3开发板,stm32的,去年初买的,我马上毕业了,用不到了,要不你收了?
作者: 这个好难啊!    时间: 2019-4-12 12:27
支持一下,顶顶顶
作者: wuxincoc    时间: 2019-10-20 03:50
太厉害了
作者: 国君    时间: 2021-7-6 17:19
这个好难啊! 发表于 2019-4-12 12:27
支持一下,顶顶顶

电子爱好




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1