3 软件设计
3.1 信号音的识别方法
系统在巡检到警情信号后就模拟摘机。为了识别模拟摘机后电话系统是否处于可拨号的状态、电话拨完号码后电话是否接通以及对方是否摘机接听电话等几种状态, 系统必须进行信号音的识别。为了识别信号音, 必须知道各种信号音的特性。各种信号音特性如下:
- 拨号音: 450±25Hz 连续蜂音;
- 忙音: 0.35s 断0.35s 通的450±25Hz 蜂音, 音断周期为0.7s ;
- 回铃音: 4s 断1s 通的450±25Hz 蜂音, 音断周期为5s。
这些电话信号均是模拟信号, 然而单片机是无法识别模拟信号的, 故必须先将模拟信号转换为脉冲信号,然后再根据脉冲信号的脉冲个数进行识别。这些电话音频信号的脉冲个数可用下式计算:
N=tm/T
式中, N 为每音段周期的脉冲个数; T 为电话音频信号的音频周期, 单位为s ; tm 为信号音断周期的通时间, 单位为s。
在实际使用中, 主要需要识别拨号音、忙音和回铃音。分析这三种信号的特性可以看出, 在一定的计数时间内, 其脉冲个数是不一样的。在设计之初, 考虑采用5s 为一个计数单位来判断这三种信号音, 但通过实际的调试发现: 当对方摘机时, 要等待一段时间才能听到报警语音。通过反复研究及调试, 最终采用2s 计数判断拨号音, 采用2.8s ( 即4 个忙音周期) 判断是否为忙音, 若否则代表电话拨通了。随后采用1s 为一个计数单元, 采用计五次后的累加脉冲数来判断对方是否接听电话。若有, 则放相应的报警提示语音; 否则再计1s , 然后计算最后5s 内的脉冲数, 再次判断对方是否摘机。如此反复, 直到超过等待时间仍没有人接听电话就挂机。由于干扰和一些其他因素的存在, 难免会有误判的现象而导致漏报警情。因此采取在所有预先设定的电话至少有一个拨通就只拨一遍, 如果全部没拨通或者没人接听则把所有预存电话重拨一边, 这样漏报报警的概率就非常低以致可忽略不计。
3.2 软件设置
自动拨号程序的流程图如图5 所示。下面是自动拨号的部分程序 。
- AUTOCALL: CLR P1.2 ;模拟摘机
- MOV A,#5DH ;允许信号音输出, 下一次为写控制寄存器CRB
- MOVX @DPTR,A ;写控制寄存器CRA
- MOV A,#51H ;MT8880 置为突发模式
- MOVX @DPTR,A ;写控制寄存器CRB
- MOV A,#56H ;MT8880 置为呼叫模式
- MOVX @DPTR,A ;写控制寄存器CRA
- LCALL DELAY
- LCALL AUTOY ;调用信号音判别子程序, 看是否有拨号音
- MOV A,#5DH ;允许信号音输出, 下一次为写控制寄存器CRB
- MOVX @DPTR,A ;写控制寄存器CRA
- MOV A,#50H ;MT8880 置为突发模式
- MOVX @DPTR,A ;写控制寄存器CRB
- …… ;拨电话号码
- MOV A,#56H ;MT8880 置为呼叫模式
- MOVX @DPTR,A ;写控制寄存器CRA
- LCALL AUTOY ;调用信号音判别子程序, 看是否有回铃音
- LCALL AUTOY ;调用信号音判别子程序, 看对方是否摘机
- SETB P1.2 ;模拟挂机
3.3 编程过程中应注意的几点
首先, MT8880 的DTMF 产生器是发送部分的主体,它产生全部十六种失真小、精度高的标准双音频信号,这些频率均由3.579545MHz 晶体振荡器分频产生。电路由数字频率合成器、行/ 列可编程分频器、开关电容式D/A变换器组成。行和列单音正弦波经混合、滤波后产生双音频信号。通过DTMF 编解码表把编码数据写入MT8880 发送寄存器产生单独的fLOW 和fHIGH, 一旦编码错误就会导致拨号失败, 故在编程过程中要十分小心。其编解码表见MT8880 的Datasheet 。
其次, 在摘机后应延时一段时间再去判断摘机音,因为本系统采用机械继电器实现自动摘机, 故应考虑继电器的响应时间。
最后, 一个电话号码拨完后不能立即拨下一个电话号码, 应保证挂机的最短有效时间以确保前一电话号码确实已挂机, 否则拨下一个电话号码时会没有拨号音。
本系统配置灵活, 可以有效、快速地应用于对安防要求比较高的场合。例如: 对不需要监视视频丢失的场合, 可以不配置视频监测盒; 而对智能小区、医院等, 可以通过RS485 总线将一台DVR ( Digital Video Recorder )主机、一套报警监控软件和多台报警主机组合到一起,构成一个网络型智能监控系统。
本报警系统具有价格低廉、操作简便、通讯速度快、可靠性高和误报率低的优点。