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