AT89C51單片機(jī)智能語音撥號(hào)報(bào)警系統(tǒng)
語音分段方法: 地址輸入端A0~A7 由低位向高位排列, 每位地址代表125ms 的尋址, 160 個(gè)地址覆蓋20s 的語音范圍( 160×0.125s=20s ) , 錄音及放音功能均從設(shè)定的起始地址開始, 錄音結(jié)束由停止操作決定, 芯片內(nèi)部在該段的結(jié)束位置自動(dòng)插入結(jié)束標(biāo)志( EOM) ; 而放音時(shí)遇到EOM 標(biāo)志即自動(dòng)停止放音。在本設(shè)計(jì)中, 因需要四段報(bào)警提示語音, 因此在設(shè)計(jì)時(shí)均將每段語音設(shè)為5s,其起始地址分別為00000000B、00101000B、01010000B、01111000B, 由這四段起始地址可以看出A7、A2、A1 和A0 均為0, 因此將其接地。
3 軟件設(shè)計(jì)
3.1 信號(hào)音的識(shí)別方法
系統(tǒng)在巡檢到警情信號(hào)后就模擬摘機(jī)。為了識(shí)別模擬摘機(jī)后電話系統(tǒng)是否處于可撥號(hào)的狀態(tài)、電話撥完號(hào)碼后電話是否接通以及對(duì)方是否摘機(jī)接聽電話等幾種狀態(tài), 系統(tǒng)必須進(jìn)行信號(hào)音的識(shí)別。為了識(shí)別信號(hào)音, 必須知道各種信號(hào)音的特性。各種信號(hào)音特性如下:
- 撥號(hào)音: 450±25Hz 連續(xù)蜂音;
- 忙音: 0.35s 斷0.35s 通的450±25Hz 蜂音, 音斷周期為0.7s ;
- 回鈴音: 4s 斷1s 通的450±25Hz 蜂音, 音斷周期為5s。
這些電話信號(hào)均是模擬信號(hào), 然而單片機(jī)是無法識(shí)別模擬信號(hào)的, 故必須先將模擬信號(hào)轉(zhuǎn)換為脈沖信號(hào),然后再根據(jù)脈沖信號(hào)的脈沖個(gè)數(shù)進(jìn)行識(shí)別。這些電話音頻信號(hào)的脈沖個(gè)數(shù)可用下式計(jì)算:
N=tm/T
式中, N 為每音段周期的脈沖個(gè)數(shù); T 為電話音頻信號(hào)的音頻周期, 單位為s ; tm 為信號(hào)音斷周期的通時(shí)間, 單位為s。
在實(shí)際使用中, 主要需要識(shí)別撥號(hào)音、忙音和回鈴音。分析這三種信號(hào)的特性可以看出, 在一定的計(jì)數(shù)時(shí)間內(nèi), 其脈沖個(gè)數(shù)是不一樣的。在設(shè)計(jì)之初, 考慮采用5s 為一個(gè)計(jì)數(shù)單位來判斷這三種信號(hào)音, 但通過實(shí)際的調(diào)試發(fā)現(xiàn): 當(dāng)對(duì)方摘機(jī)時(shí), 要等待一段時(shí)間才能聽到報(bào)警語音。通過反復(fù)研究及調(diào)試, 最終采用2s 計(jì)數(shù)判斷撥號(hào)音, 采用2.8s ( 即4 個(gè)忙音周期) 判斷是否為忙音, 若否則代表電話撥通了。隨后采用1s 為一個(gè)計(jì)數(shù)單元, 采用計(jì)五次后的累加脈沖數(shù)來判斷對(duì)方是否接聽電話。若有, 則放相應(yīng)的報(bào)警提示語音; 否則再計(jì)1s , 然后計(jì)算最后5s 內(nèi)的脈沖數(shù), 再次判斷對(duì)方是否摘機(jī)。如此反復(fù), 直到超過等待時(shí)間仍沒有人接聽電話就掛機(jī)。由于干擾和一些其他因素的存在, 難免會(huì)有誤判的現(xiàn)象而導(dǎo)致漏報(bào)警情。因此采取在所有預(yù)先設(shè)定的電話至少有一個(gè)撥通就只撥一遍, 如果全部沒撥通或者沒人接聽則把所有預(yù)存電話重?fù)芤贿? 這樣漏報(bào)報(bào)警的概率就非常低以致可忽略不計(jì)。
3.2 軟件設(shè)置
自動(dòng)撥號(hào)程序的流程圖如圖5 所示。下面是自動(dòng)撥號(hào)的部分程序 。
AUTOCALL: CLR P1.2 ;模擬摘機(jī)
MOV A,#5DH ;允許信號(hào)音輸出, 下一次為寫控制寄存器CRB
MOVX @DPTR,A ;寫控制寄存器CRA
MOV A,#51H ;MT8880 置為突發(fā)模式
MOVX @DPTR,A ;寫控制寄存器CRB
MOV A,#56H ;MT8880 置為呼叫模式
MOVX @DPTR,A ;寫控制寄存器CRA
LCALL DELAY
LCALL AUTOY ;調(diào)用信號(hào)音判別子程序, 看是否有撥號(hào)音
MOV A,#5DH ;允許信號(hào)音輸出, 下一次為寫控制寄存器CRB
MOVX @DPTR,A ;寫控制寄存器CRA
MOV A,#50H ;MT8880 置為突發(fā)模式
MOVX @DPTR,A ;寫控制寄存器CRB
…… ;撥電話號(hào)碼
MOV A,#56H ;MT8880 置為呼叫模式
MOVX @DPTR,A ;寫控制寄存器CRA
LCALL AUTOY ;調(diào)用信號(hào)音判別子程序, 看是否有回鈴音
LCALL AUTOY ;調(diào)用信號(hào)音判別子程序, 看對(duì)方是否摘機(jī)
SETB P1.2 ;模擬掛機(jī)
3.3 編程過程中應(yīng)注意的幾點(diǎn)
首先, MT8880 的DTMF 產(chǎn)生器是發(fā)送部分的主體,它產(chǎn)生全部十六種失真小、精度高的標(biāo)準(zhǔn)雙音頻信號(hào),這些頻率均由3.579545MHz 晶體振蕩器分頻產(chǎn)生。電路由數(shù)字頻率合成器、行/ 列可編程分頻器、開關(guān)電容式D/A變換器組成。行和列單音正弦波經(jīng)混合、濾波后產(chǎn)生雙音頻信號(hào)。通過DTMF 編解碼表把編碼數(shù)據(jù)寫入MT8880 發(fā)送寄存器產(chǎn)生單獨(dú)的fLOW 和fHIGH, 一旦編碼錯(cuò)誤就會(huì)導(dǎo)致?lián)芴?hào)失敗, 故在編程過程中要十分小心。其編解碼表見MT8880 的Datasheet 。
其次, 在摘機(jī)后應(yīng)延時(shí)一段時(shí)間再去判斷摘機(jī)音,因?yàn)楸鞠到y(tǒng)采用機(jī)械繼電器實(shí)現(xiàn)自動(dòng)摘機(jī), 故應(yīng)考慮繼電器的響應(yīng)時(shí)間。
最后, 一個(gè)電話號(hào)碼撥完后不能立即撥下一個(gè)電話號(hào)碼, 應(yīng)保證掛機(jī)的最短有效時(shí)間以確保前一電話號(hào)碼確實(shí)已掛機(jī), 否則撥下一個(gè)電話號(hào)碼時(shí)會(huì)沒有撥號(hào)音。
本系統(tǒng)配置靈活, 可以有效、快速地應(yīng)用于對(duì)安防要求比較高的場(chǎng)合。例如: 對(duì)不需要監(jiān)視視頻丟失的場(chǎng)合, 可以不配置視頻監(jiān)測(cè)盒; 而對(duì)智能小區(qū)、醫(yī)院等, 可以通過RS485 總線將一臺(tái)DVR ( Digital Video Recorder )主機(jī)、一套報(bào)警監(jiān)控軟件和多臺(tái)報(bào)警主機(jī)組合到一起,構(gòu)成一個(gè)網(wǎng)絡(luò)型智能監(jiān)控系統(tǒng)。
本報(bào)警系統(tǒng)具有價(jià)格低廉、操作簡(jiǎn)便、通訊速度快、可靠性高和誤報(bào)率低的優(yōu)點(diǎn)。
評(píng)論