多功能语音人机接口模块的设计及实现
扫描二维码
随时随地手机看文章
关键词:人机接口;语音录制;语音播放;液晶显示;RS232接口
1 引言
指纹门禁系统、POS系统(电子收款系统)、ATM(自动取款机)等嵌入式应用系统都需要友好的人机接口。高端应用的人机接口一般都采用触摸屏,但价格高,一般性应用难以接受。触摸屏加键盘模式的应用目前只见于各大银行的ATM机上。所以开发一款简单易用且价格低廉的人机接口产品有着重要意义和广阔的应用前景。笔者采用微控制器控制键盘、液晶显示、语音芯片、标准通信口来实现语音人机接口模块。该语音人机模块具有接口友好、实现方便、成本低廉等特点。它适应于成本敏感,主处理器处理能力强大但控制能力弱的场合。
笔者设计的人机接口模块已应用于某指纹门禁系统中。该系统中,主处理器(DSP数字信号处理器)主要用来处理指纹算法(指纹增强、二值化、细化、特征提取及特征匹配等),如果要求主处理器扩展适当外围电路来实现人机接口,势必会影响整个系统的处理速度,因为指纹处理算法有着很高的时间和空间复杂度,将占用绝大部分处理器资源。采用该智能语音人机接口模块后,微控制器通过RS232接口与主处理器(DSP)交换数据,大大提高了指纹处理程序的运行速度,从而提高了整个系统的性能。
2 人机接口模块总体设计
人机接口模块主要由AT89C51型微控制器、ISD2560型语音录放器件、LCMl602型液晶显示、RS232接口、键盘和控制执行单元组成。人机接口模块组成框图如图l所示。
微控制器负责整个模块的功能控制和与主处理器的通信。键盘用来接收用户输入信号。语音录放单元实现交互提示语言的录制和播放。液晶显示单元辅助用户输入并为用户显示提示信息(包括在模块开发调试过程中的调试信息)。控制执行单元属于可选用单元,针对具体应用进行取舍。指纹门禁系统中需要控制执行单元来弹开电子锁。
3 各组成单元的设计及实现
下面以人机模块的4个主要组成单元来说明。重点论述语音录放电路单元和液晶显示接口单元的设计与实现,并给出调试通过的汇编源代码。
3.1 键盘、控制执行单元
键盘是4x4结构,微控制器从Pl口通过扫描方式接收键盘输入信息。控制执行单元由基本三极管电路驱动继电器,通过微控制器的通用I/O口来控制。键盘、控制执行单元易于实现,在此不再赘述。
3.2 RS232接口单元
采用带有1个UART(通用异步收发器)的微控制器,用UART来实现RS232接口是非常容易的。原因在于,UART的收发协议与RS232接口是一致的,只存在电气特性上的差异。故UART只需进行电平转换即可配置成RS232串口。
利用MAX232来实现电平转换,将UART转换为RS232串口。电路图如图2所示。
3.3 语音录放单元
为了使本系统的人机接口更加友好,采用了用户易于接受的语音交互方式。语音播放单元选用的语音器件是ISD2560。ISD2560是美国ISD(Infor-mation Storage Devices)公司的高性能单片语音录放集成电路,具有音质好、断电信息不丢失及与微处理器接口方便等特点,并且只需很少的外围电路就能组成语音录放基本电路。
介绍ISD2500系列的文献很多,故对其内部结构的介绍从略。下面重点探讨ISD2560在此模块中与微控制器的硬件接口设计及软件实现。
ISD2560主要有3类信号,分别是录放控制信号:P/R、CE、PD及A0-A9;级联及放音状态指示信号:OVF、EOM;模拟语音输入输出信号:MIC、MI-CREF、SP+和SP-。主要信号的功能如表1所列。ISD2560与微控制器的接口电路如图3所示。
ISD2560的录音总长度为60 s,要使语音器件分段录放音,只需给出录音或放音的起始地址。微控制器的P0口(P0口有一4.7 kΩ的上拉电阻)与P3.6、P3.7配合作为语音器件的地址输入。但当P3.6与P3.7均为高电平时(即A8与A9为高电平)。A0-A6分别对应ISD2560的7种工作模式(其中A2对应M2为保留待用模式)。A0-A6作为模式控制输入时,高电平有效。例如当A8、A9和A3均为高电平时,语音器件工作在循环放音模式M3下。微处理器的通用I/O口P2.2、P2.3和P2.4分别接至语音器件的控制输入端P/R、PD和CE,用来控制语音器件的录放及功耗。每段录音结束处,ISD2560会自动插入信息结束标记EOM(End-Of-Message),这样在播放语音至信息段尾时,在EOM引脚上会产生一个持续12.5 ms的低电平脉冲。将EOM接至微控制器的中断输入口INT0,就会在每段信息播放完毕后触发微控制器中断。在中断子程序中,可以重新设定语音器件的地址,然后紧接着播放与上一段信息连贯的词句,从而实现片断语句的连续组合播放。这种硬件连接有助于节省语音时间资源,从而大大节省硬件成本。
控制录音和放音的基本时序如图4所示。编写控制语音器件录放程序时,图4中标示出的几个关键的时间参数是需要重点注意的。由于各控制信号(P/R、PD、A0-A9)都是在使能信号CE的下降沿采样,故采样前这些控制信号都必须稳定建立,采样后必须保持一段时间,以确保正确精准的采样,避免语音器件的误动作。TSETC和TSETA分别是P/R和A0-A9的建立时间;TPUD是器件从省电模式中退出后,能进行正常工作的时间延迟,也可理解为PD的建立时间;THOLD是P/R和A0-A9的保持时间。另外,需要注意的是,录音过程中,CE在MIC输入的过程中始终要保持低电平,一旦CE或PD变为高电平,录音将停止。而在放音过程中,CE只需持续低电平TCEP(典型值为100 ns)时间即可。
理解微控制器与ISD2560时序上的这些特点后,给出微控制器控制语音器件录音和放音的程序代码。限于篇幅,只给出录放音的核心控制代码:
需要注意的是,上述代码实现的功能是整片录音然后整片放音。如果需要分段录音、放音,只需要改动录放音的起始地址(由PO、A8、A9给出)及录放音的等待延迟即可。开始录入语音或录制完毕时,最好有液晶显示或某一特定指示灯亮,用来提示用户录音的开始与结束。而放音时,只需给出待播放语音段的起始地址和足够的等待时间,放音过程遇到信息结束标志后会自动结束。限于篇幅,代码中省略了液晶显示的提示(需要实现液晶显示时,只需给出待显示码及有关控制命令,直接调用下文给出的液晶接口子程序可以很方便实现)。全部代码都已调试通过,加上延迟子程序后可直接拷贝使用。
在特殊应用场合,如需要播放更长的语音信息,可以利用溢出标志信号(OVF)来实现多个语音器件的级联。
3.4 液晶显示功能的设计与实现
从节约成本及提高系统可靠性的角度考虑,为实现液晶显示功能,本设计选用通用LCM(液晶模块)。LCM重量轻、体积小、功耗低、寿命长、工作温度宽,可显示多达192种常用字符(包括所有大小写字母及常用符号),还可自编8种显示字符以满足特殊的显示需求。值得一提的是LCM指令功能强大,可以组合成各种输入、显示、移位方式以满足不同的应用需求。LCM内部集成了液晶控制(一般兼带驱动功能)芯片,向外提供数据传输及控制线接口,与微控制器(或微处理器)接口方便。
图5给出LCM与微控制器的接口,下面介绍各接口线的功能。
LCM由+5 V电压供电,液晶驱动电压Vo由20kΩ电位器分压得到。可通过调节电位器来调节显示屏的对比度。当确认指令控制正确,但屏上看不到显示结果时,不要轻易怀疑LCM已坏。这往往是由于液晶显示的驱动电压不够而引起的,此时,可调节电位器,直至看到清晰的输出。BLl、BL2(有的数据手册上标为A、K)分别是LCM背光灯(此LCM是光反射原理显示的,在光线不足条件下,很难看清其显示,这时必须要有背光才能看到其显示)的阳极与阴极。如果不需要控制背光的亮灭,可直接接至+5 V电源两端,让背光灯在模块上电后一直点亮。
微控制器的PO口复用(上文设计中已作为ISD2560的地址选择信号)作为LCM的数据总线(DB0-DB7),P2.5、P2.6、P2.7分别控制LCM的使能信号E、读写控制信号R/W、寄存器选择信号RS。数据总线是传送指令及显示数据的通道;使能信号E为下跳变有效;读写控制信号R/W用来控制数据读写,高电平时为从LEM的内部寄存器中读取数据,低电平时,向LEM的内部寄存器中写入数据。RS是寄存器选择控制信号,其高、低电平分别选择数据寄存器、指令寄存器。
要编写微控制器访问控制LCM的程序代码,必须彻底理解LCM的访问控制时序,如图6所示。
图6的简要说明:RS在访问期间,具体的电平取决于所访问的寄存器类型。R/W(Read)、R/W(Write)分别与其他控制信号及数据信号构成完整的LCM读、写控制时序。AT89C51执行一条单周期指令的时间为1μs(选用12 MHz晶体时)。TCS、TCH、TWEH、TDH、TCE都是ns(纳秒)级的量,因而只需顺序给出指令即可满足时序要求。需要指出是TDS在读写操作时的意义是不同的。在读操作时,TDS表示数据输出的延迟(最大值100 ns);在写操作时,表示待写入数据的最小建立时间(40 ns)。程序中的NOP指令是为了保证最低时序要求有较充分的裕度,以确保高度的可靠性。
上述代码全部通过调试,运行正确稳定,可直接拷贝使用。
4 结束语
该人机接口模块所有功能均已调试通过,工作稳定可靠。
模块提供有+3.3 V电压及备用I/0接口引出线,为将来扩展之用。如可采用低电压版本的微控制器(AT89LV51、W78LE51等),这种微控制器的引脚电平与主处理器的引脚电平兼容,硬件上可以直接连接。闲置的I/0线可扩展I2C接口的E2PROM,用来存储需长时间保存的数据。
本模块可扩展,裁剪性强,针对特定的应用场合增加或删除某些单元电路即可实现新系统的人机接口。