搜索
bottom↓
楼主: cowboy

小玩意,单片AT89C2051 + SD卡 + 3310LCD = 音乐播放器

  [复制链接]

出0入0汤圆

发表于 2011-5-13 17:26:38 | 显示全部楼层
想不到还能这样制造DAC。

出0入0汤圆

发表于 2011-5-13 19:42:51 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-5-13 20:30:56 | 显示全部楼层
cool

出0入0汤圆

发表于 2011-5-13 21:29:43 | 显示全部楼层
太牛了

出0入0汤圆

发表于 2011-5-13 21:30:35 | 显示全部楼层
cool~~~ mark!!

出0入0汤圆

发表于 2011-5-14 11:17:28 | 显示全部楼层
牛人!!

出0入0汤圆

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

出0入0汤圆

发表于 2011-5-14 18:13:57 | 显示全部楼层
NB

出0入0汤圆

发表于 2011-5-14 19:03:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-14 19:59:57 | 显示全部楼层
膜拜

出0入0汤圆

发表于 2011-5-14 20:00:43 | 显示全部楼层
厉害!

出0入0汤圆

发表于 2011-5-14 21:37:43 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-5-15 10:15:32 | 显示全部楼层
要是楼主能出个视频讲解就更牛了。

出0入0汤圆

发表于 2011-5-15 11:21:44 | 显示全部楼层
江山代有才人出!!!

出0入0汤圆

发表于 2011-5-15 18:04:24 | 显示全部楼层
楼主#define Shift_bits   TL1 什么意思啊有什么作用。

出0入0汤圆

发表于 2011-5-17 18:12:34 | 显示全部楼层
楼主能解释一下    NAME    TIMER0_INTERUPT

    EXTRN   DATA (FIFO_out)
    EXTRN   DATA (Buffer)

    CSEG    AT   0000BH
    INC     FIFO_out                  ;FIFO_out++
    XCH     A,FIFO_out
    JNB     ACC.6,$+8                  ;if (FIFO_out < 0x60)
    JNB     ACC.5,$+5                  ;{
    MOV     A,#Buffer         ;    FIFO_out = &Buffer
    XCH     A,R0                          ;}  
    MOV     P1,@R0                          ;P1 = *FIFO_out
    XCH     A,R0
    XCH     A,FIFO_out
    RETI
   
    END
什么意思啊!
学习。

出0入0汤圆

发表于 2011-5-25 19:27:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-25 21:26:58 | 显示全部楼层
厉害

出0入0汤圆

发表于 2011-6-1 20:54:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 20:56:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-2 11:39:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-2 16:35:54 | 显示全部楼层
mark,回去再慢慢看

出0入0汤圆

发表于 2011-6-2 16:36:27 | 显示全部楼层
mark,回去再慢慢看

出0入0汤圆

发表于 2011-6-3 13:23:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 14:55:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 16:03:51 | 显示全部楼层
mark,也想做一个

出10入10汤圆

发表于 2011-6-3 21:51:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-6 12:56:51 | 显示全部楼层
膜拜!牛人!

出0入0汤圆

发表于 2011-6-6 14:12:14 | 显示全部楼层
楼主厉害啊

出0入0汤圆

发表于 2011-6-10 22:24:05 | 显示全部楼层
服了。。。

出0入0汤圆

发表于 2011-6-11 19:23:41 | 显示全部楼层
强大啊!

出0入0汤圆

发表于 2011-6-11 20:23:25 | 显示全部楼层
这个太牛了,一定要标记学习!

出0入0汤圆

发表于 2011-6-16 23:11:11 | 显示全部楼层
厉害 高手

出0入0汤圆

发表于 2011-6-22 16:34:30 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

好东西

出0入0汤圆

发表于 2011-6-28 10:01:43 | 显示全部楼层
回复【楼主位】cowboy  
这个小玩意,采用 atmel 的传统51mcu作主控制芯片,加上sd卡和显示屏,就可以作简单的音乐播放器了,虽然音质不怎么样,不过作为diy还是蛮有乐趣,希望大家喜欢。
没有采用fat文件系统,只是按扇区读取sd卡,由于2051资源有限,改为4051有望可以操作fat,但目前程序还在不断完善中。
128byte怎样读取512byte的扇区数据?可以采用边读边播放的方式,就能解决。音乐文件是32khz取样率的wav文件,所以和hifi就沾不上边了。
程序是用c来编写,以方便交流,资料整理中,完善后再上传。

(原文件名:0001.jpg)

(原文件名:0002.jpg)
<center>
<font col......
-----------------------------------------------------------------------
楼主 边读边播的话 那如果读完512扇区 需要扇区加一的话 那不是要卡顿?

出0入0汤圆

发表于 2011-6-28 14:10:56 | 显示全部楼层
mark..回去研究去!!

出0入0汤圆

发表于 2011-6-28 17:16:13 | 显示全部楼层
细读了程序,

key = (key >> 2) | (P3 & 0x30); //仅一句的扫键函数,包括扫描和消抖

这按键识别很强大啊!!

不过有个地方不太明白,
void timer0 (void) interrupt 1 using 1
{
    if (TL0 & 1) _nop_(); //消除中断响应时间不一致,造成的频率抖动
    P1  = pbuf[++p & 63]; //输出一个声音数据
}

可否深入讲解下 if (TL0 & 1) _nop_(); ,是如何消除中断响应时间不一致的?

出0入0汤圆

发表于 2011-6-28 17:24:22 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2011-6-28 17:47:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-29 00:29:11 | 显示全部楼层
比较有意思,支持一下

出0入0汤圆

发表于 2011-6-30 14:54:50 | 显示全部楼层
      ╔═╗══╗ ╗ ╔  ╔═╗╦═╗╔════╗
        ║═╦╝╔╠╗╠═╝║ ╗║ ║╯═══╮║
      ╔═╝═╠╗║║║║  ╚═╝╯═╯╔═══╩╯
      ╚═╗═╠╝║║║╩═╗╔══╦═╗╔════╗
      ╭ ║ ║║║║║  ║╠══╠═╣║    ║
      ╚═╯═╩╣ ╝╯══╯╚══╩═╯╚════╯

出0入0汤圆

发表于 2011-6-30 15:09:05 | 显示全部楼层
厉害!!!

出0入0汤圆

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

出0入0汤圆

发表于 2011-7-1 09:24:51 | 显示全部楼层
有点像用单晶体管做了个收音机,嘿嘿。

出0入0汤圆

发表于 2011-7-1 10:45:34 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

正在学习中!要过看看LZ的帖子啊!每次都收获不少呢!!!感谢分享!!!

出0入0汤圆

发表于 2011-7-1 15:29:28 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-5 11:45:42 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

高手!

出0入0汤圆

发表于 2011-7-7 09:39:16 | 显示全部楼层
不知楼主还来不,希望有幸能看到我的问题。
我在学习研究楼主的代码,遇到问题,其中

unsigned char code Rev[16] =       //ASCII字符高低位倒序转换表
    {
        0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,  //'0' ~ '9'
        0x42,0xb2,0x0a,0xea,0x82,0x6a,                      //"BMP" "WAV"
    };

1.ASCII字符高低位倒序 是什么意思?是每个字节高低位倒序 还是什么倒叙?
2.我怎么倒都不像,比如0~9,我查ASCII表都对不上。
3.开始我怀疑表有问题,想想不可能,要不怎么测试应用通过呢?

出0入0汤圆

发表于 2011-7-7 09:50:09 | 显示全部楼层
希望楼主,或者知道的仁兄解答我的疑惑。

出0入0汤圆

发表于 2011-7-7 09:59:26 | 显示全部楼层
我把这一段相关源的代码贴出来,便于分析:

unsigned char code Rev[16] =            //ASCII字符高低位倒序转换表
    {
        0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,  //'0' ~ '9'
        0x42,0xb2,0x0a,0xea,0x82,0x6a,                      //"BMP" "WAV"
    };

    for (k = 3; k != 0; k--)                //预载文件名于Buffer,以便进行比较
    {
        Buffer[k + 7] = Rev[k + File_type]; //根据扩展名,载入"BMP"或"WAV"的倒序码
        Buffer[k - 1] = Rev[n%10];          //依次载入个十百位的倒序码
        n = n / 10;                         //十进制右移一位
    }  

    Cluster_count = 100;                    //限制根目录搜索深度,防止数据错误导致死读
    Next_cluster.all = 2;                   //根目录从簇号2开始
    do                                      //按簇链依次进行文件搜索
    {
        Sector_count = 0;
        Addr.all = Dat_base + (Next_cluster.all << Shift_bits); //计算簇基址
        do                                  //搜索簇内各个扇区
        {  
            SD_send_read_cmd();             //发送读取指令
            Addr.all += 512;                //计算下一扇区地址
            Wait_start_token();             //等待SD卡响应
            for (j = 16; j != 0; j--)       //搜索扇区内各个文件记录
            {   
                for (i = 0; i != 12; i++)   //比较文件名的11个字符
                {                           //只比较文件名前三位数字和扩展名,其它忽略
                    if (SD_spi_read() != Buffer && (i & 0x07) < 3) break;
                }
                 
                if (i == 12)                                  //匹配成功

出0入0汤圆

发表于 2011-7-9 02:54:14 | 显示全部楼层
sd卡供电不是3.3v吗?直接接在4.5v上能正常工作?(我看图片好像是三节1.5v干电池)

出0入0汤圆

发表于 2011-7-9 09:38:16 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-7-9 09:56:01 | 显示全部楼层
看了视频,效果不错,牛人啊!

出0入0汤圆

发表于 2011-7-9 13:33:03 | 显示全部楼层
我也想做一个,3310lcd多少钱

出0入0汤圆

发表于 2011-7-9 19:17:09 | 显示全部楼层
Mark~

出0入0汤圆

发表于 2011-7-10 10:10:50 | 显示全部楼层
这个确实不错,实现歌词同步是我很困扰的问题,望解答

出0入0汤圆

发表于 2011-7-12 12:23:38 | 显示全部楼层
你为什么这么厉害?

出0入0汤圆

发表于 2011-7-13 15:21:22 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

Dat_base -= 2ul << Shift_bits;

这个 2ul是什么 数?

有谁知道吗?

出0入0汤圆

发表于 2011-7-13 17:34:16 | 显示全部楼层
牛人,佩服啊

出0入0汤圆

发表于 2011-7-13 22:04:49 | 显示全部楼层
回复【楼主位】cowboy  
-----------------------------------------------------------------------

成本?

出0入0汤圆

发表于 2011-7-13 23:06:28 | 显示全部楼层
很强大,佩服

出0入0汤圆

发表于 2011-7-14 09:21:23 | 显示全部楼层
最近我在自学,还没到这个地步,先mark,楼主很强大啊

出0入0汤圆

发表于 2011-7-14 16:29:18 | 显示全部楼层
楼主牛啊,你显示的汉字的字库是不是也在SD卡里呢?

出0入0汤圆

发表于 2011-7-15 08:59:16 | 显示全部楼层
oh... hello,world!

出0入0汤圆

发表于 2011-7-15 10:32:30 | 显示全部楼层
Cowboy果然不是白叫的.........

出0入0汤圆

发表于 2011-7-15 16:18:57 | 显示全部楼层
怎么不需要音频解码芯片???

出0入0汤圆

发表于 2011-7-16 00:39:55 | 显示全部楼层
回复【楼主位】cowboy
-----------------------------------------------------------------------

只求一学,对于即将出道的我,表示压力很大,求楼主援助

出115入0汤圆

发表于 2011-7-17 21:18:28 | 显示全部楼层
mark,学习分立元件DA,加扇区读取

出0入0汤圆

发表于 2011-7-17 21:56:38 | 显示全部楼层
如果后面加个运放,音质能否改善呢...

出0入0汤圆

发表于 2011-7-18 07:13:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-18 10:57:19 | 显示全部楼层
每次看牛仔的代码都可以学到新的思路,不得不膜拜

出0入0汤圆

发表于 2011-7-18 13:38:09 | 显示全部楼层
如果把p2口也用上就能上16bit了?

出0入0汤圆

发表于 2011-7-18 21:32:59 | 显示全部楼层
问下各位怎么读一个文件怎么知道这个文件结束了呢

出0入0汤圆

发表于 2011-7-18 22:10:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-18 23:32:57 | 显示全部楼层
老早就买了MP3模块了,一直还没时间搞呢,向楼主学习了

出0入0汤圆

发表于 2011-7-19 09:33:03 | 显示全部楼层
牛人啊,佩服佩服

出0入0汤圆

发表于 2011-7-19 10:02:09 | 显示全部楼层
太好了,收藏起来

出0入0汤圆

发表于 2011-7-26 16:34:38 | 显示全部楼层
不错,收藏下

出0入0汤圆

发表于 2011-8-16 20:38:34 | 显示全部楼层
回复【楼主位】cowboy  
-----------------------------------------------------------------------

上电之后就直接播放了吗

出0入0汤圆

发表于 2011-8-16 20:47:18 | 显示全部楼层
牛人,厉害。收藏下

出0入0汤圆

发表于 2011-8-16 21:15:52 | 显示全部楼层
mark学习

出0入0汤圆

发表于 2011-8-17 08:48:25 | 显示全部楼层
我靠.....不是一般的牛啊......

出0入0汤圆

发表于 2011-8-17 09:05:36 | 显示全部楼层
MARK

出0入59汤圆

发表于 2011-8-17 10:02:39 | 显示全部楼层
强人!

出0入0汤圆

发表于 2011-8-17 13:08:46 | 显示全部楼层
厉害啊,学习了,作为一位技术人员,真是佩服了

出0入0汤圆

发表于 2011-8-17 22:05:53 | 显示全部楼层
可不可以用STC12C5A32S2+vs1003B之类的芯片做MP3播放器呢?

出0入0汤圆

发表于 2011-8-18 16:16:42 | 显示全部楼层
mark,mark!!!

出0入0汤圆

发表于 2011-8-18 16:18:46 | 显示全部楼层
n牛人!!!

出0入0汤圆

发表于 2011-8-18 16:29:28 | 显示全部楼层
用来玩的。

出0入0汤圆

发表于 2011-8-18 17:19:39 | 显示全部楼层
回复【楼主位】cowboy  
-----------------------------------------------------------------------

SD卡好像是用3.3V动作的吧
所以要用的话是用5V输入吗

出0入0汤圆

发表于 2011-8-18 17:35:31 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-8-18 17:52:44 | 显示全部楼层
严重支持DIY

出0入0汤圆

发表于 2011-8-19 00:41:29 | 显示全部楼层
楼主是否研究过AD4音频,我在网上买的语音模块是播放这个音频的,音质很好,采样率32k, 但是播放32k的wav 就杂音很大

ad4格式的音频还是挺神秘的,用个好点的单片机,又不贵

这是他们的介绍


    支持外挂最大1G容量的SD卡;
  支持播放4Bit ADPCM格式文件;
  自动识别语音文件;
  可装载6KHz~32KHz、36KHz采样率AD4音频;
  可装载6KHz~16KHz采样率WAV音频;
  16bitDAC及PWM音频输出;
  最多可存放512段语音;

出0入0汤圆

发表于 2011-8-19 09:37:24 | 显示全部楼层
膜拜。。。

出0入0汤圆

发表于 2011-8-21 09:56:09 | 显示全部楼层
回复【楼主位】cowboy  
-----------------------------------------------------------------------

自己也DIY一份了,但是声音都没有出来耶,我用2G的SD卡,因为小于1G的SD卡都没了。不知道这是什么问题

出0入0汤圆

发表于 2011-8-21 10:34:00 | 显示全部楼层
膜拜中~2g卡不行吗???

出0入0汤圆

发表于 2011-8-21 16:12:17 | 显示全部楼层
顶一下!本人也有打算做个MP3

出0入0汤圆

发表于 2011-8-23 10:29:04 | 显示全部楼层
vb

出0入0汤圆

发表于 2011-8-23 11:52:48 | 显示全部楼层
楼主,能不能让这个播放器输出SPDIF?

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-3-29 06:48

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

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