随着城市的快速发展,公交线路不时地在进行调整,站名也随之进行变化,而且车载广告也越来越受到商家的重视,因此一款能够方便地更换语音信息、播放高质量语音信息的汽车报站器显得越来越重要。传统的汽车报站器都是采用专用语音合成芯片制成的。语音合成芯片受信息容量、语音音质的限制,且更换信息需专业设备及人士,因而使研制一种新型汽车报站器显得极为重要。本文设计的报站器可非常方便地更换播放内容,并可播放高品质的音乐。
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报靖器可方便地更换广播信息,具有较高的使用价值和推广价值。