freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式終端中mp3功能的研究與實(shí)現(xiàn)(已改無錯(cuò)字)

2023-07-07 01:17:04 本頁面
  

【正文】 嚴(yán)重,離得越遠(yuǎn),效應(yīng)越弱。由它決定的掩蔽值第七段是 12db,在第 9 段是 15db,這樣,對第七段的電平 10db12db,所以第 7 子帶全部不編碼,而第 9 段的信噪比 S/N 是 3515( db) =20db,因而用 4bit 分辨率就足夠了。這樣第七段忽略不編碼,第八段子帶 5bit 線性量化,第九段子帶 4bit 線性量化,這樣就完成了碼流的壓縮。 MP3 系統(tǒng)軟硬件開發(fā)平臺的構(gòu)建 總體設(shè)計(jì)方案 整個(gè)項(xiàng)目由兩個(gè)部分構(gòu)成:主系統(tǒng)和 MP3 子系統(tǒng),主系統(tǒng)的的處理器采用 Motorola公司 的 MC68VZ328,其主頻為 33MHz,采用 uClinux 操作系統(tǒng),主系統(tǒng)內(nèi)存由 8Mbyte的 FLASH 和 16Mbyte 的 SDRAM 構(gòu)成, MP3 子系統(tǒng)核心處理器采用 Atmel 公司的AT89C51SND1C,其為一專用 MP3 處理器,子系統(tǒng)主要包括 MP3 解碼, MMC 卡、 USB傳輸和 UART 串口等幾個(gè)功能模塊。系統(tǒng)結(jié)構(gòu)如圖 所示: 圖 系統(tǒng)結(jié)構(gòu)框圖 主系統(tǒng)和 MP3 子系統(tǒng)之間通過 UART 串口進(jìn)行通訊,由主系統(tǒng)控制通過 UART 串口來控制子系統(tǒng)的運(yùn)行,如 MP3 歌曲的選擇、播放、停止以及 MP3 音樂文件的刪除 等。因 MP31 6 M B S D R A M8 M B F L A S HM C 6 8 V Z 3 2 8 A T 8 9 C 5 1 S N D 1 C D A CM M C 卡U S B 模 塊音 頻 輸 出U A R T此資料來自 臺商訊息網(wǎng) , 大量管理資料下載 9 子系統(tǒng)的 MMC 卡可以提供比較大的存儲空間,一般為 32MB 或 64MB,而且 USB 模塊提供了高速的文件同步方式,即 MMC 卡可以通過 USB 模塊實(shí)現(xiàn)和桌面 PC 機(jī)間進(jìn)行便捷高速的文件傳輸,為了提高 MMC 卡和 USB 模塊的利用率,使以 MC68VZ328 為核心的主系統(tǒng)也可以間接使用 USB模塊和桌面 PC機(jī)進(jìn)行文件傳輸,即桌面 PC 先通過 USB 模塊把文件傳輸?shù)?MMC 卡,然后主系統(tǒng)通過 UART串口讀取 MMC 內(nèi)的文件,反之亦然,為此必須實(shí)現(xiàn)一種基于串口的文件傳輸協(xié)議,來實(shí)現(xiàn)兩種系統(tǒng)中的文件傳輸。因主系統(tǒng)運(yùn)行uClinux 操作系統(tǒng),系統(tǒng)內(nèi)提供基于串口的 Xmodem、 Ymodem 和 Zmodem 協(xié)議的實(shí)際應(yīng)用程序,經(jīng)綜合考慮后,我們使用在子系統(tǒng)內(nèi)使用 Xmodem 協(xié)議來實(shí)現(xiàn)和主系統(tǒng)進(jìn)行文件傳輸。 因主系統(tǒng)為現(xiàn)有系統(tǒng),對其改動(dòng)不大,在軟件上只要實(shí)現(xiàn)控制 MP3播放的命令發(fā)送和播放狀態(tài)檢測程序,主系統(tǒng)的硬件電路基本不需要作改動(dòng),主要工作在子系統(tǒng)的設(shè)計(jì),包括硬件電路的實(shí)現(xiàn)和軟件的編程。 硬件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) AT89C51SND1C 為 Atmel 公司推出的一款 MP3 解碼專用芯片,內(nèi)部除了集成了一獨(dú)立的MP3 解碼模塊外還包括一標(biāo)準(zhǔn)的 C51處理 器內(nèi)核,由 51內(nèi)核來提供解碼模塊所需的 MP3 文件數(shù)據(jù)流,同時(shí)對解碼過程進(jìn)行控制。 AT89C51SND1C 內(nèi)部包括 64K 的 FLASH內(nèi)存空間,存儲用來控制 MP3解碼過程的固件,另外還包括 2304個(gè)字節(jié)的 RAM空間,用來存儲臨時(shí)數(shù)據(jù),其內(nèi)部的 MP3解碼模塊能實(shí)時(shí)地解碼 MPEG1 Layer3 數(shù)據(jù),并且能支持 MPEG2 Layer3 標(biāo)準(zhǔn)。在解碼 MPEG1 Layer3 數(shù)據(jù)時(shí),其支持 48, 和 32KHz 的采樣頻率,對于 MPEG2 Layer3數(shù)據(jù),其支持 24, 和 16KHz的采樣頻率 [3]。芯片內(nèi)的 2304 字節(jié)的 RAM空間用來作為MP3 解碼的緩沖區(qū)。另外系統(tǒng)內(nèi)還集成了 USB、 2wire、 SPI、 UART 等通訊接口模塊, ADC輸入、 I2S 輸出等音頻接口, NAND或 NOR FLASH、 MMC 卡等存儲接口模塊。 AT89C51SND1C 芯片內(nèi)的結(jié)構(gòu)如圖 所示 [3]: 圖 AT89C51SND1C 芯片內(nèi)部結(jié)構(gòu)框圖 AT89C51SND1C 的系統(tǒng)主頻為 20MHz,由外部晶振來提供系統(tǒng)的標(biāo)準(zhǔn)頻率,經(jīng)芯片時(shí)鐘模塊內(nèi)的 PLL電路產(chǎn)生其他部分所需的工作 頻率。 51 內(nèi)核通過芯片內(nèi)的 8bit總線和其他模塊連接,芯片內(nèi)不包含音頻 DAC模塊,解碼后的 MP3數(shù)據(jù)經(jīng)音頻接口模塊向外輸出,其支持兩種輸出格式: I2S和 PCM, MP3子系統(tǒng)使用 UDA1330ATS 芯片作為外接的音頻 DAC, UDA1330ATS使用此資料來自 臺商訊息網(wǎng) , 大量管理資料下載 10 I2S 格式和 AT89C51SND1C 的音頻接口模塊相連, UDA1330ATS 輸出的模擬音頻信號經(jīng)TDA1308AT 音頻放大電路輸出至耳機(jī)或揚(yáng)聲器。 MP3系統(tǒng)的硬件原理圖見附錄。 軟件開發(fā)及調(diào)試環(huán)境的建立 調(diào)試環(huán)境的建立: 對 AT89C51SND1 進(jìn)行 MP3 開發(fā)之前,首先必須建立調(diào)試環(huán)境, 51 系列單片機(jī)的調(diào)試環(huán)境常用的有兩種:一、使用仿真開發(fā)系統(tǒng);二、在代碼中使用插樁 (stub)的方式,如 MON51和 ISD51。因 AT89C51SND1 為新產(chǎn)品,國內(nèi)的仿真開發(fā)系統(tǒng)都不支持,如從國外購買則價(jià)格昂貴且訂貨周期比較長,所以第一種方式不能采用, MON51 和 ISD51 經(jīng)研究和實(shí)際測試也無法應(yīng)用,所以只能利用調(diào)試 Linux 內(nèi)核的手段,即在 51 代碼中插入 printf 語句通過串口打印出調(diào)試信息的手段來進(jìn)行調(diào)試。 使用 printf 的方式進(jìn)行調(diào)試必須先對串口進(jìn)行初始化, AT89C51SND1 內(nèi)部具有一標(biāo)準(zhǔn)的 UART 串口,在代碼的實(shí)現(xiàn)過程中使用 Set_x2_mode()和 UARTInitT0()兩函數(shù)來使其內(nèi)部的 UART 模塊工作于 9600bps, Set_x2_mode()函數(shù)的作用是使內(nèi)核工作頻率和外接晶振的頻率相同,否則內(nèi)核的工作頻率為晶振的頻率的一半, UARTInitT0()完成串口的初始化工作,函數(shù)如下: void UARTInitT0(void) { PCON |= 0x80。 SCON = 0x50。 /* SCON: mode 1, 8bit UART, enable rcvr */ TMOD |= 0x20。 /* TMOD: timer 1, mode 2, 8bit reload */ TH1 = 239。 /* TH1: reload value for 9600 baud @ 16MHz */ TR1 = 1。 /* TR1: timer 1 run */ TI = 1。 /* TI: set TI to send first char of UART */ } 在代碼的 main()函數(shù)的前部加入串口初始化程序,然后在需要調(diào)試的代碼中插入 printf 語句打印代碼信息,使用 PC 機(jī) Windows 下的超級終端或其他串口監(jiān)控程序來接收和顯示調(diào)試信息。 控制臺的實(shí)現(xiàn): 控制臺的作用是通過串口來控制 AT89C51SND1 的運(yùn)行,是信息終端和 MP3 模塊之間進(jìn)行聯(lián)系的橋梁??刂婆_在實(shí)現(xiàn)上參考了 Linux 系統(tǒng)的控制臺和調(diào)制解調(diào)器所使用的 AT 命令集,命令分為三大類: 文件操作命令,文件操作命令實(shí)現(xiàn)了幾個(gè)基本的 Linux 命令,如 ls、 cd、 rm、 cat 等等; MP3 播放控制命令,如 play、 stop、 next、 prev 等; 文件傳輸命令,文件傳輸命令使用 Xmodem 協(xié)議來實(shí)現(xiàn)信息終端和 MP3 模塊之間的文件交換,包括 xrecv 和 xsend 兩個(gè)命令。 控制臺的任務(wù)函數(shù)為 console_task(),其主要作用是把 UART 接收到的數(shù)據(jù)放入緩沖區(qū)內(nèi),調(diào)用 cmd_parse()對緩沖區(qū)內(nèi)的命令進(jìn)行解釋并作相應(yīng)的處理,函數(shù)如下所示: void modbus_task (void) { if(RI==1) { RI=0。 *pcmd_buf=SBUF。 putchar(SBUF)。 if(*pcmd_buf==0x0d) { 此資料來自 臺商訊息網(wǎng) , 大量管理資料下載 11 cmd_parse()。 pcmd_buf=cmd_buf。 return。 } pcmd_buf++。 } } 命令緩沖區(qū) cmd_buf[ ]為全局變量,其大小為 50 個(gè)字節(jié),類型為 static char xdata, pcmd_buf為緩沖區(qū)內(nèi)的字節(jié)指針,類型為 static char xdata *,當(dāng) console_task()檢測到串口接收寄存器SBUF 內(nèi)有數(shù)據(jù)時(shí),通過 pcmd_buf 指針把數(shù)據(jù)按接收到的順序存入 cmd_buf[ ]緩沖區(qū)內(nèi),同時(shí)判斷接收到的字符是否為‘ 0x0d’,即回車字符,如是回車字符則表示緩沖區(qū)內(nèi)已接收到一完整的命令,此時(shí)調(diào)用 cmd_parse()函數(shù)對命令進(jìn)行分析處理。 cmd_parse()函數(shù)首先把緩沖區(qū)內(nèi)的‘ 0x0d’字符替換為字符串結(jié)束標(biāo)記‘ \0’,以便把命令和參數(shù)作為字符串進(jìn)行處理,在控制臺的實(shí)現(xiàn)時(shí)規(guī)定命令和參數(shù)以及參數(shù)和參數(shù)之間使用一空格字符,即‘ 0x20’來分割。在完成上述操作之后使用字符串比較函數(shù) strcmp 或 strncmp對緩沖區(qū)內(nèi)的命令進(jìn)行檢索,并和已定義的命令字符串進(jìn)行匹配,如緩沖區(qū)內(nèi)的命令為已定義命令則根據(jù)參數(shù)進(jìn)行相應(yīng)的操作,否則向串口回應(yīng)“ Command can not recognize.”以表示不被支持的命令。下面分別說明命令的格式及其處理方法: 一、文件操 作命令類: 文件操作命令類包括 ls、 cd、 cat 和 rm 四個(gè)基本的類 Linux 命令。 ls 命令。 ls 命令的作用是顯示當(dāng)前目錄下的所有文件名和子目錄名,但不支持‘?’和‘ *’通配符。其命令執(zhí)行代碼如下: File_goto_first()。 name=File_get_name()。 printf(name)。 while(File_goto_next()==OK) { name=File_get_name()。 printf(name)。 } printf(\n)。 當(dāng)接收到‘ ls’命令后首先調(diào)用 File_goto_first()函數(shù)使文件索引指向當(dāng)前目錄的第一個(gè)文件,使用 File_get_name()函數(shù)獲取當(dāng)前文件的文件名,并向串口打印文件名,當(dāng)完成一文件名的顯示后調(diào)用 File_goto_next()函數(shù)使當(dāng)前文件指向下一文件,并重復(fù)獲取和顯示文件名的過程直至 File_goto_next()的返回值不為 OK,即當(dāng)前目錄的所有文件都檢索完畢后接收‘ ls’命令的處理過程。 cd 命令。 cd 命令的作用是從當(dāng)前目錄進(jìn)入下一級子目錄獲返回至上一級目錄,此命令帶有一個(gè)參數(shù),如參數(shù)為‘ ..’則返回上一級目錄(根目錄除外)。在代碼的實(shí)現(xiàn)過程中用變量 cd_depth 來記錄目錄的深度,根目錄的深度記為‘ 0’,根 目錄下的子目錄的深度記為‘ 1’,每進(jìn)入下一級子目錄時(shí)深度加‘ 1’。在執(zhí)行 ”cd ..”命令時(shí)根據(jù) cd_depth 的值來決定所調(diào)用的函數(shù),如 cd_depth 的值為‘ 0’或‘ 1’則執(zhí)行 fat_get_root_directory()函數(shù)返回至根目錄,否則調(diào)用函數(shù) fat_goto_parentdir()返回上一級目錄。 當(dāng) cd 命令
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1