这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » DIYMP3开发进程

共57条 5/6 |‹ 1 2 3 4 5 6 跳转至
高工
2012-10-14 23:31:00     打赏
41楼





对BMP格式的图片进行分析和显示。

高工
2012-10-14 23:39:39     打赏
42楼

分享一下BMP文件的格式和怎么去读取它和显示



void  DisplayBMP(uint16 x,uint16 y,uint8 *pBMP)
{
    uint32 SizeBmp = 0;
   // ClearScreen(Magenta); 
    FAT32_Open_File(&OpenFileInfo,pBMP,0);
    FAT32_Read_File(&OpenFileInfo,0,54,gTableBmp);
    if((gTableBmp[0] == 'B') && (gTableBmp[1] == 'M'))
    {
        gBmpOffSet = gTableBmp[13];
 gBmpOffSet <<= 8;
 gBmpOffSet |= gTableBmp[12];
 gBmpOffSet <<= 8;
 gBmpOffSet |= gTableBmp[11];
 gBmpOffSet <<= 8;
 gBmpOffSet |= gTableBmp[10];
 gBmpW = gTableBmp[21];
 gBmpW <<= 8;
 gBmpW |= gTableBmp[20];
 gBmpW <<= 8;
 gBmpW |= gTableBmp[19];
 gBmpW <<= 8;
 gBmpW |= gTableBmp[18];
 gBmpH = gTableBmp[25];
 gBmpH <<= 8;
 gBmpH |= gTableBmp[24];
 gBmpH <<= 8;
 gBmpH |= gTableBmp[23];
 gBmpH <<= 8;
 gBmpH |= gTableBmp[22];
 gBmpBit = gTableBmp[28];
 SizeBmp = gBmpH * gBmpW * gBmpBit;
 ClearPartScreen(x,x + gBmpW - 1,y,y + gBmpH - 1,Magenta);
 //TFTSetPos(x,x + gBmpW - 1,y,y + gBmpH - 1);
 gbmpx = x;
 gbmpy = y;
 FAT32_Read_FileX(&OpenFileInfo,gBmpOffSet,SizeBmp,DrawBmp);
    }
    else
    {
         TFTDisplayHzString(100,163,"不是BMP文件...",Red,Magenta);
    }
}


专家
2012-10-15 17:14:17     打赏
43楼

这女孩是谁那?不错呐


高工
2012-10-18 10:23:07     打赏
44楼

分享一下到现在为止的代码!!!DIYMP3华丽版2.zip
对我有什么建议,希望都告诉我!!


院士
2012-10-19 12:53:33     打赏
45楼
楼主的diy真是炫啊~~

高工
2012-10-22 21:31:18     打赏
46楼

      彩屏一般不带字库的,在刚开始的时候我也无法去在上面大量显示汉字,取模太多装不下。导致开始的歌曲选择也只能靠图片来选择歌曲,也无法显示出每首歌对于的歌曲名和歌手名。在之后我在网上找到了些资料,是关于制作彩屏字库的,然后开始搞这个字库的问题。在网上找到了一个字库的.bin文件,我将它放在SD卡里面,来读取字库里面的数据显示对应的汉字,这就有了一个很糟糕的问题,那就是速度慢了,显示汉字时间太长,所以显示一些信息还可以,但是如果要刷新歌词什么的,我感觉很困难,这几天也试过很多方法但是也没有好的办法来提高这个速度。真的很纠结了......


高工
2012-10-30 19:22:55     打赏
47楼

在做DIYMP3的整个过程中遇到了一些问题,慢慢的,只要自己琢磨还是会解决的。一个DIYMP3的制作,刚开始就需要写一个简单的菜单,我感觉菜单界面是一个有人机界面作品必须要的。我是用结构体来写的菜单,我觉得挺好用的,所以这里分享给大家,主要代码如下:
typedef struct
{
    uint8 KeyStateIndex;     //当前的状态索引号
    uint8 KeyDownState;      //按下向下的按键后的索引号
    uint8 KeyUpState;         //按下向上的索引号
    uint8 KeySureState;       //按下确定
    uint8 KeyBackState;       //按下返回
    void  (*CurrentOperate)(); //当前状态需要执行的函数
}MenuTab;

一个结构体可以解决菜单的很多问题了。
在就是SD卡是必须要搞的,文件级操作是这个的基础了。我借鉴的是振南的FAT,经过很多网友使用,znFAT已经相当的完整了,可以完成一些项目和作品。znfat操作也很简单,只需要提供扇区读写函数给FAT调用就好了,其他的就是定义所使用外部存储器的类型,SD卡还是U盘等,上面的东西设定好了之后再声明一个结构体,
struct FAT32_Init_Arg *pArg;
struct FAT32_Init_Arg FAT_Init_SD;
struct FileInfoStruct  OpenFileInfo;
unsigned char Dev_No;
pArg = &FAT_Init_SD;
Dev_No = SDCARD;

之后就是VS1003,其实VS1003基本操作很简单,就是读写寄存器,我想分享的是频谱,在读频谱的是要给VS1003写入一段代码,之后就可以读取频谱了,14个频段。具体代码太长这里就不贴上来了,在沁恒的网站上有相应的资料。

彩屏是一个很纠结的问题,就是没有字库,刚开始我也没多考虑这个,只是觉得取模就好了。但是最后要大量显示文字和读取歌曲信息的时候就很要命了,这个取模简直弱爆了。最后在网上查了开始琢磨着字库,经过在网上各大论坛逛了几天找到了一个字库文件.bin文件。我开始尝试把这个文件放在SD卡里面,然后读取里面的数据显示。尝试了半天感觉可以,但是速度感觉很慢,这个就直接否定我要显示歌词,速度慢跟不上。字库一般论坛上很多,大家可以自己找找哦!按照我的用法用就好了。

刚开始没显示一张图片都要用软件去取模,太麻烦了,开始解码BMP文件,这种格式的图片编码有一定规律,可以通过单片机解码然后去显示,实现了,现在方便多了,对于BMP文件的编码格式,可以浏览http://baike.baidu.com/view/7671.htm

最后一个问题就是对于MP3文件编码的分析了,对于MP3编码我更喜欢的是ID3V2,这个编码对于单片机去分析有很大好处,它的信息都在文件的开头,读出来的时间花的少,ID3V1信息都在文件最后的128个字节,如果去读取花的时间要长很多。这里分享一个链接http://baike.baidu.com/view/66078.htm

这次我学到了很多,,,感谢这次活动了,瑞萨单片机IO功能太多,用起来得好好把握!!!学习东西还是要在做一个具体的实物中来探索和发现。


院士
2012-10-31 09:17:23     打赏
48楼
设置成精华

高工
2012-10-31 10:07:54     打赏
49楼

楼主厉害 收藏了!


高工
2012-11-01 11:02:47     打赏
50楼

把一些关键的资料分享给大家DIYMP3资料(字库文件和代码).zip


共57条 5/6 |‹ 1 2 3 4 5 6 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]