搜索
bottom↓
回复: 67

纯手工设计简易MP3(atmega64+vs1003)---绝对精简Code

[复制链接]

出0入0汤圆

发表于 2011-4-9 22:23:02 | 显示全部楼层 |阅读模式
设计实物图如下,实验代码精简,ATMEGA8也可以!

洞洞板做的 (原文件名:图片 005.jpg)


换PCB了 (原文件名:图片 002.jpg)


主控模块 (原文件名:图片 003.jpg)


vs1003模块和我的可爱音箱 (原文件名:图片 004.jpg)


点击此处下载 ourdev_629660DPFKWZ.rar(文件大小:172K) (原文件名:Code.rar)

实验视频,请点击下网址:
http://v.youku.com/v_show/id_XMjM2NTc4NTgw.html

如共享资料,敬请跟帖!期待。。。。。。。。。。。。。。。。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-4-10 10:09:05 | 显示全部楼层
图中主控制模块电路,在我以前的帖子中上传过,本贴中的文件为实验使用的程序,网友无须修改,只需按程序中要求的接口与您的硬件模块一致,即可播放音乐,祝您成功!程序绝对精简!

出0入0汤圆

发表于 2011-4-10 10:40:13 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-4-10 10:46:30 | 显示全部楼层
打算借鉴,道个谢先~

出0入0汤圆

发表于 2011-4-10 19:49:21 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-4-12 12:42:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-12 20:45:54 | 显示全部楼层
那位前辈有《纯手工设计简易MP3(atmega64+vs1003)---绝对精简Code》?

出0入0汤圆

 楼主| 发表于 2011-4-14 22:04:30 | 显示全部楼层
今天晚上又重新使用AVR16搭建了MP3实验系统:

(原文件名:图片 006.jpg)


(原文件名:图片 007.jpg)


(原文件名:图片 008.jpg)


(原文件名:图片 009.jpg)

出0入0汤圆

 楼主| 发表于 2011-4-22 12:50:25 | 显示全部楼层
可以显示歌曲名和图片了:

(原文件名:图片 025.jpg)


(原文件名:图片 026.jpg)


(原文件名:图片 027.jpg)


(原文件名:图片 028.jpg)

出0入0汤圆

发表于 2011-4-22 21:40:53 | 显示全部楼层
支持,羡慕

出0入0汤圆

发表于 2011-4-24 22:29:01 | 显示全部楼层
请问怎么样显示汉字歌名的?

出0入0汤圆

 楼主| 发表于 2011-4-27 12:05:23 | 显示全部楼层
回复【6楼】bestec2007
-----------------------------------------------------------------------

The code of this topic has been uploaded.Please download it and test you hardware!

出0入0汤圆

发表于 2011-4-27 13:24:27 | 显示全部楼层
楼主太有爱了~~~~~~~~

出0入0汤圆

发表于 2011-5-22 21:50:22 | 显示全部楼层
楼主能不能把更新显示歌曲名和图片后的程序上传一下啊!
或者发一份给兄弟呀,我邮箱:277274044@QQ.COM
经过测试,你把簇号都存于SD卡指定的一个簇上,会破坏文件,
建议你以文件形式存。或者存于EEPROM上也可以。

出0入0汤圆

发表于 2011-5-22 23:52:07 | 显示全部楼层

出0入0汤圆

发表于 2011-5-23 19:37:26 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-5-24 11:56:51 | 显示全部楼层
回复【14楼】yangzhen1001
-----------------------------------------------------------------------

   好的,晚上上传源代码。喜欢MP3的朋友可参考波仔的程序。他的代码写的很精炼。不过对于初学者学习比较困难。因为有时即使按照作者的源程序的定义配置硬件,未必能实现其功能。这可能和硬件系统的差异性有关系,我在设计初也遇见这样的情况。
   遇见这种情况,不必着急。只需修改软件的某些部分即可!具体修改什么地方,这需要依赖设计者的经验和耐心了!

出0入0汤圆

 楼主| 发表于 2011-5-25 23:16:28 | 显示全部楼层
点击此处下载 ourdev_642990ZKUUD8.rar(文件大小:252K) (原文件名:基于AVR64 MP3设计程序.rar)

    本人现在将应用程序上传,其中许多程序是参考众网友的。在此表示感谢。
    该程序库内有一个最简单播放MP3的函数,即只实现播发声音功能,这对初学者非常有帮助。因为其他功能无非是在这基础上添加的而已。
    祝愿对MP3感兴趣的网友都能设计属于自己独一无二的播放器。

出0入0汤圆

 楼主| 发表于 2011-5-25 23:20:05 | 显示全部楼层
对了显示文字还需要字库文件:
点击此处下载 ourdev_642991HGLL8Z.rar(文件大小:635K) (原文件名:ziku.rar)

出0入0汤圆

发表于 2011-5-25 23:32:43 | 显示全部楼层
呵呵,学习哈还是可以的,想软解码。。。。。。

出0入12汤圆

发表于 2011-5-26 11:57:39 | 显示全部楼层
下不来阿......

出0入0汤圆

发表于 2011-5-26 12:40:03 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-5-26 13:07:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-26 14:05:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-26 14:11:07 | 显示全部楼层
马克一下

出0入0汤圆

发表于 2011-5-26 14:11:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-9 22:20:52 | 显示全部楼层
回复【14楼】yangzhen1001  
-----------------------------------------------------------------------

   好的,晚上上传源代码。喜欢MP3的朋友可参考波仔的程序。他的代码写的很精炼。不过对于初学者学习比较困难。因为有时即使按照作者的源程序的定义配置硬件,未必能实现其功能。这可能和硬件系统的差异性有关系,我在设计初也遇见这样的情况。
   遇见这种情况,不必着急。只需修改软件的某些部分即可!具体修改什么地方,这需要依赖设计者的经验和耐心了!

非常感谢你的回复。你的程序写得很好,我一看就懂。其他人的我很难懂。

出0入0汤圆

发表于 2011-6-19 10:39:05 | 显示全部楼层
学习!!!!!

出0入0汤圆

发表于 2011-6-21 17:11:09 | 显示全部楼层
纯手工设计简易MP3(atmega64+vs1003)---绝对精简Code

出0入0汤圆

发表于 2011-6-26 18:26:29 | 显示全部楼层
看视频,放出前奏那刻,就一个感觉--帅!

出0入0汤圆

发表于 2011-6-26 19:22:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-27 19:19:06 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-8-11 15:16:18 | 显示全部楼层
回复【20楼】wangyj173
-----------------------------------------------------------------------
挺好的,用LPC或STM32 自带的IIS模块做软解码!可以试试!

出0入0汤圆

发表于 2011-8-12 09:09:46 | 显示全部楼层
cool

出0入0汤圆

发表于 2011-12-4 14:38:43 | 显示全部楼层
COOL ...Mark 谢谢~

出0入0汤圆

发表于 2011-12-4 15:00:38 | 显示全部楼层
我前几天借鉴你上传的代码,MP3可以播放但是存在一个问题:当位速高的话就不行了。。。是不是用GPIO模拟SPI控制VS1003的原因!
如果LZ看到的话,麻烦回答一下,谢谢。。。

出0入0汤圆

 楼主| 发表于 2011-12-6 18:45:29 | 显示全部楼层
回复【37楼】crazydtone
-----------------------------------------------------------------------
这应该是CPU速度问题了,歌曲的速率小于 192bps就可以了

出0入0汤圆

发表于 2011-12-6 21:56:51 | 显示全部楼层
回复【38楼】tmfwt 飞飞
回复【37楼】crazydtone  
-----------------------------------------------------------------------
这应该是cpu速度问题了,歌曲的速率小于 192bps就可以了  

-----------------------------------------------------------------------

    我觉得应该是的,但是我把晶振换成12M也不起作用。。。无奈!!!

    你有Mega16做的MP3吗,可以显示歌名的。。。可不可以给我一份,现在在做毕业设计呢。谢谢~

    348746844@qq.com

出0入0汤圆

发表于 2011-12-7 07:40:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-7 09:20:31 | 显示全部楼层
马克

出0入0汤圆

发表于 2011-12-7 09:22:48 | 显示全部楼层
不错

出0入0汤圆

 楼主| 发表于 2011-12-8 16:19:49 | 显示全部楼层
回复【39楼】crazydtone
-----------------------------------------------------------------------

如果是AVR单片机,可以换用16M晶振试试,如果要支持TFT彩屏,可能出现花屏现象!

出0入0汤圆

发表于 2011-12-8 21:08:44 | 显示全部楼层
回复【43楼】tmfwt 飞飞
回复【39楼】crazydtone  
-----------------------------------------------------------------------
如果是avr单片机,可以换用16m晶振试试,如果要支持tft彩屏,可能出现花屏现象!
-----------------------------------------------------------------------
      我换过12M的晶振,但是没有多大的变化。。。我觉得还是硬件模拟SPI的问题!
  由于我的电路,我不能复用同一个SPI接口。。。只好GPIO来模拟SPI总线!
      我现在将MP3文件的位速统一处理为84kbps,放起来音质还行。。。
      我发现你发的那个绝对精简的程序有个问题,当按下下一曲按键时,为什么会残留上次播放的呢?这些残留播放完之后,才到下一曲。怎样才可以处理这个问题,麻烦LZ给点建议。。。谢谢~   

出0入0汤圆

 楼主| 发表于 2011-12-9 12:47:01 | 显示全部楼层
回复【44楼】crazydtone
-----------------------------------------------------------------------

SPI通信接口可以复用,不过不同的SPI接口器件,其控制引脚(片选引脚) CS 应该不同(主从模式)。 SCK,MOSI,MISI ,可以复用。其实这些复用的例子很多,用总线模式控制SDRAM,FLASH ,显示器等,这些那些总线接口都是复用的。

残留播放可能是你程序处理有问题。切换歌曲后,读数据应该也对应跳到下一个文件所在扇区区间才对,你的那个现象在程序中应该是从当前扇区继续读文件,所以会出现残留播放现象。

出0入0汤圆

发表于 2011-12-9 14:36:00 | 显示全部楼层
回复【45楼】tmfwt 飞飞
-----------------------------------------------------------------------
    我在按键程序中加上了几句之后,问题解决了,谢谢LZ 。。。
   
    还有个问题,你发的那个程序中有个函数:uint8 Search_Save_Musics(void),这个函数将根目录的歌曲总数计算出来了!我前段时间用串口调试时发现,用下面的方法可以将根目录的全部歌曲名输出到终端
                            if((item->DeExtension[0] == 'M')&&(item->DeExtension[1] == 'P')&&(item->DeExtension[2] == '3'))
                             {
                                         Printf(item->DeName,0);
                                       
                                         bufferdd[VS1003_TOTAL_SONGS*2]=(uint8)(item->DeStartCluster);
                                        bufferdd[VS1003_TOTAL_SONGS*2+1]=(item->DeStartCluster)/256;  //将找到的歌曲的开始簇号存入缓冲区
                                         VS1003_TOTAL_SONGS++;
                            }
    我想从这里得到根目录的歌曲名,但是我定义了一个struct Direntry Name[256];然后自己仿照Search_Save_Musics()定义了一个uint8 save_songs_name(struct Direntry *s)函数,想把歌曲名字全部复制到这个数组中,但是程序执行的结果不是我所想象的出错了只输出第一个歌曲名!!麻烦LZ给点建议。。。怎样才可以输出歌名了呢?先谢谢了~

出0入0汤圆

发表于 2011-12-9 15:45:35 | 显示全部楼层
中文显示要mark下

出0入0汤圆

 楼主| 发表于 2011-12-9 16:00:30 | 显示全部楼层
回复【46楼】crazydtone
-----------------------------------------------------------------------

歌曲名称全部保存在一个数组里面,这样不太合适,定义一个数组即可,取出一个歌曲名后直接打印即可!
不过打印歌曲名的时候需要换行的,不然 old  string 将会被 new string 覆盖,这样可能只能看见一行字符串!

出0入0汤圆

发表于 2011-12-9 16:07:26 | 显示全部楼层
回复【48楼】tmfwt 飞飞
-----------------------------------------------------------------------
    谢谢~   现在的问题的关键是:我不知道怎样去取歌曲的名字,只好用这个函数uint8 Search_Save_Musics(void),保存所有的歌曲名,但是这样不可行。。。麻烦问一下你是怎么去取歌曲的名字的。。。

出0入0汤圆

发表于 2011-12-18 18:16:56 | 显示全部楼层
神啊。。

出0入0汤圆

发表于 2012-2-11 15:27:00 | 显示全部楼层
回复【楼主位】tmfwt tmfwt
-----------------------------------------------------------------------

请问楼主VS1003模块小板哪里能整到?

出0入0汤圆

 楼主| 发表于 2012-2-12 13:18:13 | 显示全部楼层
回复【51楼】xujm2008  徐景明
-----------------------------------------------------------------------
淘宝上应该可以买到!

出0入0汤圆

发表于 2012-2-12 13:37:36 | 显示全部楼层
要看一下,学习,学习。

出0入0汤圆

发表于 2012-2-13 22:54:45 | 显示全部楼层
mark  perfect

出0入0汤圆

发表于 2012-4-27 14:52:59 | 显示全部楼层
我的vs1003播放正弦波有声音,加上你的系统之后找不到音乐文件,有哪些地方需要修改一下,能否指导一下小弟

出0入0汤圆

发表于 2012-4-27 15:08:21 | 显示全部楼层
不错!!!

出0入0汤圆

发表于 2012-4-27 16:26:24 | 显示全部楼层
只是简单的播放?那个51也可以跑的,就是不太爽,图形界面的好点~

出0入0汤圆

发表于 2012-5-23 16:58:32 | 显示全部楼层
楼主不错!

出0入0汤圆

发表于 2012-6-21 15:15:46 | 显示全部楼层
楼主,我是个新手,上面的资料下载不了啊,能不能发一份给我,还有原理图也一起。谢谢啦……
372457100@qqc.com

出0入0汤圆

发表于 2012-6-21 16:14:14 | 显示全部楼层

出0入0汤圆

发表于 2012-6-21 22:50:19 | 显示全部楼层
楼主,能不能给我发一份资料啊,还有原理图,上面的下载不了,我是个新手,想做一个这个……谢谢
372457100@qq.com

出0入0汤圆

发表于 2012-6-24 11:25:28 来自手机 | 显示全部楼层
学习学习,谢谢

出0入0汤圆

发表于 2012-12-17 15:08:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-12-25 23:18:37 | 显示全部楼层
呦西,我也想弄一个

出0入0汤圆

发表于 2013-2-16 17:04:46 | 显示全部楼层
very good, very good

出50入0汤圆

发表于 2013-2-17 09:42:26 | 显示全部楼层
这个cool,有空也diy一个 虽然我也不怎么听MP3

出0入0汤圆

 楼主| 发表于 2013-5-12 17:10:38 | 显示全部楼层
Example for MP3 and Phote displaying.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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