1 自助语音讲解系统的工作原理
本自助语音讲解系统由2部分构成:RFID电子标签和手持终端。手持终端主要包括AT89S8252单片机、非接触式IC卡读写及射频模块电路、科大讯飞XF-S4240语音合成模块、电源电路等,其原理图主要框图如图l所示。当手持终端检测到RFID电子标签,产生中断,读取电子标签信息。即可识别出展品代号,调用存储在单片机中的本展品的语音讲解文本,通过语音合成模块,由语音放大电路输出,完成讲解任务。
2 系统硬件设计
2.1 非接触式射频读卡器
由于非接触式IC卡与读卡设备无接触,它是通过射频电磁感应从读写设备获取能量和交换数据,读写操作只需要将卡片放在读写器附近一定的距离之内就能实现数据交换和身份识别等,使用方便快捷、不易损坏,广泛应用于存取频繁、可靠性高的场合。
本系统采用北京完美公司的WM-01TA模块来实现。该模块配套有环行天线,工作频率为125 kHz;具有异步串行通讯UART接口;默认串口波特率为9 600 b/s,无校验,8位数据位,1位停止位;可读取EM只读感应体,读卡距离为60~90 mm,读卡速度大于0.5s,并且采用标准IC引脚DIP40外型,特别方便嵌入到目标线路板中。该射频模块共有7个引脚,引脚说明如表l所示。该器件价格低廉,完全满足该项目设计需求。
当卡片进入感应区时,模块向串口发送一次卡号。如果卡片未离开感应区,模块则不再向串口送卡号,如果卡片离开感应区,再进入感应区,则该模块需再送一次卡号。
TTL232数据传输主要是传送卡号,其传送数据格式为:AAH FFH DO D1 D2 D3 D4校验和,共8个字节,其中AAH和FFH为命令码:DO~D4为40位卡号,其中低地址为高字节Motorola结构:检验和为地址0~5位,共7字节“XOR”异或值。例如:某40位卡号为01021DF6FA(HEX),对应发送格式为:AAH FFH 01H 02H 1DH F6H FAH 47H,其卡号为5个字节:01H 02H 1DH F6H FAH。
WM-01TA通过UART接口与单片机连接,如图2所示。
2.2 语音模块XF-S4240
XF-S4240中文语音合成模块是中科大讯飞信息科技有限公司面向高端应用推出的嵌入式中文语音合成模块。可支持任意的中文文本、英文字母的语音合成。该模块通过异步串口(UART)、SPI接口及I2C总线3种方式接收待合成的文本,直接合成为语音输出。该模块支持GB2312、GBK、BIG5、UNICODE等4种内码格式的文本,具有智能的文本分析处理算法,并支持多种控制命令,包括:合成、停止、暂停合成、继续合成等。XF-S4240语音模块封装成16端子,各端子功能如表2所示。
语音模块的命令格式由帧头、数据长度区及数据区3部分组成,各部分的定义如表3所示。语音模块的命令如表4所示。
如要合成“欢迎您参观莫高窟”,只需对模块发送格式为GB2312的文本代码:
其中0xFD为帧头,0x00为数据区长度的高字节,Ox14为数据区长度的低字节(注意:长度字节为合成代码字节长+2),0x01为语音合成命令,0x00为GB2312的命令码。0xBB、0xB6 为“欢”的GB2312码,0xD3、0xAD为“迎”的GB2312码……0xAD、0xA3为“。”的GB2312码。
本设计中,AT89S8252与XF-S4240通过SPI通讯来实现,电路连接见图2。语音信号由LM386放大输出。由于该模块采用3.3 V供电,需用AMSlll7将5 V转换为3.3 V电源。
2.3 AT89S8252单片机
本系统设计中,射频读卡模块具有UART接口,语音合成模块具有UART和SPI接口。由于普通51单片机只有一个串口,因此存在串口的扩展问题。AT89C8252单片机是ATMEL公司的8位微处理器,具有SPI接口是AT89S8252不同于其他单片机的主要特点,它与51单片机完全兼容,但
在P1口(其中的P1.4~P1.7)上扩展了SPI接口。可以很方便地与语音模块通信,因此,在本系统选择AT89S8252,可以大大简化系统的软硬件设计。
AT89S8252共有3个SPI寄存器,分别是控制寄存器SPCR、状态寄存器SPSR和数据寄存器SPDR。
1)控制寄存器SPCR的内容格式为:
SPIE:SPI中断使能位。为0时,禁止SPI中断:为1时,若EA也为1,则使能SPI中断;
SPE:SPI使能位。为0时,禁止SPI通道;为1时,使能SPI中断,此时,P1.4、P1.5、P1.6和P1.7用作*****、MOSI、MISO和SCK。
DORO:数据顺序设置位。为O时,数据传输低位在前;为1时,数据传输高位在前。
MSTR:主从模式设置位。为0时,选择从模式;为1时,选择主模式。
CPOL:时钟极性设置位。为0时,主器件时钟SCK在不传输时为低电平;为1时,SCK在空闲时为高电平。
CPHA:时钟相位设置位。此位和CPOL一起控制主从器件之间的时钟和数据关系。
SPRl、SPR0:SPI时钟频率设置位。这两位主要用于主模式器件的SCK频率设置,对于从模式器件没有作用。为00时,频率为fOSC/4;为01时,频率为fOSC/16;为10时,频率为fOSC/64;为11时,频率为fOSC/128。这里fOSC为晶振频率。
在本设计中,初始化要求SPIE=0,SPE=l,DORD=O,MSTR=1,CPOL=CPHA=l,SPRl=0,SPR0=1,通过“SPCR=0x5d”语句就可以对SPI接口初始化。
2)状态寄存器SPSR的内容格式为:
SPIF:SPI中断标志位。当一次串行传输完成后,此位被置1,如果SPIE和ES为1,则会产生中断。读SPI状态寄存器SPSR将清除此位。
WCOL:写冲突标志位。在数据传输过程中写数据寄存器SPDR时,此位会置1。在数据传输中,读SPDR寄存器值会发生错误,写SPDR寄存器也无效。读SPDR寄存器将清除此位。
3)数据寄存器SPDR为8位数据位,其内容格式为:
因此,对SPI接口操作简单。SPI接口写入数据的子程序为:
3 系统软件流程
软件系统由主程序、读卡子程序、语音处理程序组成。其中,主程序完成系统的初始化(包括UART初始化和SPI初始化),如果有射频卡接近天线,则读卡模块通过串口中断发送TAG信息给单片机。单片机将此标签信息与存储的卡号信息比对,从而调用相应的语音文本信息送到XF -S4240模块,播放相应的语音。
由于采用了SPI接口,单片机与语音模块的通信也格外简单,其相关代码如下:
其流程图如图3~图5所示。
4 结束语
使用AT89S8252单片机及WM-01TA读卡模块和XF-S4240语音模块,配合天线模块、电源模块等,实现了自助语音讲解系统。该系统在展览馆、旅游景点可以提供个性化的导游服务,有较高的实用价值。
上一篇:基于TDK5110与TDA5220的无线温度采集系统
下一篇:基于MC1321x系列设计的2.4GHz ZigBee开发方