基于MP3的汽車報站器
關(guān)鍵詞 報站器 MP3 FATl6文件系統(tǒng) AT89C51SNDlC 閃存 LED點陣顯示
隨著城市的快速發(fā)展,公交線路不時地在進行調(diào)整,站名也隨之進行變化,而且車載廣告也越來越受到商家的重視,因此一款能夠方便地更換語音信息、播放高質(zhì)量語音信息的汽車報站器顯得越來越重要。傳統(tǒng)的汽車報站器都是采用專用語音合成芯片制成的。語音合成芯片受信息容量、語音音質(zhì)的限制,且更換信息需專業(yè)設(shè)備及人士,因而使研制一種新型汽車報站器顯得極為重要。本文設(shè)計的報站器可非常方便地更換播放內(nèi)容,并可播放高品質(zhì)的音樂。
1 報站器功能
該報站器具有如下功能:
◇可作為優(yōu)盤與電腦連接。用戶可自行下載報站器的播放內(nèi)容,也可方便地更改播放內(nèi)容。
◇可通過編輯播放列表文件更改所要播放的文件。
◇具有16個1616的點陣漢字,語音播放時可同時用漢字提示播放內(nèi)容。
◇播放高品質(zhì)的音樂,無報站播放時可作為MP3播放器,提高公交車服務(wù)質(zhì)量。
2 系統(tǒng)工作原理
本系統(tǒng)采用AT89C51SNDlC單片機(內(nèi)部集成MP3解碼器)作為主控CPU及解碼MP3數(shù)據(jù),實現(xiàn)對報站信息播放、點陣字符顯示、文件存儲以及用作優(yōu)盤功能時USB與PC機聯(lián)機的控制。系統(tǒng)利用FATl6在K9F1208上實現(xiàn)文件系統(tǒng),形成一個Windows可識別訪問的64MB尋址區(qū)域。結(jié)合USB控制器,系統(tǒng)可作為優(yōu)盤在Windows下使用,從而實現(xiàn)在Windows下對文件的管理以及數(shù)據(jù)存儲功能。系統(tǒng)利用FATl6文件系統(tǒng)在K9F1208上設(shè)置了一個名為SCHEDULE.LST的列表文件。該列表文件的不同行列取了根目錄下不同的MP3文件名稱,鍵盤的不同按鍵對應(yīng)了列表文件不同行中的MP3文件名稱;當有一按鍵按下時,程序找到列表文件中相應(yīng)行對應(yīng)的MP3文件進行播放。這樣通過程序的設(shè)定,公交車可通過鍵盤實現(xiàn)MP3格式聲音信號的報站以及各種信息的廣播。列表文件在系統(tǒng)對閃存初始化時生成,系統(tǒng)在對閃存進行格式化的同時生成該名為sCHEDULE.LST的列表文件。該列表文件可在Windows下利用記事本打開,編輯所需播放的MP3名稱。播放報站信息的同時通過16個1616的LED點陣顯示相應(yīng)的播放內(nèi)容。系統(tǒng)框圖如圖1所示。
3 部分電路
AT89C51SNDlC是Atmel公司推出的一款集成MP3硬件解碼器及USB revl.1控制器的單片機。它基于8位C51 MCU核(最高時鐘頻率為20 MHz),內(nèi)置2304字節(jié)RAM及64KB Flash程序空間,具有4KB引導(dǎo)閃存,提供超過44個可用的通用I/O口及多種接口。其中非常方便的設(shè)計是4位可中斷的鍵盤口和I2S格式音頻接口。4位可中斷鍵盤口可組成44的鍵盤矩陣,而I2S接口簡化了系統(tǒng)電路。本設(shè)計的DAC采用的是UDAl330。UDAl330是Philips公司推出的一款內(nèi)部集成耳機運算放大器、帶有I2S接口的DAC。采用UDAl330可進一步簡化系統(tǒng)電路,并且提供L3模式及靜態(tài)控制兩種控制方式,最高可提供20位的高品質(zhì)聲音,是一種較為理想的選擇。
系統(tǒng)原理圖如圖2所示。
3.1 語音處理部分
AT89C51SNDlC芯片內(nèi)部的解碼電路支持MEPG I/II聲音格式第三層格式的硬解碼,可處理48 kHz、44.1kHz、32 kHz、24 kHz、22.05kHz和16 kHz采樣頻率的MP3音頻信號,支持31級的低、中、高均衡控制及左右聲道獨立音量控制,音質(zhì)效果方面明顯好于語音合成芯片。
MP3文件存儲于閃存K9F1208中。當進行報站信息播放時,MCU按照系統(tǒng)當前的狀態(tài)及所按的按鍵,按照程序的設(shè)定從列表文件SCHEDULE.IST中查找應(yīng)播放的MP3文件名。在查找、打開該文件后,檢測該文件MP3數(shù)據(jù)的各幀,并查看幀頭所帶的信息是否與該幀一致。如果發(fā)現(xiàn)整個錯誤在容差范圍內(nèi),則認定文件可以播放。MCU對解碼器的控制是通過9個與MP3解碼器相關(guān)的特殊功能寄存器來實現(xiàn)的。只有輸入緩沖區(qū)中已經(jīng)有一完整的幀時,解碼器才能開始播放。解碼器通過MP3解碼狀態(tài)寄存器MP3STA及MP33TAl中的MPREQ、MPFREQ、MPBREQ位來實現(xiàn)對MP3輸入緩沖管理的握手信號。播放時,MCU從MP3文件中取出MP3數(shù)據(jù)幀送入MP3DAT寄存器。當解碼器需要數(shù)據(jù)時,通過握手信號,并引發(fā)相應(yīng)中斷,通知MCU向MP3DAT中輸入數(shù)據(jù)。解碼器還支持CRC校驗、幀同步錯誤校驗等功能,這里不再贅述。
與UDAl330的連接上,AT89C51SND1C的I2S接口引腳分別接到UDAl330對應(yīng)的引腳上。為提高音頻信號音質(zhì),UDAl330采用L3模式,APPSEL接地。該模式下,APPL0作為測試引腳,APPL1作為L3模式的時鐘,APPL2作為L3模式控制,APPL3作為L3模式的數(shù)據(jù)輸入,它們分別與AT89C5lSNDlC的P4.7、P4.4、P4.5、P4.O相連。
報站器不需要錄音功能,因此MIC電路無須接入MP3電路中。MIC電路的音頻信號作為汽車功放的另一路輸入接入,如圖3所示。
3.2 優(yōu)盤功能部分
該功能涉及在K9F1208上FATl6文件系統(tǒng)的實現(xiàn)與管理,以及作為USB從機與主機間的通信。K9F1208是三星公司推出的一款64 MB的Flash芯片,芯片存儲區(qū)域分為4096個塊,每個塊又分32頁,每頁有512 KB+16字節(jié)。Flash的讀/寫有如下特點:必須以頁為單位進行讀寫,寫之前必須先擦除原內(nèi)容;擦除操作必須對Block進行,即一次至少擦除一個Block的內(nèi)容。因此FATl6的實現(xiàn),可將Flash出的一頁定為1個扇區(qū),將其2個塊(64個扇區(qū))定為一個簇。這樣,簇的容量剛好為512字節(jié)64=32KB,滿足FATl6對簇大小的要求。在FATl6分配空間時,其邏輯塊地址(LBA)與Flash實際物理地址的轉(zhuǎn)換可以按以下公式進行:
F1ash的塊地址=邏輯塊地址/0x20
Flash的頁地址=邏輯塊地址%0x20
按照這樣的結(jié)構(gòu)及FATl6的要求,在K9F1208上實現(xiàn)DBR、FAT、DIR和DATA四個區(qū),即可實現(xiàn)優(yōu)盤中的磁盤管理功能。AT89C5lSND1C芯片內(nèi)集成有USB控制器,由于Mass Storage協(xié)議及端點配置、枚舉、通信過程較為復(fù)雜,這里不再贅述,硬件連接請參考圖2。
3.3 顯示電路
如圖4所示,顯示電路由IDT7132、AT89C5l、74LSl54、74HC573以及1個16256的LED點陣屏構(gòu)成。IDT7132是一片容量為32 KB的雙口RAM,由于16256的LED點陣屏顯示緩存共需512字節(jié)的存儲空間,電路使用它與AT89C5lSNDlC接口并存儲漢字顯示信息。16256的LED點陣屏可顯示16個1616的點陣漢字,顯示屏分32頁,每頁又分成16行。本設(shè)計采用兩片4-16譯碼器74LS154組合成一個5-32譯碼器,作為頁譯碼器;采用一片74LSl54作為行譯碼器。每一頁對應(yīng)一個74HC573,用于鎖存該頁某一行顯示的內(nèi)容;32個74HC573可鎖存16256的LED點陣屏一行的內(nèi)容,顯示屏由7407驅(qū)動。AT89C5l從雙口RAM規(guī)定區(qū)域取出顯示內(nèi)容,控制頁譯碼器把數(shù)據(jù)分別送入每一頁的當前行中,然后控制行譯碼器換行,如此循環(huán)形成動態(tài)顯示。顯示電路作為~獨立模塊使用,報站器顯示信息時,只需把欲顯示的漢字字模送入雙口RAM對應(yīng)的存儲區(qū)域。
結(jié)語
隨著MP3播放器硬件成本的降低,MP3報站器的性能及成本優(yōu)勢越來越明顯,有著廣闊的應(yīng)用前景;且MP3報靖器可方便地更換廣播信息,具有較高的使用價值和推廣價值。
評論