搜索
bottom↓
回复: 67

Mega16做的读SD卡的WAV音乐播放器

[复制链接]

出0入0汤圆

发表于 2010-9-11 17:31:09 | 显示全部楼层 |阅读模式
这是去年做过的一个音乐播放器,基本结构就是用Mega16读取SD卡中的WAV音乐文件,然后送入两个DA转换器,分别控制左右声道,再将声音放大,驱动耳机或扬声器,附加的LCD1602屏用于显示播放时间等。虽然音频用的是8位量化,但是我设计时采样率很高为44.1kbps,再加上又是双声道,因此音质超好,除了微弱的白噪声以外,音质基本没有失真。

基本功能都有,面板上有三个按钮,从上至下分别为标记为K1、K2、K3。
功能如下:
K1:播放、暂停;
K2:短按 上一曲;长按 返回
K3:短按 下一曲;长按 快进
双联可变电位器用于音量大小调节。

做完后想过把屏、DA等去掉,单片机用Mega8,存储卡用TF卡,音频用PWM的方式输出,这样硬件结构大幅度缩减,整机体积也减小不少。后来一直没有时间去做,前几天在《无线电》上看到有人用这种结构做了一个,于是不禁感慨了一下,遂把相关资料贴到这里,方便大家交流。

点击此处下载 ourdev_582186JLMVD9.rar(文件大小:3.81M) (原文件名:基于SD卡的WAV文件播放器.rar)

(原文件名:图像0187.jpg)


(原文件名:图像0189.jpg)


(原文件名:图像0191.jpg)

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

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

出0入0汤圆

发表于 2010-9-11 19:16:15 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-9-11 19:40:26 | 显示全部楼层
对“音质好”有疑问

出0入0汤圆

发表于 2010-9-12 00:08:52 | 显示全部楼层
回复【2楼】mowin 雾湾
对“音质好”有疑问
-----------------------------------------------------------------------
东东不错。楼主是同道人啊,呵呵。

不过对"音质好"同样表示严重疑问,我做的STM32f103+TDA1305,使用独立的有源温补晶振提供I2S信号驱动,耦合和去耦电容都是知名音频专用电容.播放的是16BIT的44.1K WAV,音质也才过得去,感觉高音有点冲。而且只有直接使用锂聚合物电池直接供电(不经过任何处理)才能听清楚那"毒人的"口水声和"胆味".

对"音质基本没有失真"更是十分怀疑,楼主如果有机会听一下俺的播放器的声音就知道为什么了。俺的配置虽然音质已经比一般的CD要好,(不要怀疑,我比较过的机器有松下便携式CD S700,SONY CDP-950,IAUDIO i7 MP3,APPLE IPOD 3代 20G,还有个声音差得一塌糊涂还吹上天的垃圾的RM970 MP4,等等) 声音干净得连一点点底噪都听不见,俺都不敢这么说,这播放器的解析力一般,结像有时候会混,特别是大动态的时候。不过非常适合听人声。

开机检查SD卡,屏幕右上角被碰坏了


(原文件名:1.jpg)
LOGO


(原文件名:2.jpg)
文件选择,还有一个界面是文件夹选择,图略


(原文件名:3.jpg)
播放文件界面,第一行为文件夹,第二行为播放的文件名,其他的一看便知.底行蓝色的DIR表示当前循环模式为文件夹循环
中间就是那“销魂”的进度条了,哈哈


(原文件名:4.jpg)

开发板和DAC拼接制作,对外观要求高的朋友请绕过
DAC模拟部分直接聚合物电池供电,套用某大虾的话,直接拍死千把块的MP3,踢飞山寨机


(原文件名:5.jpg)

手机拍摄,低清图奉献。这个播放器性价比超高,音质已经超过我的预期,但离Hifi还远.下一步计划,开板,制作便携式 准Hifi 播放器,DAC初步选定为PCM1792或者PCM1704K,可能使用数字滤波DF1704,增加 MP3播放,增加flac播放.

出0入663汤圆

发表于 2010-9-12 00:36:44 | 显示全部楼层
DAC0832能叫音质超好?
还好这个帖子不是放在音响区,不然肯定被口水淹死。
看在LZ发在AVR区的份上,大家就悠着点吧。 :)

出0入0汤圆

发表于 2010-9-12 00:46:35 | 显示全部楼层
楼主确实有才!不过DA0832是8位DA,哪来音质好丫??

出0入0汤圆

发表于 2010-9-12 01:03:45 | 显示全部楼层
好资料!

出0入0汤圆

发表于 2010-9-12 01:11:37 | 显示全部楼层
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
兄台能分享一下字库和unicode转换表吗?
yy一下PCM1704K, DF1704+PCM1704K*2价钱不低啊
我想找AK4390/AK4397不知道哪里有

出0入0汤圆

发表于 2010-9-12 01:19:16 | 显示全部楼层
文件在这儿
点击此处下载
ourdev_582269BZKOZ6.rar(文件大小:430K) (原文件名:GBK字库及Unicode转换表.rar)



//显示汉字的函数,仅供参考,c[2]为GBK编码,
void PutGB1616(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int f,unsigned int b)
{
        unsigned int i,j,k;
        unsigned long offset;
        unsigned char GBK_MSK[32];

for(i=0;i<32;i++)GBK_MSK=0xff;

if(font_on)
{
        i=c[0];k=c[1];
        if(i>=0x81 && i<=0xA0)offset=(0x0000+(i-0x81)*0xBF+(k-0x40))*0x20;
        else
        if(i>=0xA1 && i<=0xA7)offset=(0x17E0+(i-0xA1)*0x5E+(k-0xA1))*0x20;
        else
        if(i>=0xA8 && i<=0xA9)offset=(0x1A72+(i-0xA8)*0xB0+(k-0x40))*0x20;
        else
        if(i>=0xAA && i<=0xAF)offset=(0x1BD3+(i-0xAA)*0x61+(k-0x40))*0x20;
        else
        if(i>=0xB0 && i<=0xF7)offset=(0x1E19+(i-0xB0)*0xBF+(k-0x40))*0x20;
        else
        if(i>=0xF8 && i<=0xFE)offset=(0x53D1+(i-0xF8)*0x61+(k-0x40))*0x20;
        else offset=0xff00;
        f_lseek(&f_font,offset);
        f_read(&f_font,GBK_MSK,0x20,&j);
        }

        LCD_SetArea(x, y, x+16-1, y+16-1);
        LCD_Inst(0x2C);

        LCD_CS(0);
        LCD_RD(1);
        LCD_RS(1);

           for(i=0;i<32;i++)
        {
        unsigned short m=GBK_MSK;
        for(j=0;j<8;j++)
                                {
                                if((m&0x80)==0x80)
                                                {
                                                LCD_Bus_Write_Byte(f>>8);
                                                LCD_Bus_Write_Byte(f);
                                                }
                                else {
                                        LCD_Bus_Write_Byte(b>>8);
                                        LCD_Bus_Write_Byte(b);
                                        }
                                m<<=1;
                                }
        }
        LCD_CS(1);
}


//Unicode 转换成 GBK码的函数
WCHAR ff_convert (        /* Converted code, 0 means conversion error */
        WCHAR        src        /* Character code to be converted */
)
{
        WCHAR t[2];
        WCHAR c;
        unsigned long i, li, hi;
        int n;
        unsigned int cout;

if( ! u2gb_on )
{
        if(f_open (&f_u2gb,"SYSTEM/U2GB.TBL", FA_READ)!=FR_OK)
                        u2gb_on=0;
        else
                        u2gb_on=1;
}


        if (src < 0x80){c = src;}/* ASCII */
        else
                if(u2gb_on==0)c='?';
                else
                {
                        /* Unicode to OEMCP */
                        hi=f_u2gb.fsize;
                        hi =hi / 4 - 1;
                        li = 0;
                       
                        for (n = 16; n; n--)
                                {
                                i = li + (hi - li) / 2;
                                f_lseek(&f_u2gb,i*4);
                                f_read(&f_u2gb,&t,4,&cout);
                                if (src == t[0]) break;
                                if (src > t[0])
                                        li = i;
                                else
                                        hi = i;
                                }
                        if(n!=0)
                                c=t[1];
                        else c='?';
                        }
        return c;
}

出0入0汤圆

发表于 2010-9-12 01:23:59 | 显示全部楼层
非常感谢
我准备在UC3B0256+LCD12864上试用

出0入0汤圆

发表于 2010-9-12 01:27:12 | 显示全部楼层
这个是横向取模的,如果是LCD12864估计要竖向取模的。
给:
GBK字库,有横向、竖向及寻址公式ourdev_582271WUDVT0.rar(文件大小:763K) (原文件名:16点阵GBK字库.rar)

出0入0汤圆

发表于 2010-9-12 01:32:59 | 显示全部楼层
LCD12864是竖向低位在上的

出0入0汤圆

发表于 2010-9-12 01:37:37 | 显示全部楼层
回复【10楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
我明天试验一下,看来我一直头痛的字库问题有希望解决
再次感谢

出0入0汤圆

发表于 2010-9-12 01:39:42 | 显示全部楼层
回复【7楼】mowin 雾湾
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
兄台能分享一下字库和unicode转换表吗?
yy一下pcm1704k, df1704+pcm1704k*2价钱不低啊
我想找ak4390/ak4397不知道哪里有
-----------------------------------------------------------------------

千把块还消受得起,难的是模拟部分和外观的设计."舍不得孩子套不住狼"哈.
不过为了向便携性妥协,而且仅是个人业余DIY,不会采用非常复杂的设计,如果发现PCM1792或者PCM1704设计需要复杂的后期处理或者太大的功耗,会考虑重新用TDA1305,音质达到入门级CD的水准还是可以的,毕竟这片子声音还是不错的.因为已经包含运放,后期滤波处理非常简洁.DAC部分功耗在50ma左右.
不过TDA1305不好调声,就因为其后期处理简洁。

出0入0汤圆

 楼主| 发表于 2010-9-12 15:50:50 | 显示全部楼层
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

唉,真是不好意思,光顾着自我陶醉了,没注意措辞。实际上音质只能跟卡带录音机相当,带上耳机仔细听有明显的背景噪声,我测试过,跟DA无关,是功放TDA2822的问题吧,事实上,用8位量化的确不能保音质,但是用16位的话,歌曲文件又显得太大了,差不多有四五十兆啊

出0入0汤圆

 楼主| 发表于 2010-9-12 15:55:46 | 显示全部楼层
回复【4楼】gzhuli 咕唧霖
dac0832能叫音质超好?
还好这个帖子不是放在音响区,不然肯定被口水淹死。
看在lz发在avr区的份上,大家就悠着点吧。 :)
-----------------------------------------------------------------------

抱歉,音质的确一般,当时的情况是刚学avr,迫切想用avr做个东西,于是就做了这个

出0入0汤圆

 楼主| 发表于 2010-9-12 17:22:30 | 显示全部楼层
回复【5楼】fm993
楼主确实有才!不过da0832是8位da,哪来音质好丫??
-----------------------------------------------------------------------

怎么说呢,其实在我们这个破小城市,很多的东西都买不到,我这边的电子市场里DA我只见到DAC0832,说实话这边的市场比深圳要落后10年,真的,这边的单片机出了51、avr、pic就没别的,而且还都没有贴片,杯具啊

出0入0汤圆

发表于 2010-9-12 20:24:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-12 20:25:10 | 显示全部楼层
mark,昨天刚刚在《无线电》上看见!

出0入0汤圆

发表于 2010-9-13 20:52:37 | 显示全部楼层
回复【14楼】nilxy
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
唉,真是不好意思,光顾着自我陶醉了,没注意措辞。实际上音质只能跟卡带录音机相当,带上耳机仔细听有明显的背景噪声,我测试过,跟da无关,是功放tda2822的问题吧,事实上,用8位量化的确不能保音质,但是用16位的话,歌曲文件又显得太大了,差不多有四五十兆啊
-----------------------------------------------------------------------

现在SD卡动不动几个G,四五十兆不多啊。16位也仅仅是比8位多一倍,用8位的话不还得有个二三十兆?把卡容量加大一倍不就得了,再说现在SD或TF卡也不太贵,像我买的16G的是180大洋,这么大容量的卡。。。遥想当年,小乔那个。。。(sorry,跑题了,呵呵)想当年,我用的第一块SD卡才可怜的64M,拿来存CD,只能存1首,汗,而且也要一百多大洋。。。今非昔比啊。
我倒是担心用AVR处理CD音质的WAV文件速度上会不够,170KBYTE/SEC的文件读取速度,再加上其他的开销,软件上要有很好的优化才能达到吧。

出0入0汤圆

发表于 2010-9-14 20:38:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-8 22:21:56 | 显示全部楼层
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

看了这个很感兴趣,有开好的板吗?想弄一个玩玩!我用43122或者1794做解码芯片(可以提供这2种芯片试验), 谢谢!

出0入0汤圆

发表于 2010-11-15 17:15:12 | 显示全部楼层
同问,楼主做好板了么,想玩一个

出0入0汤圆

发表于 2010-11-15 17:20:32 | 显示全部楼层
回复【21楼】wanjian
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
看了这个很感兴趣,有开好的板吗?想弄一个玩玩!我用43122或者1794做解码芯片(可以提供这2种芯片试验), 谢谢!
-----------------------------------------------------------------------

上面已经说明,是开发板加DAC板拼起来的。我现在DAC换另一块PCM1793的,还没有画PCB,估计也不会很快,最近时间有点紧。

出0入0汤圆

发表于 2010-11-15 18:32:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-15 18:37:30 | 显示全部楼层
都是牛人!!!

出0入0汤圆

发表于 2010-11-15 18:40:33 | 显示全部楼层
我用M16+DAC0832+LM386,音质一般,噪音大。

出0入0汤圆

发表于 2011-1-28 03:24:07 | 显示全部楼层
我在试,,声音出来了,但音调变了,感觉是读SD卡数据不够快,
请问大家是怎么读取SD卡数据,速度会快点呢?
我看楼主程序是这样的,先读512Byte,然后由中断去播放,播放中继续读下一个512BYTE数据,
我也按这样去试过,觉得还是慢,想不明白

出0入0汤圆

发表于 2011-1-28 03:24:45 | 显示全部楼层
现在就是原来是女声的,出来变男声了,而且不清晰

出0入0汤圆

发表于 2011-1-28 03:29:09 | 显示全部楼层
附件是源程序
点击此处下载 ourdev_613716XDCFIC.rar(文件大小:28K) (原文件名:S-140.rar)

出0入0汤圆

发表于 2011-1-28 08:25:23 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2011-3-1 21:00:55 | 显示全部楼层
回复【楼主位】nilxy  
-----------------------------------------------------------------------

您好,我想试试做做您这个mp3,但是遇到了些问题,我是个新手,能帮帮我吗?我的qq 532529278

出0入0汤圆

发表于 2011-3-1 21:22:14 | 显示全部楼层
很不错

出0入0汤圆

发表于 2011-3-30 06:35:27 | 显示全部楼层
这个atmega16的能不能去掉DA?

出0入0汤圆

发表于 2011-3-30 08:41:50 | 显示全部楼层
记号~~

出0入0汤圆

发表于 2011-4-5 09:36:36 | 显示全部楼层
支持  学习一下

出0入0汤圆

发表于 2011-4-20 20:20:58 | 显示全部楼层
回复【楼主位】nilxy  
-----------------------------------------------------------------------

如果用单声道 去掉一个DA 依然用两个DA的程序 能成功么?

出0入0汤圆

发表于 2011-4-20 20:38:32 | 显示全部楼层
回复【楼主位】nilxy  
-----------------------------------------------------------------------

对于音乐格式参数有什么限制???

出0入0汤圆

发表于 2011-4-20 21:04:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-23 17:13:52 | 显示全部楼层
GOOD

出0入0汤圆

发表于 2011-4-24 19:26:29 | 显示全部楼层
回复【3楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

你好sharpufo 风生水起月皎白,能做录音模块吗?
如可以联系我
QQ:370809806

出0入0汤圆

发表于 2011-4-24 19:32:44 | 显示全部楼层

(原文件名:QQ截图未命名.jpg)


请问这两个是干嘛用的????

出0入0汤圆

发表于 2011-4-24 22:46:39 | 显示全部楼层
围观

出0入0汤圆

发表于 2011-7-23 09:29:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-24 00:47:36 | 显示全部楼层
真是天外有天!

出0入0汤圆

发表于 2011-7-24 12:58:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-12 01:59:54 | 显示全部楼层
音乐播放的好资料啊!呼啦啦,呼啦啦!

出0入0汤圆

发表于 2011-8-15 11:00:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-15 21:06:49 | 显示全部楼层
只要是我不知道的,都是我值得学习的。我表示赞一个。

出0入0汤圆

发表于 2011-8-26 07:20:20 | 显示全部楼层
好资料,正准备做MP3

出0入0汤圆

发表于 2011-8-31 17:41:41 | 显示全部楼层
回复【3楼】sharpufo
回复【2楼】mowin 雾湾
对“音质好”有疑问
-----------------------------------------------------------------------
东东不错。楼主是同道人啊,呵呵。
不过对"音质好"同样表示严重疑问,我做的stm32f103+tda1305,使用独立的有源温补晶振提供i2s信号驱动,耦合和去耦电容都是知名音频专用电容.播放的是16bit的44.1k wav,音质也才过得去,感觉高音有点冲。而且只有直接使用锂聚合物电池直接供电(不经过任何处理)才能听清楚那"毒人的"口水声和"胆味".
对"音质基本没有失真"更是十分怀疑,楼主如果有机会听一下俺的播放器的声音就知道为什么了。俺的配置虽然音质已经比一般的cd要好,(不要怀疑,我比较过的机器有松下便携式cd s700,sony cdp-950,iaudio i7 mp3,app......
-----------------------------------------------------------------------

估计是DAC 1305的缘故吧!我打算照你的方案做,但是DAC换PCM1794+OP267 不过由于刚入门STM32 还望你指教!有源温补晶振是通过mega48输出吧!

出0入0汤圆

发表于 2011-9-2 10:00:06 | 显示全部楼层
这个东西有点意思。mark!

出0入0汤圆

发表于 2011-9-2 10:56:47 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-10-2 01:49:05 | 显示全部楼层
楼主的东西不错,但我有个疑问,就是M16D的数据存储空间不是才512吗?于是就提示:
!E <library>(62): area 'bss' not large enough

出0入0汤圆

发表于 2011-11-21 20:18:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-22 11:10:15 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-11-30 10:31:32 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-11-30 13:27:27 | 显示全部楼层
定楼主

出0入0汤圆

发表于 2012-1-16 16:48:14 | 显示全部楼层

出0入0汤圆

发表于 2012-1-16 17:14:18 | 显示全部楼层
求师傅带我啊。。。。。

出50入10汤圆

发表于 2012-1-17 20:56:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-20 11:40:39 | 显示全部楼层
好资料!

出0入0汤圆

发表于 2012-10-20 20:03:05 | 显示全部楼层
用cs4330做DA可以吗?

出0入0汤圆

发表于 2012-11-1 11:50:52 | 显示全部楼层
good job !!!

出0入0汤圆

发表于 2012-11-1 17:03:36 | 显示全部楼层
无线电无线电

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 07:25

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

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