主页(http://www.pttcn.net):基于热释电红外传感器的无线监控报警(2) MT8880的D0~D3口分别接8255的PA0~PA3口,CLK2接PA4口,R/W接PA5口,RSO接PA6口,CS接PA7口,IRQ接主控电路处理器89C51的T0口,用来记录各种脉冲的个数。来自语音电路的信号经过R44送到电话线上去。继电器K用来控制摘挂机,晶体管的B极接主控电路处理器89C51的P1.2口,当P1.2为“1”时,V2导通,继电器K闭合,电话接通,当P1.2为“0”时,V2截止,电话挂机。 主控电路处理器89C51的P0口分别接8255的D0~D7口和74HC373的D0~D7口,74HC373的Q0和Q1分别接8255的A0和A1,89C51的P2.5、P2.6、P2.7分别接74HC138的A、B、C口,74HC138的YO接8255的CS端。 软件设计 ●拨号音:450±25Hz连续蜂音。 这些电话信号均是模拟信号,然而单片机是无法识别模拟信号的,故必须先将模拟信号转换为脉冲信号,然后再根据脉冲信号的脉冲个数进行识别。这些电话音频信号的脉冲个数计算公式为N=tm/T。其中,N为每音段周期的脉冲个数;T为电话音频信号的音频周期,单位为s;tm为信号音段周期的导通时间,单位为s。 在实际使用中,主要需要识别拨号音、忙音和回铃音。分析这3种信号的特性可以看出,在一定的计数时间内,其脉冲个数是不一样的。在本设计中采用2s计数判断拨号音,采用2.8s(即4个忙音周期)判断是否为忙音。随后采用ls为一个计数单元,采用计五次后的累加脉冲数来判断对方是否接听电话。若有,则放相应的报警提示语音;否则再计ls,然后计算最后5s内的脉冲数,再次判断对方是否摘机。如此反复。直到超过等待时间仍没有人接听电话就挂机。由于干扰和一些其他因素的存在,难免会有误判的现象而导致漏报警情。因此采取在所有预先设定的电话至少有一个拨通就只拨一遍。如果全部投拨通或者没人接听则把所有预存电话重拨一遍,这样漏报报警的概率就非常低以致可忽略不计。 2、软件流程图及拨号程序 图4:自动拨号程序流程图 3、编程过程中应注意的几点 其次,在摘机后应延时一段时间再去判断摘机音,因为本系统采用机械继电器实现自动摘机,故应考虑继电器的响应时间。 最后,一个电话号码拨完后不能立即拨下一个电话号码,应保证挂机的最短有效时间以确保前一电话号码确实已挂机,否则拨下一个电话号码时会没有拨号音。 结论 (中国集群通信网 | 责任编辑:陈晓亮) |