- 浏览: 236140 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
1、引言
随着音频解码技术、存储器技术、MP3高质量压缩技术等相关技术不断的发展以及人们对消费电子产品需求的增加,MP3新产品层出不穷,成为时尚潮流前沿的一个最佳载体。人们可以用它休闲娱乐 ,也可以用它工作和学习。设计一款性价比优良的MP3 播放器具有实际的应用价值[1]。随着 C语言的发展和嵌入式系统技术的推广 ,在嵌入式系统低端应用中 ,存在着大量的小型嵌入式应用系统。MP3 播放器的设计 ,就是典型的嵌入式系统应用。MP3具有最基本的播放、选曲、音量控制、音效控制功能。当连接到计算机的 USB接口时,MP3变成 U盘,可以向 U盘复制文件,文件包括 MP3歌曲文件和普通文件 [2,3]。系统的功能结构图如图 1所示:
2、系统设计相关技术
2.1 MP3文件格式 [4]
MP3 文件是由帧(frame)构成的,帧是 MP3文件最小的组成单位。MP3的全称应为 MPEG1 Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG 音频文件是 MPEG1标准中的声音部分,也叫 MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即 Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1和 MP2的压缩率分别为4:1 和 6:1-8:1,而 MP3的压缩率则高达10:1-12:1,也就是说,一分钟 CD音质的音乐,未经压缩需要 10MB的存储空间,而经过 MP3压缩编码后只有 1MB左右。
MP3文件大体分为三部分:TAG_V2(ID3V2),Frame, TAG_V1(ID3V1)。ID3是一个标记MPEG的标准,具体的讲,这些标记是用来指明歌曲的作者、演唱者,年月、所属专辑等信息,这样,播放器在播放时可以读出并显示这些信息。
每个 FRAME都有一个帧头FRAMEHEADER,长度是4BYTE(32bit),帧头后面可能有两个字节的CRC校验,这两个字节的是否存在决定于 FRAMEHEADER信息的第 16bit,为0则帧头后面无校验,为 1则有校验, 校验值长度为 2个字节,紧跟在 FRAMEHEADER后面,接着就是帧的实体数据了,格式如下:
3、硬件设计
(1)、硬件方案选择 本设计选用 ATMEL公司的 AT89C51SND1C芯片作为 MP3播放器的主控制器。主控制器的选定其实也取决于 MP3方案的选定。
从技术角度上说,MP3播放器有多种实现方案,其中分类方法也较多,这里仅从 MP3解码方式和硬件类型方面进行分类,大体可分为:(1)分离芯片的 MP3播放器;(2)集成 MP3功能单片机的 MP3播放器;(3)定制 ASIC电路的 MP3播放器;(4)采用 FPGA实现MP3播放器;(5)混合 MCU/DSP器件播放器。
经过各种资料的搜索和比较,最后总结出三种有代表性的 MP3方案。如表 2所示:
(D/A转换与音频放大芯片:CS4330A和DAC3550)
由上表的分析结果及本设计的实际情况,最后选定了方案1,方案内容如下: AT89C51SND1C:CPU+解码器+USB控制器;CS4330A:D/A转换;任意双路运算放大芯片: 音频放大;K9F5608:32M Flash存储器;最后选定了集成 MP3解码器的 MP3播放器方案,选择了 AT89C51SND1C作为主控制器。
(2)、AT89C51SND1C简介 [5-6]
AT89C51SND1C是ATMEL公司推出的基于8位C51 MCU内核的MP3解码器芯片。它内置 MP3硬件解码器和 USB控制器,支持 48、44.1、32、24、22.05及 16KHZ采样频率,具有重低音、中音、高音均衡控制和重低音环绕声效果。 它可以适应市场上不同 DAC的可编程的音频输出接口,兼容 PCM格式和 I 2S格式。内置 2304BRAM和 64KB Flash程序空间,方便用户增加复杂的功能,并提供 MP3音频时钟及 USB时钟。
(3)、硬件系统结构图(详见图 2)
4、软件设计
4.1、系统流程图
①、系统主框架图:
②、MP3音频解码系统实现过程:
③、MP3播放过程流程图:
4.2、功能定义
利用 Flash存储器技术、MP3音频解码技术、USB接口技术、定时/计数器中断等技术,实现如下的几大主要功能:(一)、读取 MP3音频文件;(二)、解码 MP3音频文件;(三)、播放解码后的 MP3歌曲文件;(四)、实现人机交互接口。(五)、U盘的读写。
4.3、AT89C51SND1C初始化 [8-9]
播放 MP3文件时,首先需要对主控制器 AT89C51SND1C进行以下几方面的初始化设置。如图 7所示。
(1)锁相环初始化,MP3解码器、USB控制器和音频输出接口使用的都是内部锁相环提供的时钟。程序设计如下:
void PllInit(void) { if (FirstStart)
{AUXR1 = 0xf2; //这两个寄存器的值在用 Start Application和直接上电时
//不一样,前一种情况下 MP3解码器才工作,
PLLCON = 0; //这里强制将其置为与用 Start Application按钮时一致
FirstStart = 0; } //PLLCON:锁相环控制寄存器;锁相环时钟及 MP3解码器时钟设置
CKCON |= X2; //0000 0001使能 X2模式,增加处理速度,
//每个机器周期变成 6个振荡周期即 3个时钟周期 PLLCON &= (~PLLRES); //使能 PLL PLLCON |= PLLEN;}
(2)MP3解码器的初始化,即对 MP3CON(MP3控制寄存器)和 MP3CLK(MP3时钟除法器寄存器)进行设置。程序设计如下: //MP3时钟频率的计算方法:MP3CLK=PLLCLK/(int)(MPCD+1)负反馈
MP3CLK|=MPCD; MP3CON &= (~MSKREQ); //允许产生MP3中断 MP3CON |= MPEN; //使能 MP3解码器.
(3)音频输出接口初始化,要得到两个声道串行数据前,需要先对音频输出接口的AUDCON0(音频接口控制寄存器0)和 AUDCON1(音频接口控制寄存器1)中的相关部分进行正确的设置。程序设计如下:
void PllInit(void)
{ if (FirstStart)
{AUXR1 = 0xf2; //这两个寄存器的值在用Start Application 和直接上电时
//不一样,前一种情况下MP3 解码器才工作,
PLLCON = 0; //这里强制将其置为与用Start Application 按钮时一致
FirstStart = 0; } //PLLCON:锁相环控制寄存器;锁相环时钟及MP3 解码器时钟设置
CKCON |= X2; //0000 0001 使能X2 模式,增加处理速度,
//每个机器周期变成6 个振荡周期即3 个时钟周期
PLLCON &= (~PLLRES); //使能 PLL
PLLCON |= PLLEN;}
(2)MP3 解码器的初始化,即对MP3CON(MP3 控制寄存器)和MP3CLK(MP3 时钟除法器
寄存器)进行设置。程序设计如下:
//MP3 时钟频率的计算方法:MP3CLK=PLLCLK/(int)(MPCD+1)负反馈
MP3CLK|=MPCD;
MP3CON &= (~MSKREQ); //允许产生MP3 中断
MP3CON |= MPEN; //使能MP3 解码器.
(3)音频输出接口初始化,要得到两个声道串行数据前,需要先对音频输出接口的
AUDCON0(音频接口控制寄存器0)和AUDCON1(音频接口控制寄存器1)中的相关部分进行
正确的设置。程序设计如下:
void AudioInit()
{ unsigned char i = 10;
AUDCON0 = 0x77; //0111 0110
AUDCON1&=(~0xB0); //SRC=0,MSREQ=0,MUDRN=0
AUDCON1 |= 0x01;
while (i)i--;
AUDCON1 |= 0x40;}
(4)按键初始化,实现播放MP3 的人机交互功能。
void KeyBoardInit()
{ P1 = 0x0f; //将端口1 的低四位,即键盘对应的4 位置1
KBCON = 0x00; //设置键盘有效模式为低电平有效,并使能
IEN1 = IEN1 | EKB; } //使能键盘中断Enable KeyBoard Interrupt
5、总结
嵌入式系统是专用的计算机系统,软硬件的设计必须协同和严格规范。本设计的硬件系统围绕着 AT89C51SND1C主控芯片进行规范设计与调试。软件设计则必须以硬件系统为前提以功能定义为要求进行设计现调试。嵌入式系统硬件的定制,程序的设计必须多次的调试与完善。比如,硬件电路无法正常工作,必须分析原因、调试;开发环境相关软件无法正常安装,必须排除各种错误,直到成功搭建开发环境;程序编译出现错误,必须利用调试功能找出错误并修改代码等等[10]。
嵌入式系统是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式便携多媒体播放器是嵌入式系统技术的一个典型应用。嵌入式便携多媒体播放器未来的发展方向将会呈现出多样化、多功能化、普遍化的变化。
来源:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74390
发表评论
-
Linux下获取IP、MAC、网关、掩码的shell脚本
2012-07-05 13:45 1924Mask:ifconfig |grep inet| sed - ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
tar压缩解压
2012-01-01 11:04 1048tar -c: 建立压缩档案-x ... -
Linux GUI 技术网
2012-01-01 10:32 729http://www.linuxgraphics.cn/hom ... -
Linux常用命令大全
2012-01-01 10:27 647http://www.emlinix.com/linux-zh ... -
嵌入式Linux应用程序自动载入驱动模块方法
2012-01-01 10:22 1292英利公司推出的嵌入式L ... -
MP4音频解码信息
2011-12-31 11:48 0http://blog.chinaunix.net/space ... -
ffmpeg库音频解码示例
2011-12-31 11:45 0一个英文版的例子(有讲解)ffmpeg的一些使用例子mpeg ... -
基于Bootloader的可靠嵌入式软件远程更新机制
2011-12-31 11:42 0嵌入式软件的远程自动 ... -
Double转STRING
2011-12-31 11:40 0double x=1.23456789; ch ... -
linux下检测网卡与网线连通状态
2011-12-31 11:32 0Linux下检测网卡与网线连接状态,使用ioctl向socke ... -
去除10分钟左右自动关闭LCD显示
2012-01-04 09:50 552注释掉drivers\char\vt.c的blank_scre ... -
linux logo 左上角有黑块解决办法
2012-01-04 09:50 942http://www.unixresources.net/li ... -
linux下gprs ppp 拨号的注意事项
2011-12-31 11:21 0折腾了几天,终于在linux下拨号成功了! 注意事项: 1 ... -
GPRS模块在Linux平台上ppp拨号上网总结与心得
2011-12-31 11:09 0由于一个嵌入式平台 ... -
Linux下检测U盘是否插入
2011-12-31 11:07 0Linux下检测U盘是否插入Linux的文件系统是异步的,也就 ... -
Linux下应用程序如何取得U盘插拔消息
2011-12-31 11:06 0Linux 2.6内核版本以后,对于/dev目录的管理采用了新 ... -
在嵌入式Linux下GPRS上网方案
2011-12-31 11:02 0在嵌入式Linux下GPRS上网方案 硬/软件环境 ... -
FFMpeg框架代码阅读
2011-12-31 10:50 01. 简介FFmpeg是一个集录制、转换、音/视频编码解码 ... -
关于ffmpeg的安装及其编译
2011-12-31 10:48 0所需软件包:nasm-0.98.39-1.i386.r ...
相关推荐
总的来说,基于51单片机的嵌入式多媒体播放器设计与实现涵盖了硬件选型、软件开发、文件格式解析等多个领域,要求开发者具备扎实的嵌入式系统知识、数字音频处理理论以及实践经验。这种设计不仅能满足基本的音频播放...
总结来说,基于QT框架的嵌入式媒体播放器的设计与实现,展示了嵌入式Linux环境下,通过使用QVEmbedded作为GUI框架,实现了一个高效、可移植、具有良好用户交互体验的媒体播放器。这一技术方案对于未来在嵌入式系统中...
总的来说,嵌入式多媒体播放器的硬件设计是通过集成各种专业芯片,如SIGMA EM8510和WM7831,以及适当的内存和存储配置,来实现多媒体文件的播放、音频处理、显示输出和外部设备交互等功能。这种设计方法体现了嵌入式...
在这一背景下,嵌入式多媒体播放器的开发成为IT领域的研究热点,不仅满足了市场对于多样化娱乐需求的增长,还推动了人机交互界面的创新。本文旨在探讨如何基于MiniGUI设计与实现一款嵌入式媒体播放器,以应对日益...
"基于嵌入式Linux的多媒体播放器设计" Linux操作系统在多媒体播放器设计中的应用是非常重要的。该设计基于嵌入式Linux系统,使用mplayer可执行程序作为核心播放程序,libmad作为解码库。整个系统的硬件部分使用S3C...
综合来看,消费电子中的嵌入式多媒体播放器设计与实现是一个涉及音频编码技术、嵌入式系统设计、微处理器选择、硬件接口设计以及软件开发等多个领域的综合性工程。通过巧妙地结合这些技术,设计师能够打造出小巧便携...
【描述】: 本文介绍了一种基于ARM微处理器和Linux操作系统的嵌入式多媒体播放器设计,旨在解决传统多媒体播放器成本高、功能单一的问题。该设计利用了ARM-Linux平台的优势,实现了音视频的软解码功能。 【标签】: ...
### 嵌入式MP3播放器的设计 #### 引言 随着科技的进步与人们对于便携式多媒体设备需求的增长,MP3播放器不仅限于最基本的音乐播放功能,还...这一设计思路对于开发其他类型的嵌入式多媒体设备也具有重要的参考价值。
### 基于嵌入式Linux的多媒体音乐播放器的设计与实现 #### 一、引言 随着计算机技术的发展和微电子技术的进步,嵌入式系统因其灵活性、可靠性以及高效性等特点,在诸多领域中得到了广泛应用。特别是在多媒体领域,...
本项目"WinCE嵌入式C++播放器设计"是一个适用于毕业设计或课程设计的实践案例,能够帮助学生深入理解嵌入式系统的开发流程和C++编程技巧。 首先,我们要了解WinCE操作系统。它是微软为小型设备设计的一个实时操作...
总结,基于ARM平台的多媒体播放器设计与实现是一项综合性的工程,涉及硬件选型、操作系统移植、软件开发等多个环节。理解并掌握这些关键技术,能够帮助开发者打造出高效、稳定的多媒体播放解决方案,满足不同应用...
在本项目"基于QT的嵌入式MP3播放器设计代码"中,开发者利用QT的强大功能构建了一个功能完备的MP3播放器。这个播放器不仅具有基本的播放、暂停、停止等操作,还提供了丰富的附加特性,使得用户体验更加出色。 首先,...
【基于DirectFB的嵌入式播放器设计与实现】是一个深入探讨如何在嵌入式设备上构建高效且可定制的多媒体播放器的技术文章。DirectFB是一个轻量级的图形用户界面(GUI)开发库,特别适合资源有限的中低端嵌入式系统。...
【总结】:基于EFSL的嵌入式MP3播放器设计结合了高效的文件系统和强大的ARM处理器,为单片机提供了实现多媒体功能的可能性,尤其是在没有操作系统的情况下。硬件和软件的精心设计确保了播放器的稳定性和用户体验,...
本文介绍了一种基于EFSL(Embedded FileSystem Library)的嵌入式MP3播放器设计方法,主要应用于单片机系统,特别是使用LPC2148微控制器的平台。设计的关键在于利用EFSL开源软件项目的特性,如低内存需求、易于移植...