ISD4004及STC89C51语音播报思路.docx
- 文档编号:22795832
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:25
- 大小:2.46MB
ISD4004及STC89C51语音播报思路.docx
《ISD4004及STC89C51语音播报思路.docx》由会员分享,可在线阅读,更多相关《ISD4004及STC89C51语音播报思路.docx(25页珍藏版)》请在冰豆网上搜索。
ISD4004及STC89C51语音播报思路
基于ISD4004单片机的火车站自动语音播报系统
笔者成功应用ISD4004和AT89C51单片机设计了火车站信号自动语音播报系统,通过对火车站铁路线的上行和下行控制、车辆调度、系统主副电源的启用等多路信号进行检测并采集,根据安全隐患的防范要求,由单片机控制查询安全警示语音信息并播报,实现安全操作提示及报警。
系统在火车站信号室控制台上安装使用,运行稳定,信号播报准确,取得了很好的效果。
1硬件电路设计
系统硬件电路设计原理框图见图1,由微控制器STC89C51、ISD4004语音电路、音频功率放大电路、可编程并行接口8255、光电隔离、电平转换、信号输入接口、系统时钟、复位及键盘等单元电路组成。
1.1ISD4004的特性
ISD4004系列语音存储芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列,内置微控制器串行通信接口。
芯片所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送人。
外部的音源信号在芯片内采用多电平直接模拟量存储技术,信息可进行多段处理,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。
存于片内闪烁存贮器中的信息,可在断电情况下保存100年。
芯片工作电压为3V,工作电流为25~30mA,维持电流1μA,不耗电,单片录放时间8~16min,可反复录音10万次。
1.2ISD4004的引脚及封装形式
ISD4004采用28脚的SOIC封装,其引脚排列如图2所示。
1.3ISD4004与AT89C51单片机的接口
ISD4004工作于SPI串行接口,按照同步串行数据传输的SPI协议,所有串行数据传输开始于单片机主控器发送给ISD4004的片选信号SS下降沿。
SS在传输期间必须保持为低电平,在两条指令之间则保持为高电平。
来自串行数据输入端MOSI引脚的数据在串行同步时钟上升沿被锁存,对ISD4004串行数据输出端MISO引脚的数据在SCLK的下降沿被移出。
ISD4004的任何一个录音和放音操作(含快进),都是按分段地址进行的,每段包含若干行,每行相当于存储单元,在行地址时钟信号RAC的控制下进行录放信息的存储管理。
RAC信号周期为200ms,高电平占空比为3/4。
当录音和放音操作到内部存储单元地址的末尾时,会产生一个OVF或EOM结束标志信号,如果遇到EOM或OVF,则产生一个低电平有效的INT中断信号,该中断状态在下一个SPI周期开始时被清除。
ISD4004与AT89C51单片机连接如图3所示。
ISD4004的片选信号SS引脚与AT89C51单片机的I/O口P1.0连接,由程序指令产生有效的低电平信号。
串行数据输入MOSI引脚和串行数据输出MISO引脚分别与P1.1和P1.3连接,串行收发的数据信息在程序指令的控制下,由片内移位寄存器锁存,其同步时钟信号SCLK由单片机P1.2控制。
行地址时钟RAC和中断请求信号INT分别与P3.2(INT1)和P3.3(INTO)连接。
1.4音频输出
系统信号所对应的提示语音,如“上行列车开过来了,区间占用”、“请求上行发车,信号开放”等信息,已通过专用设备按地址分段固化到ISD4004内部E2PROM的存储单元。
在程序控制下,相应的语音信号由ISD4004的13脚(AUOUT)输出,经耦合电容C4和音量控制电位器RW,送入低噪声功率放大集成电路进行放大,推动扬声器发声。
为使输出语音噪声达到最小,系统的模拟地和数字地分开走线,尽可能在靠近供电端处相连,并且分别引到ISD4004芯片的VSSA和VSSD管脚上,退耦电容也应尽量靠近芯片。
1.5I/O口的扩展
系统36路信号要经微控制器处理,至少要36个I/O口线才能满足需求,靠AT89C51剩余的I/O口显然是不够的,必须进行I/O口的扩展。
系统采用可编程序并行输入输出接口芯片8255扩展不足的I/O口,具体硬件连接见图4。
8255是微处理器扩展系统所用的标准外围并行接口电路,采用NMOS工艺制造,40脚双列直插式DIP封装形式。
8255与外部设备交换信息通过A口、B口、c口的24条I/O线来完成的,每个口都是8位。
其中C口又分为上C口(PC7~PC4高4位)和下C口(PC3~PC0低4位)。
可通过编程的方法来规定端口的工作方式为输入,在主控程序初始化时完成。
8255片选信号由P1.4完成,地址总线A0和A1通过地址锁存器74LS373锁定。
1.6信号变换
系统信号取自车站信号室控制继电器的触点,主要是交流24V的开关量信号,必须将其转换为单片机系统可以匹配的TTL电平,也就是将交流24V变换为直流5V,其信号电平变换电路如图5所示。
交流信号由二极管D32整流,电容C32滤波,经限流电阻R32输入光电耦合器4N25,经内部发光管和光敏接收管有效实现光电转换,同时将外部信号的电气网络与单片机控制系统隔离开来,提高系统的可靠性和抗干扰能力。
变换后输出的信号是低电平,为保持输入信号和输出信号电平同步,后级加反相器,输出标准的TTL5V信号,送往并行接口8255。
2软件总体设计
系统软件设计直接影响到系统的整体性能。
软件主要功能是通过对铁路信号进行实时查询,准确判断信号是否有效,并可靠查找信号所对应的语音存储地址,取出信息进行实时播报。
软件程序包括主控程序、信号查询程序、语音播报程序、数据传送程序、ISD4004的上电和掉电程序。
程序中多次使用延时子程序,由于结构简单、通用性强、本文不再阐述。
2.1主控程序
主控程序流程见图6,系统上电时要进行初始化,完成对I/O口、信号单元及信号标志位的清零和ISD4004及8255的初始化设置,并完成在系统上电时自检和产品信息广告的的语音播报。
然后进入信号的查询和语音播报的循环控制流程。
为了防止系统误报、漏报或连报,在程序设计时充分考虑这方面的因素,如采用信号延时防抖判定,信号电平的高低交错标志判断及信号单元地址查表等方法,提高系统的可靠性。
2.2信号查询子程序
信号查询子程序的流程见图7,系统30多路信号分别占用AT89C51单片机的部分I/O线和可编程接口8255的A、B、C口24路输入线。
程序对多路信号进行逐一查询,并对到来的有效信号进行分单元标记储存,以便将参数传递给主控程序。
2.3语音播报子程序
ISD4004芯片所有操作必须由微控制器控制的操作命令,通过串行通信协议SPI接口送入。
SPI控制寄存器控制芯片的录放音、信息检索、上电、掉电、开始和停止等功能,由软件编程指令改变SPI控制寄存器的控制位来实现,SPI控制寄存器的控制位如图8所示,指令格式是:
8位控制码+16位地址码。
ISD的任何操作在运行位C4置1时开始,置0时结束,如果遇到EOM或OVF,则产生一个中断,使用“读”指令使中断状态位移出ISD的MISO引脚时,控制及地址数据也同步从MOSI端移入。
因此要注意移入的数据是否与器件当前进行的操作兼容。
当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。
语音播报子程序,要严格按照以上ISD4004的要求编程,其流程见图9。
系统确认当前播报信号有效时,通过查找语音存放地址,得到16位的播报地址。
首先要调用上电子程序,送上电指令,然后等待约25μs的延迟,再传送16位放音起始地址参数和8位从指定地址开始放音的指令,分别调用数据发送子程序,完成信息的播报。
2.4数据发送子程序
数据发送子程序流程图见图1O,主要将16位放音地址和8位功能控制指令数据按照SPI协议标准,在串行时钟同步下传送到ISD4004的MOSI。
2.5上电、掉电子程序
ISD4004可实现电源操作模式的管理,通过指令编程完成上电和掉电的操作,其程序流程图见图11和图12。
芯片掉电后进入低功耗状态,耗电电流1μA左右,只有在上电操作完成后芯片才能正常工作。
3结语
阐述了基于ISD4004芯片设计的单片机控制语音播报系统在火车站信号控制室实际应用的一个事例,主要介绍了系统软、硬件的设计方法,其目的就在于提供一种多路工业过程控制在线语音提示或报警的微机控制模块,可以稍加改造,方便地与常规工业控制系统或设备配合使用,甚至还可以方便地与复杂系统和DCS系统配合使用,完成各种工业控制和监测系统的工作状态报警和操作提示。
ISD4004语音芯片C51驱动程序源代码
/*spiisd4004.h*/
#include"reg51.h"
#include"intrins.h"
sbit_cs=p0^0;
sbit_sclk=p0^3;
sbit_mosi=p0^1;
sbit_miso=p0^2;
sbit_rac=p0^4;
sbit_int=p0^5;
voiddelay(unsignedinti)//延时程序
{
while(i--);
}
voidstopmode()//停止
{
unsignedcharm,i,j;
_cs=1;
_sclk=0;
_cs=0;
m=0x30;
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
_cs=1;
}
voidpowerdown()//下电
{
unsignedcharm,i,j;
_cs=1;
_sclk=0;
_cs=0;
m=0x10;
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
_cs=1;
}
voidpowerup()上电
{
unsignedcharm,i,j;
_cs=1;
_sclk=0;
_cs=0;
m=0x20;
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
_cs=1;
}
voidrecord4004(unsignedintaddress)录音address--录音地址0---2400
{
unsignedchari,m,j;
unsignedintdatasoute=0;
powerup();
delay(5118);//上电延时
powerup();
delay(5118);//上电延时
delay(5118);//上电延时
_cs=1;
_sclk=0;
m=0xa0;
_cs=0;
for(i=0;i<16;i++)
{
address=_iror_(address,1);
datasoute=address<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
_cs=1;
_sclk=0;
m=0xb0;
_cs=0;
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_mosi=cy;
_sclk=0;
_sclk=1;
}
_cs=1;
p0=0xff;
datasoute=0;
while(_int==1)//存储地址换行标志
{
if(_rac){delay(20000);datasoute++;}//记录本次录音所占的行数(也就是本次录音有多大)
//
//在这里应该加上自己的程序,就是录音退出程序
//
}
}//whileend;
voidaudioout(unsignedintaddress)//放音程序
{
unsignedchari,m,j;
unsignedintdatasoute;
powerup();
_cs=1;
_sclk=0;
_cs=0;
m=0xe0;
for(i=0;i<16;i++)
{
address=_iror_(address,1);
datasoute=address<<1;
_sclk=0;
_mosi=cy;
_sclk=1;
}
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_sclk=0;
_mosi=cy;
_sclk=1;
}
_cs=1;
_sclk=0;
m=0xf0;
_cs=0;
for(i=0;i<8;i++)
{
m=_cror_(m,1);
j=m<<1;
_sclk=0;
_mosi=cy;
_sclk=1;
}
_cs=1;
p0=0xff;
while(_int==1)
{
}//whileend;
}
main()
{
record4004(0);
audioout(0);
while
(1);
}
ISD4004的家庭语音报警系统设计
ISD4004的家庭语音报警系统设计
现代家庭的防盗方式主要以安装防盗门、防盗锁为主,但是这类设备主要是以增加盗贼入室的难度来达到防盗目的的。
这种单纯的机械装置,在较长时间无人在场的情况下,防盗效果往往不尽如人意,所以人们需要有新的防盗系统作为补充。
市场上的不少门禁系统虽说性能优良,保险系数较高,但是由于其高昂的价格让一般的家庭感到难以接受,不少系统是在门窗被破坏,非法人员入侵后才报警,且安装这些防盗设备会对原有的门窗有较大破坏性。
在有警情发生时这些报警系统会通知主人或报警中心,但是他们的响应都需要一定的时间,很有可能在他们的响应时间内不法分子已经完成了偷盗行为。
所以,安防的最好方法是在不法分子有入侵企图时就通过给出语音警告,增加其心理压力,使其主动离开。
在这种方法失效的情况下,可以记录入侵时间,进行现场录音,然后通过电话或其他方式通知主人或报警中心。
本设计正是基于这样一种思想,同时在语音报警的基础上还增加了个性化、方便实用的语音服务功能。
该设计制作成本低,安装方便,对门窗几乎没有破坏性,防盗可靠性好,播放的语音清晰,适于一般家庭使用。
1系统工作原理
本系统主要由报警子系统和语音服务子系统两大部分组成,如图1所示。
其中报警子系统采用热释电红外传感器作为报警信号采集装置,AT89S51单片机作为主控制器,语音芯片ISD4004作为报警和语音服务执行装置,键盘和数码管作为人机接口。
系统工作时,热释电红外传感器对警戒区的红外信号不断地进行采集,当在警戒范围内出现人体时,信号处理电路向单片机输出高电平。
由于不法分子一般在门外待的时间相对较长,因此使用者结合自己家庭所处环境及人流情况,通过键盘设置最佳的报警响应时间,以便对他们进行区分。
设置完毕后,单片机将根据报警响应时间对经信号处理电路处理过的数字信号进行采集处理,判断是否启动报警。
若启动报警,则通过控制已存有报警内容的语音芯片对不法分子进行语音警告,然后重复播放若干次语音报警内容以警醒主人或周围的人,接着对现场进行录音,记录报警时间;同时在数码管上显示报警次数,并可以通过相应按键查询报警时间,便于破案。
在语音服务方面,可以个性化地通过键盘预先设置不同的模式,如外出模式、暂时离开模式、在家模式、免打扰模式等。
当有客来访按下门铃时,不同的模式下自动播放不同的语音内容,通过语音信息与客人进行友好的交流,既方便了主人又方便了客人。
2系统硬件设计
系统硬件部分主要由信号采集与处理模块、语音录放模块和键盘显示模块3部分组成。
控制部分选用AT89S51单片机作为主控制器。
2.1信号采集与处理模块设计
硬件电路如图2所示。
热释电红外传感器(PIR)RE200B对人体信号进行检测,红外传感信号专用处理芯片BISS0001对所采集信号进行初步处理。
RE200B的D、G、S端分别为电源端、地端和目标输出电压端。
输出信号VO接单片机,供其读取。
采用热释电传感器的优势是:
成本低,不需要用红外线或电磁波等发射源,隐蔽性好,可流动安装,灵敏度高、控制范围大。
热释电红外传感器利用热释电效应,能以非接触形式检测出人体辐射的红外线,并将其转变为电压信号;同时,它还能鉴别出运动的生物与其他非生物。
实际使用中,热释电传感器前面必须安装菲涅尔透镜。
菲涅尔透镜的作用是将人体辐射的红外线聚焦到热释电红外探测元上,同时也产生交替变化的红外辐射高灵敏区和盲区,以适应热释电红外探测元要求信号不断变化的特性,这样可大大提高接收灵敏度,增加检测距离及范围。
实验证明,热释电红外传感器若不加菲涅尔透镜,则其检测距离仅为2m左右(检测人体走过);而配上菲涅尔透镜后,其检测距离可增加到10m以上,甚至可达20m以上。
由于PIR信号变化缓慢、幅值小,针对该特点,专用信号处理器一般分为3步处理:
滤波放大、窗口比较、噪声抑制及数字信号处理。
BISS0001就是由运算放大器、电压比较器、状态控制器、延迟时间定时器以及封锁时间定时器等构成的数模混合专用集成电路。
它采用CMOS工艺、数模混合,具有独立的高输入阻抗运算放大器,内部的双向鉴幅器可有效抑制干扰。
它有两种工作方式供选择,通过将引脚A置1或0可设置为可重复触发方式和不可重复触发方式。
本系统选择可重复触发方式。
在将传感信号进行预处理后,通过双向鉴幅器可检测出有效触发信号Vs。
由于选择的是可重复触发方式,Vs可重复触发VO为有效状态,并可促使VO在延时周期Tx内一直保持有效状态。
延时周期的大小可通过R1和C1调节。
在Tx时间内,只要Vs发生上跳变,VO就会从Vs上跳变时刻起继续延长一个Tx周期;若Vs保持为“1”状态,则VO一直保持有效状态;若Vs保持为“O”状态,则在Tx周期结束后VO恢复为无效状态,并且在封锁时间Ti时间内,任何Vs的变化都不能触发VO为有效状态。
2.2语音录放模块设计
语音录放模块的硬件电路如图3所示。
MK1为麦克风,用于录入语音,可完成普通的现场录音。
在放音电路中,输出端选用低电压通用集成功率放大器LM386M-1的典型应用电路作为扬声器LS1的驱动电路。
该典型电路中,LM386M-1的1脚和8脚间外接10μF的旁路电容,可以使电路的放大倍数提高200倍。
ISD4004的工作电压是3V,可以通过变压电路将5V电压转变为3V,转换
电路如图4所示。
2.2.1ISD4004语音芯片
该模块的核心是ISD4004语音芯片,其引脚如图5所示。
ISD4004语音芯片采用CMOS技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储阵列等,因此只需很少的外围器件就可构成一个完整的声音录放系统。
ISD4004语音芯片带SPI接口,录放音时间长,音质好,不需A/D转换,可重复记录10万次,断电后仍可以保存数据100年。
语音内容分段存储,程序可以选定任一段作为录音、放音的起始地址。
ISD4004主要引脚说明如下:
①片选CS,此端为低电平时选中芯片。
②VCCA、VCCD,供电电源3V。
③OUT,音频输出端,可驱动5Ω负载。
④IN+、IN-,录音信号同相、反相输入端。
⑤MOSI,串行输入端。
主控器件应在串行时钟上升沿前半个周期将数据放到此端,供ISD4004输入用。
⑥SCLK,时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据传输。
⑦AMCAP,自动静噪音控制端。
⑧VSSA、VSSD,地线。
2.2.2SPI接口
SPI接口是Motorola公司推出的同步串行扩展接口。
该接口共使用4条信号线:
主机输出片选线CS,串行时钟线SCLK,主机输出/从机输入的信号线MOSI以及主机输入/从机输出的信号线MISO。
SPI接口是串行扩展的全双工同步通信口,主机方式传送数据的最高速率达1.05Mbps。
由于AT89S51没有SPI接口,所以采用模拟SPI接口同ISD4004进行数据传输;同时因为无主机输人,所以不需要MISO线。
将片选CS、主机输出/从机输入的信号线MOSI、串行时钟SCLK分别接在单片机P0.0、P0.1、P.2口。
ISD4004通过SPI接口传输数据的步骤如下:
①串行数据传输开始于CS下降沿,在数据传输期间,CS必须保持为低电平;
②从控制器发出来并出现在引脚MOSI上的数据,在SCLK上升沿被锁存入ISD4004,在SCLK下降沿,将ISD4004中送出的数据放到引脚MISO,供控制器读取;
③ISD4004从控制器输入指令和地址后才能开始录/放操作;
④指令格式是8位控制码加16位地址码,或8位控制码(不带地址码);
⑤ISD4004在进行任何操作时,如果遇到EOM或VOF,则产生一个中断,该中断状态在下一个SPI周期开始被清除;
⑥所有指令操作都在CS端为高时执行。
2.3键盘显示模块
该模块采用4×4行列矩阵式非编码键盘和4位数码管显示。
另外语音服务中门铃按钮连接外部中断0(P3.2口)。
由于该模块硬件连接相对简单,在此不作详细介绍。
3系统软件设计
基于上述硬件原理图和相关分析,软件部分的主要任务是完成对热释电红外传感模块传出的数字信号VO的处理,语音服务的软件实现以及适时的语音录放。
软件流程如图6所示。
BISS0001芯片已经对传感器传出的信号进行了抗干扰处理,得到了信号VO。
为了提高系统检测的可靠性,用单片机对VO进行处理。
单片机每隔相同周期T不断地读取VO的状态。
若VO为低电平,则继续读取;若为高电平,则开始计数。
如果在接下来时间内持续检测到t/T个高电平,判定条件满足,则说明这段时间内一直有人(其中t为输入的报警响应时间)。
这时开始执行报警的相关操作。
使用者可以根据实际情况设置t,以达到最好的报警效果。
由于单片机没有SPI接口,语音录放时必须采用软件模拟实现同ISD4004数据传输。
根据图3所示的硬件连接电路,下面给出部分关键程序:
单片机控制ISD4004放音时必须严格按照以下步骤操作:
首先要调用上电指令,然后至少延时25ms,接着设置放音起始地址(在ISD4004中,每段语音都对应一个起始地址)和调用放音指令。
系统调试时可以首先测量ISD4004的工作电压是否是3V,如果是则进入下级调试。
再看是否可以送入放音地址,是否可以放音,对此可以测量OUT引脚的电压,若为1.2V左右,则说明可以读入放音地址。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ISD4004 STC89C51 语音 播报 思路