OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8805|回复: 16

第一届“星翼杯”电子创新大赛-大屏触摸MP3【决赛作品】

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
发表于 2013-3-15 12:55:20 | 显示全部楼层 |阅读模式
            

很高兴能够在这个平台上参加这样一个电子比赛,在这个展示自我的平台上,希望能够和大家一起探讨各种技术问题,解决各种技术问题,汲取各方面的营养!请大家指教!

在这次的决赛中准备做一个触摸的MP3播放器!预期实现的功能是:MP3音乐播放,另外还有图片显示,电子书阅览功能。以上功能除了按键可控以外,主要的还是实现手动触摸屏的可控控制!希望大家赐教指导!谢谢!!
           

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-15 13:52:18 | 显示全部楼层
回复【楼主位】yitofive:
---------------------------------
加油!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2013-3-15 14:18:35 | 显示全部楼层
呵呵, 加油
https://github.com/roxma
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-3-25 16:52:36 | 显示全部楼层
最近一周的时间由于各种事情,竞赛这边给耽误了一点!整体来说比赛的进度比较的慢!到目前为止刚把LED点亮,因为诶有花到足够的时间,所以,对内部的一些东西还不是很清楚!当然之前有接触一下另外的一款32——STM32F107,对比一下,有一点不同,我是从两者的例程中找共同与不同点的!开始时候完全按照之前的想法去做,后来发现不是很正确,现在在犹豫是不是改换回对寄存器操作,而不是调用它的库函数!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-25 20:55:45 | 显示全部楼层
回复【4楼】yitofive:
---------------------------------
虽然时间比较久,但是也要抓紧啊,呵呵。
先做出来个大概,能实现功能先,后续慢慢再完善。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-4-3 01:53:35 | 显示全部楼层
最近几天一直在看关于红外解码的部分,不过还是51的部分,因为之前没有学过,现在从这里看起的,方便接下来的入手。
关于红外解码,主要包含以下几个方面的知识是我们在学习的时候要非常关注的:编码方式、遥控器波形输出、波形解码。
1、编码方式的问题,我用的是TC9012芯片下的遥控器,它的编码方式如下:
      



值得注意的是这里码值的顺序,这里的每一个字节是从小到大排列的,编程的时候要特别注意,也是大家比较容易忽视的。数据码值就只有后面的32位。
2、遥控器波形输出


开始的9MS的时间是引导码,作为一个数据传输的确定项。后面的都是数据项,每一项都是八位。


3、 波形解码
            以下是数据“0”、“1”的波形图


图中可以看出,是由时间的长短决定的,我们通过判断时间的大小来判别每一位上的二进制数值。


部分程序如下:


a、 数据接收存储

        if( startflag )                                  //判断按键按下,开始数据存储                                  
{
if( irtime > 32 )   //引导码判断
{
i = 0;
}
irdata = irtime;                   //存储每一位的波形时长,用以判断是“0”还是“1”
irtime = 0;
i++;
if( i > 32 )
{
irok = 1;
i = 0;
}
}
else
{
irtime = 0;
startflag = 1;
}

b、红外接收值的处理:用以处理之前接收到的红外的时间值,并组合成一个字节的大小(按一定的顺序)
for( i = 0;i < 4;i ++ )                    //一共4个字节
{
for( j = 1;j <= 8;j ++ )         //每一字节8位
{
        if(irdata[k]>6)                    //根据满足“1”的条件合理的设置的一个值
        {    
 value|=0x80;     //通过移位的方式给每一位赋值
        }
if(j<8)            
{
value>>=1;
}
         k++;
}
IRcord = value;        //得到一个字节的数据
value = 0;

c、然后将数据转化成十六进制的数字,用于比较和外围模块或者电路设备通信。

                TempData[0]=IRcord[0]/16;      //转化成十六进制的数字,方便使用
TempData[1]=IRcord[0]%16;
TempData[2]=IRcord[1]/16;
TempData[3]=IRcord[1]%16;
TempData[4]=IRcord[2]/16;
TempData[5]=IRcord[2]%16;
TempData[6]=IRcord[3]/16;
TempData[7]=IRcord[3]%16;


以上就是对整个红外的一个粗略的个人心得。在我还是花了一点时间学习这个的,调试过程中出了一点问题,但是一直没有发现,所以花了一点时间。









回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-3 08:48:32 | 显示全部楼层
TKS
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-4-14 18:07:22 | 显示全部楼层
又有一段时间没有发帖了!虽然进度一般,但是还是今天来发一个!
最近刚刚完成了SD卡与znfat的挂接,也就是通过振南文件访问函数等访问SD卡内的数据,在这里的困难是比较大的!体现在几个方面.第一,SD卡的了解及操作;第二znfat中函数的理解及其调用。
在这里我简单说一下我的理解,欢迎板砖。
SD卡在SPI通信中是相对比较容易的操作方式,当然这里我选择的就是这种通信方式,只需要四个I/O口的相应操作就足够了,注意一些对应的指令,CMD0,CMD1,CMD9,CMD10等等都有用到。

UINT8 znFAT_Device_Init(void) 
{
 UINT8 res=0,err=0;

 ioctl.just_dev=0;
 ioctl.just_sec=0;

 res=SD_Initialize(); 
 if(res) err|=0X01;
 return err; 
}

然后就是znfat函数的调用了,在这里每一个函数都是写好的,只需要对应的调用就行了。首先是存储设备的初始化,然后是设备的型号选择,最后是znfat的初始化!这三部完成之后就可以正确的完成SD卡相应文件的额访问了!
int main()
{
  Stm32_Clock_Init(9);
delay_init(72);
znFAT_Device_Init();
znFAT_Select_Device(0,&table);
znFAT_Init();
znFAT_Open_File(&temp,"/test.txt",0,1);
znFAT_ReadData(&temp,0,10,table1);
while(1);
}
我们访问一个txt文件中的数据,其数据如下:
所在文件夹:


文件内容:



这里我们使用一个数组的值得采取验证我们的数据采集是否正确。









回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-14 21:17:58 | 显示全部楼层
回复【8楼】yitofive:
---------------------------------
顶。不过我用的是fatfs。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-4-17 23:21:58 | 显示全部楼层
刚刚完成了TFT彩屏访问SD卡的操作,除了之前TFT彩屏与Znfa的挂接之外,BMP文件的内容,以及BMP文件的解码也是几个难点,但是都被一一克服了。对于BMP格式的图片文件:

我们知道的偏移量,那么真正要显示的数据就是,从偏移量那里开始后面的字节就是我们图片的显示数据。显示数据的大小就是我们上面所求的BMP位图大小。彩屏液晶上面的每个像素点都一个16位的数据,这16位的数据包含了该点的RGB的值。那么我们怎么根据图片里的数据来求出RGB的值并转化为一个16位的数据呢!
首先说32位的BMP图片:
32位的图片是一个像素点的信息由4个字节表示。
BYTE rgbBlue; B
BYTE rgbGreen; G
BYTE rgbRed; R
BYTE rgbReserved 0;(不用管)
现在我们就把这几个数据转换为给彩屏显示的16位的数据。这四个数据如果存在RGB[4]这个数组里。
对于彩屏的16位数据是:R(5)G6位)B5位);
Blue = RGB[0] * 31 / 255;
 Green = (RGB[1] * 63 / 255) << 5;
 Red = RGB[2] * 31 / 255) << 11;
 RGB_TFT = Blue + Green + Red; //给彩屏的16位数据
RGB[3]忽略不管。
再说24位的BMP图片:
24位的图片是一个像素点的信息由3个字节表示。
BYTE rgbBlue; B
BYTE rgbGreen; G
BYTE rgbRed; R
 剩下的和上面处理是一样的,不同的是这里的数组定义为RGB[3];
再说16位的BMP图片:
16位的每个像素点由两个字节表示。在写彩屏函数的时候就会写到一个函数就是向一个像素点写两个8位的数据。所以这里就不用多讲,就是把数组定义位RGB[2],然后将这数组里的两个8位数据写入彩屏就好了。
下面是显示的结果!





回复 支持 反对

使用道具 举报

2

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2013-3-16
在线时间
7 小时
发表于 2013-4-19 14:33:46 | 显示全部楼层
mark\
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-3-12
在线时间
0 小时
 楼主| 发表于 2013-5-5 00:34:15 | 显示全部楼层
经过这么长时间的奋战,终于将作品完成了!但是效果还没有达到理想的那种,不过我已经努力了,以后有的是时间,还是会做一些改进的!第一次接触嵌入式,表示开始时很不适应,但是时间慢慢的流逝,一天天的了解,最后还真心觉得比起51来说还真是强大好多,主要是相对于51多了库函数的调用这一种方式,这样一来省去了很多去写底层函数的问题。但是个人感觉,这只能是对于初学者,到后面的话还是得深入了解内部的底层函数,包括 I/O口设置 、寄存器设置、定时器、中断、串口、通信方式等等,都是我们需要了解的,了解这些东西能够更好的帮助我们在编程时遇到的一些表面上无法理解以及解决的问题!因此对于长期的学习来说,深入的了解是必不可少的。但是这一点的不足刚好体现到了我们这次竞赛之中!即使是在作品完成之后,还是没能够对32有一个很深入的认识!
下面是一些我做品完成之后的照片的展示:
1、作品的整体展示,包括一块ALIENTEK miniSTM32迷你核心开发板、2.4寸TFT彩屏、MP3模块等等。



2、主菜单显示所有可以实现的功能:图片欣赏(电子相册浏览BMP格式的文件)、TXT文本阅读( 可阅读TXT格式的文本文档 )、音乐欣赏( 用VS1003模块实现MP3格式文件的解码播放 )。当然这里的第三个图标是一个无效的图标,不具备任何功能。(大家见笑了!)


3、图片欣赏子菜单下的图片文件列表,每页九个文件的显示,可上下翻页

                图片播放,可以上下切换图片



4、TXT文本阅读子菜单下的文件列表。(每个名称的长度不超过12个字符,所以显示的名称有省略的部分,需要改进)




进入其中一个文本( 《明朝那些事儿》 )



5、MP3播放模块实现MP3音频格式文件的播放,以下是音乐播是的界面,有显示当前播放文件的名称等信息!


        电子的道路是孤独地,我们需要耐得住寂寞,我会将这份寂寞视作我最包贵的一笔财富,激励自己在电子的道路上更加坚实的走下去!谢谢原子哥给我们提供这样一个好的平台,让广大的电子爱好者参与到竞赛中来并且享受这样的成功过程。谢谢!


MP3播放器.zip

3.08 MB, 下载次数: 691

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-5 10:40:38 | 显示全部楼层
不错,希望继续努力。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2013-3-20
在线时间
0 小时
发表于 2013-12-19 15:15:54 | 显示全部楼层
回复【楼主位】yitofive:
---------------------------------
MARK!顶起来!
有所志则有所成
回复 支持 反对

使用道具 举报

20

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2013-3-20
在线时间
0 小时
发表于 2013-12-19 15:48:15 | 显示全部楼层
主界面那四个图标的图片是什么格式的,大小呢?谢谢
有所志则有所成
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2014-3-4
在线时间
0 小时
发表于 2014-3-19 15:31:55 | 显示全部楼层
嗯,加油啊
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2013-1-12
在线时间
0 小时
发表于 2014-5-11 11:19:44 | 显示全部楼层
mark!跟进~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 21:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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