功率电感生产厂家
联系我们
热门搜索
点击排行
推荐阅读
猜猜你喜欢的
研发资讯 您所在的位置: 首页 > 研发资讯

嵌入式多媒体播放器的设计与实现

来源:    作者:    发布时间:2016-06-11 13:04:15    浏览量:

  ③、MP3播放过程流程图:

MP3播放过程流程图

  ③、人机交互流程图见图6:

  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&am贴片电感p;=(~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]。

  • 基于粗糙集理论的电力变压器绝缘故障诊断新方法本文提出了一种基于粗糙集理论的电力变压器绝缘故障诊断新方法,它能够根据不完整征兆信息对电力变压器故障进行诊断。该方法不但可直接从完备的故障征兆样本集中导出正确的诊断结论,而且还能从不完备的故障征兆样本

  • 怎么知道开关电源使用的是前沿切相还是后延切相怎么知道开关电源使用的是前沿切相还是后延切相?测试波形

  • 数字电位器和数模转换器的区别 1 引言利用数字输入控制微调模拟输出有两种选择:数字电位器和数/模转换器(DAC),两者均采用数字输入控制模拟输出。通过数字电位器可以调整模拟电压;通过DAC既可以调整电流,也可以调整电压。电位器有

  •