语音报警系统广泛应用于矿井、粮仓温度测量及控制、温室温度采集和控制、火灾语音报警系统等。本系统功能是进行信号检测和语音报警,包括运算放大器、A/D转换模块、语音录放模块、输出控制模块、显示模块和继电器驱动以及控制电路等部分。单片机主要负责数据采集、显示和判断,以及对ISDl420语音芯片控制,系统硬件框图,如图1所示。
1 基于ISDl420的语音报警模块
ISDl420为ISD公司出品的优质单片语音录放电路,单片录放时间8~20 s音质较好。芯片采用CMOS技术,内含振荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。在录放操作结束后,芯片自动进入低功耗节电模式、功耗仅0.5μW。芯片采用多电平直接模拟量存储专利技术,每个采样直接存储在片内EEPROM单元中,因能够非常真实、自然地再现语音、音乐、音调各效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。采样频率为5.3 kHz,6.4 kHz和8.0 kHz,对音质仅有轻微影响。片内信息可保存100年(无需后备电源),EEPROM单片可反复录音10万次。
1.1 ISDl420的工作原理
ISDl420是采用模拟存取技术集成的可反复录放的20 s语音芯片,掉电语音不丢失,最大可分为160段,最小每段语音长度为125 ms,每段语音都可由地址线控制输出,每125 ms为一个地址,由A0~A7这8根地址线控制,地址语音控制表,如表1所示。用户录制的语音每段结束后芯片自动设有段结束标志(EOM),芯片录满后设有溢出标志(OVF)。用单片机控制电路按某一段的起始地址进行放音操作,遇到段结束标志(EOM)即自动停止放音,单片机收到段结束标志(EOM)就开始触发下一段语音的起始地址,如此控制,即可以将很多不同段的语音组合成一句话放音出来,实现语音的自动组合。
用户可以通过专用ISDl420语音编程拷贝机将需要的语音分段编程、连续录制到芯片中,每段语音长度不限,制成语音源片后,将源片的录音端封住不让其再做录音操作,再由单片机电路控制放音。首先,单片机将ISDl420语音芯片完整搜索一遍,自动找出每一段的起始地址,按分段顺序编号存入外置的串行存储器中;然后用户通过单片机串口发出指令,单片机即将这些段的编号、地址调出,依次向语音芯片发出首地址、放音该段、该段结束,单片机收到EOM标志后单片机发出下一段语音的首地址、放音该段,如此工作,直到要求的一句话合成完毕。
这种控制方式有较强的通用性和方便性,它不需要事先规定每段语音的时间长度和总段数,甚至不需要知道每段语音在ISDl420芯片上的具体地址,只要用户记住录入语音的段顺序即可控制各段语音的自由组合。
ISDl420系列内置了若了干操作模式,可用最少的外围器件实现最多的功能。操作模式也由地址端控制,当A7和A6都为l时,其它地址端置高就选择某个(或某几个)模式。因为操作模式和直接寻址互相排斥。操作模式可由微控制器或硬件实现。ISDl420操作模式简表如表2所示。使用操作模式有两点注意:(1)所有操作都从O地址,即存储空间的起始端开始。后续操作根据所选用的模式可从其它的地址开始。此外,A4模式中,当电路由录转为放时地址计数器复位为0,而由放转为录则不复位;(2)当控制信号(PLAYL,PLAYE或REC)变低,同时A6和A7为高时,执行操作模式。这种操作模式一直有效,除非控制信号再次由高变低,芯片重新锁存当前的地址/模式端电平,然后执行相应操作。
1.2 ISDl420语音报警电路的设计
为了使系统能够对语音进行分段控制,设计一个ISDl420与单片机的接口电路,ISDl420的地址段A0~A7由单片机的IO口控制。具体的电路,如图2所示。录制信息时:将REC电平变低,从内部存储器空间开始录制信息。如果REC保持低电平,录音操作一直持续到存储器空间录满,这时录音结束。如果REC变为高电平,电路将自动进入掉电模式。边缘启动放音时:将PLAYE变低,从存储器开始或选定的位置开始放音。PLAYE的上升沿对操作没有影响。如果存储器内部全部录满信息,则可以播放内部全部信息。如果到达结束标志EOM,电路将停止放音并自动进入掉电模式。一个新的PLAYE下降沿将触发另一个从起始地址的录音。电平触发放音时:将PLAYL变低,将从存储器开始或选定的位置开始放音。如果存储器内部全部录满信息,则可以播放内部全部信息。如果到达结束标志EOM,电路将停止放音并自动进入掉电模式。一个新的PLAYL下降沿将触发另一个从起始地址的放音。录音(中断放音)时:REC引起的录音操作优先于其他操作。任何时间REC信号的变低将引起一次新的录音操作,地址从起始地址或指定的地址开始,不论当前是否进行其他操作。RECLED操作时:在录音操作时,RECLED将输出低电平有效信号,可以驱动一个LED,表明现在正在录音操作。如果整个存储器空间录满,或REC变为高电平结束录音,则RECLED将变为高电平。另外,在放音过程中,如果遇到一个EOF标志,RE-CLED总是输出一个低电平脉冲。
2 ADC0809的数据采集电路的设计
A/D转换接口是数据采集系统前向通道中的一个重要环节。数据采集和转换系统从一个或几个信号源中采集模拟信号,并将这些信号通过A/D转换接口转换成数字信号,以便输入单片机,为进一步的数据处理做好准备。为满足系统要求,简化数据采集电路,本设计采用ADC0-809模数转换器对模拟信号进行转换。
ADC0809芯片的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。START上升沿将逐次逼近寄存器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器。这个信号可用作中断申请。当OE输入高电平时,打开三态输出锁存器,转换结果的数字量输出到数据总线上。与51单片机的接口电路,如图3所示,采用中断方式,转换完成的状态信号:EOC引脚经过一个反相器接在单片机的引脚上,转换结束后,EOC=1,经过反相后为0,可以向单片机发出中断请求。
3 数码显示模块
LED动态显示电路占用单片机的I/O口资源很少,把所有LED显示器的8个笔画段a~g和dp的各段同名端互相连接起来,并把它接到输出口上。为了防止各显示器显示同样的数字,各个显示器应该轮流显示,在某一刻只能是其中的一个数码管点亮。因此每个数码管的COM端还要受到另一信号的控制,可以接到另一个I/O输出口上,某一个时刻只让其中一个COM出现低电平点亮共阴数码管。这样,对一组LED数码管显示器需要两组信号控制:段码控制显示的字形;位码选择第几个显示器工作。在这两组信号的作用下,可以使各显示器显示各自的字符,当然这些字符不是同时显示的,但由于人眼存在视觉暂留,加上发光二极管的余辉效应,只要扫描的速度足够快,每位显示的间隔时间足够短,就可以给人同时显示的感觉,而不会有闪烁感。系统中,由74LSl64串-并转换扩展I/O,DsDat连接AT89C51的RXD,DsClk连接AT89C5l的TXD,GW,SW,BW和QW分别接AT89C5l的P1.0~P1.3,采用LED动态显示,如图4所示。
4 单片机控制软件的设计
4.1 ADC0809数据采集程序
为了提高系统的稳定性和单片机的工作效率,在设计数据采集电路时,采用了定时采集加中断的方式,这样既可以任意设定采集的间隔时间,又不妨碍单片机执行其他程序。程序的详细流程图,如图5所示。
4.2 ISDl420语音芯片控制程序
为了充分利用ISDl420的语音分段程序,使语音资源的利用率提高。设计中将语音程序独立编写、调试,在系统需要语音报警时,只需通过P0口给出不同的放音地址,调用语音播放程序就能实现智能语音报警。这部分的程序比较简单,主要是逻辑配合与精确延时程序的编写。在录制声音前,要计算好每段语音的时间才能确定需要调用的延时程序。图6是该部分程序的流程图。
4.3键盘和显示程序
系统的键盘采用了独立式键盘并采用查询方式,根据独立式键盘的特点,程序必须不停地对键盘接口进行查询。LED显示采用动态显示,并采用74LSl64作为I/O扩展以节约单片机的I/O口资源。键盘程序和动态显示程序的流程,如图7所示。
5 结束语
此多路语音报警系统经过电路测试、软件调试和系统组装,可以实现多路数据采集和语音报警,稳定可靠。可广泛应用于矿井、粮仓、石油工程、电站、隧道和大坝等领域的监测系统中。