EDN首页   博客首页 用户登陆  |  注册

日志档案

发表于 2008/10/30 9:06:21

5

标签: MP3  VS1003  收音机  贪吃蛇游戏  俄罗斯方块  

用Mega32+VS1003做的MP3(FAT32文件系统浏览)

rar

                                                    开机LOGO

   开学时做的一个MP3,用VS1003+Mega32+TEA5767等做的,程序参考了波仔等众多网友的代码,这里向各位表示感谢.同时也要感谢Chan HK 提供的VS1003芯片.整个制作过程总共花了大概两个月的时间,从7月份搞到九月12号基本完成(中间大概一个月时间在实习).最终实现了比较多的功能:该mp3可以支持wma/mp3/wav/midi格式的音乐播放,支持歌词显示,收音机功能,电子书功能,还特别加进了两个经典的游戏,俄罗斯方块和贪吃蛇游戏.

    现在SD卡是用的我手机上的TF卡,对诸如金士顿的SD卡,识别不了,代码是参考别人的,不知道哪位有没有比较好的SD卡读写代码,能支持不同卡的,我这个只能支持Adapter的卡,很是郁闷.希望高人帮助下,不胜感激阿.
    液晶用的是从淘宝上买来的,10块钱一块,原来看着便宜一次就买了十块,现在才用了一块.本来打算卖出去给师弟,可是好像大家都不需要,没办法,自己留着慢慢用,我把LCD当成数码管来用还不行吗?131*64的点阵大小,一般需求足够了,我想.
    音效处理用的是CD3314的芯片,和3315差不多,只是多了几个声道输入(因为我要用两个音频输入,一个VS1003,一个TEA5767的),效果很好,加上这个音调处理芯片之后听起来是很不错的,尤其低音很好.和魅族的mp3都有的一拼.价格不高5块钱左右的样子.

点击看大图

  无歌词的歌曲播放

点击看大图

         带歌词显示的歌曲播放

点击看大图

           文件夹浏览

点击看大图

                浏览音乐文件

点击看大图

                  浏览TXT文件

点击看大图

          观看电子书

点击看大图

               收听收音机

点击看大图

           贪吃蛇游戏

点击看大图

                 俄罗斯方块游戏中

点击看大图

                   系统主界面

点击看大图

                 系统控制器

下面发上我的原理图和PCB:

rar


下面传上我的源代码:

rar

详细的功能说明:

rarrarrar

part1    part2  part3
现在我在用的程序在调试的时候花了很多时间,主要是文件系统浏览的问题,由于刚开始接触这个东西,所以比较麻烦,啥都不懂,得一步步来.一直用串口调试,用的萧峰的调试助手,比较好用,就是不支持中文显示,很是郁闷,于是最近痛下苦心,自学BCB,写了个自己的串口调试助手,支持汉字显示了,^_^.已经发上来了,有兴趣的朋友可以去看看,有什么好建议不妨说出来.

 

系统分类: 单片机   |   用户分类: 电子设计   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

阅读(4252)  |  评论(27)  |  收藏(0)  |  举报  

投一票您将和博主都有获奖机会!

最新评论

  • 正点原子

    2009/9/4 14:45:22

    weiwenty:CD3314的资料和PT2314的资料是一模一样的,你可以上21ic查找PT2314的datasheet来看.

  • weiwenty

    2009/8/25 11:54:10

    请问能不能把cd3314的PDF或者相关资料发给我?在网上找了很久都没找着,我的邮箱:weiwenty@126.com 。谢谢了!

  • xixiangfeng0733

    2009/7/9 10:38:01

    fat32系统 楼主厉害啊 谢谢了!

  • 正点原子

    2009/4/28 18:44:53

    ouravr 上有软解码的例子.stm32软解码一个声道可能还行,两个声道估计够呛.还有stm32超频到144M也可以跑,不过比较容易死机,超频到108M是没问题的.

  • cgc_good

    2009/4/28 8:55:28

    呵呵,我也是用stm32做mp3的相关内容的毕业设计,打算在usb的masstorageDemo里移植文件系统,然后用stm32软件解码MP3,现在都还没找到一个可以用的开源解码程序~~~~~~~~~~~~~汗!

  • 正点原子

    2009/4/23 19:10:08

    这个LCD是不带字库的了.这种游戏处理不会有问题的了.放心写.关于那个SD卡的问题,现在我也已经解决了,只是没有去弄了,我现在在做毕业设计-基于stm32的MP3,这个上面就可以支持各种sd卡了,FAT16/32都没有问题了,呵呵....

  • xxch520

    2009/4/23 8:45:44

    你这东西做得有意思哈,游戏和收音都加上了,VS1003我的烧了,就懒得再做这种MP3了.你的LCD用的是带字库的还是不事的?我发现作方块这种游戏好像显示的处理很是问题呀,一直不敢写,没什么好的方法 你提到的只能用一种SD卡的问题,该从基本来解决呀.我这有自已写的驱动.从最底层操作SD.我试过好几种SD卡,都没有问题的

  • WEIFANGHAI

    2009/4/2 16:38:46

    楼主太强了,什么时候才能像大家一样强就好了

  • tweifang

    2009/4/1 19:33:05

    看看 学学

  • 羽翼

    2009/3/21 1:01:39

    刚好想整个MP3!

  • ftyszyx

    2009/3/15 18:21:18

    真强人啊!谢谢分享!

  • mculove

    2008/12/7 17:15:51

    WORD bpbExtFlags; // 扩展标志 #define FATNUM 0xf

  • sasinop

    2008/12/1 16:57:54

    调试时,可以很清楚的看到,ABCD.txt 文件的其族为 Clust=9, 带入 bfactor=fatClustToSect(bclust); 算出来的开始扇区应该是: 448 但在后面调用: ReadBlockToBuff(bfactor,pbuffer);//读取文本到pbuffer 读到的内容不对(和事先写入的数据不一致) 请教是否是地址算错了 啊?

  • bingui

    2008/11/22 3:14:58

    我们的毕业设计就是搞这个了 谢谢资料啊

  • 正点原子

    2008/11/20 21:26:30

    sd卡可以做成启动盘和非启动盘两种,电脑上有软件可以这样修改SD卡的性质.所以要判断.两种盘有一定的差异.注意这个就好了.具体我也是当时做实验的时候发现的.可能有些不正确,给你做个参考.

  • sasinop

    2008/11/20 15:57:36

    原子你好; 还哟问题请教你 if(PartInfo.prStartLBA>1000)PartInfo.prStartLBA=0;//非启动型盘 //printf("PartInfo.prStartLBA:%d\n",PartInfo.prStartLBA); ReadBlock(PartInfo.prStartLBA);//读取启动扇区信息 DBR bpb = (struct bpb710 *) ((struct bootsector710 *) BUFFERtemp)->bsBPB;//得到bpb信息 这是你的 FatInit 程序里的一段代码, 不明白你在LBA大于1000后,给其赋值为"0"是啥意思 同时,这个值带入后,和前面的一样,又读了一遍"0"扇区的内容. 我在实验时发现,两次读的值得是一样的,而根据定义,bpb应该对应的是buffer 数组的 12--64的内容吧, 此时的值全是0x00, 是卡的问题么??? 因为原始的 buffer里的数值即 12--64 的值也是0x00 谢谢

  • 正点原子

    2008/11/20 10:27:40

    肯定没报错了,要报错没有哪个编译器是能让你编译成功的.我用的CVAVR,avr的编译器很多,不知道你用的哪个.不过一般不通用.跨编译器要移植的.

  • sasinop

    2008/11/20 9:17:40

    //当前文件信息,当前簇,当前扇区,当前偏移量 uchar SerarchFile(unsigned long dircluster,uchar type,uint index,uchar line) winentry *we; we=(direntry *) de; // 这句报错 在你的工程里,编译时,到这个函数报错了 我下了个AVR开发编译,不报错 还奇怪

  • 正点原子

    2008/11/19 16:25:06

    sasinop:我用的是CVAVR1.25.8编译的.在其他编译器上的话,你自己移植了.IAR我没有用过,帮不到你了

  • sasinop

    2008/11/18 12:58:40

    // unsigned char *hzk12[4]= {"FONT12 FON", "UNITOGB BIN", ". ", ".. " }; //是否当前目录 unsigned char IsCurDir(unsigned char *strName) { unsigned char i; for(i=0;i<3;i++){ //if((hzk12[2]+i)!=strName[i]) break; // 上上面的就报错 Error[Pe042]: operand types are incompatible ("unsigned char *" and "unsigned char") D:\Atmel256\ARM_ Ateml256\AT91SAM7S-BasicTools\fat.h 125 我用的IAR开发环境,不知道您的ICC是否有报错? } if(i==3)return 1; //是当前目录 return 0; }

  • desertsailor

    2008/11/10 21:46:05

    好的,谢谢

  • 正点原子

    2008/11/7 12:33:39

    desertsailor:这个是卖家的淘宝地址.现在好像涨价了.要15块了...http://auction1.taobao.com/auction/item_detail-0db2-0d33d7349c912f6a3f83354a40020aad.jhtml

  • desertsailor

    2008/11/2 22:36:01

    不好意思,提交出了点问题,一不小心一句话发了三次``````

  • desertsailor

    2008/11/2 22:29:00

    楼主,哪家的液晶屏卖得这么便宜啊,有网址吗?

  • desertsailor

    2008/11/2 22:28:34

    楼主,哪家的液晶屏卖得这么便宜啊,有网址吗?

  • 正点原子

    2008/10/30 10:41:28

    我在实验室做的,没去外面开板,开板费用太贵了300的起价,我又是自己做着用,所以没做.

  • zook0k

    2008/10/30 10:33:16

    顶,楼主这个也做pcb买吗 很有意思的