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;}