嵌入式多媒體播放器的設計與實現
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;}
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論