摘? 要: 介紹語(yǔ)音數(shù)字記錄儀的電話接口,采用單片機(jī)控制,電路簡(jiǎn)單,可靠性高,應(yīng)用靈活?,F(xiàn)已作為鐵路語(yǔ)音數(shù)字記錄儀的一個(gè)必備接口。?
關(guān)鍵詞: 單片機(jī)? DTMF? 通信接口?
?
隨著數(shù)字信號(hào)處理芯片(DSP)的發(fā)展,語(yǔ)音編解碼技術(shù)日益廣泛地應(yīng)用于軍事、民用和監(jiān)控等領(lǐng)域。就語(yǔ)音數(shù)字記錄儀而言,它可廣泛地應(yīng)用于運(yùn)輸、公安、消防、電話服務(wù)質(zhì)量監(jiān)督等諸多領(lǐng)域。但是記錄儀通常放置在工作現(xiàn)場(chǎng)附近,如果要知道記錄儀的工作狀態(tài)" title="工作狀態(tài)">工作狀態(tài)或查詢其中的記錄數(shù)據(jù),維護(hù)人員必須到現(xiàn)場(chǎng),工作量極大。本文介紹的電路主要是為記錄儀提供遠(yuǎn)程的電話查詢接口,維護(hù)人員依靠手中的電話就可以查詢記錄儀的工作狀態(tài)和數(shù)據(jù)記錄。系統(tǒng)需要獨(dú)占一個(gè)電話號(hào)碼,接通電話后使用者在語(yǔ)音提示下通過(guò)電話鍵盤輸入密碼,經(jīng)過(guò)確認(rèn)后可以查詢記錄儀的工作狀態(tài)是否正常。也可以輸入時(shí)間對(duì)記錄儀所存儲(chǔ)的一段語(yǔ)音進(jìn)行查詢,語(yǔ)音記錄將經(jīng)由電話線路播放(本地查詢時(shí)通過(guò)喇叭播放)。如果三次密碼輸入不正確,或在語(yǔ)音提示下長(zhǎng)時(shí)間沒(méi)有反應(yīng),系統(tǒng)將會(huì)強(qiáng)制掛機(jī)。?
為了簡(jiǎn)化電路,本接口使用ATMEL 89C2051" title="89C2051">89C2051單片機(jī)作為控制核心,它有128字節(jié)RAM,2K字節(jié)ROM,兩個(gè)時(shí)鐘。采用DTMF信號(hào)進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程控制。電路可靠性高,價(jià)格低。電路可獨(dú)立地作為一個(gè)系統(tǒng),也可用作自動(dòng)電話查詢或電話撥號(hào)控制系統(tǒng)的接口電路" title="接口電路">接口電路,使用比較靈活方便。?
本電路具有語(yǔ)音回放接口、消側(cè)音模塊,提高了系統(tǒng)的穩(wěn)定性,可避免系統(tǒng)出現(xiàn)誤動(dòng)作,配合相應(yīng)的軟件可以實(shí)現(xiàn)雙向通信。本電路在設(shè)計(jì)中對(duì)電話線的地和記錄儀的地作了隔離,否則系統(tǒng)會(huì)無(wú)法正常工作。?
1 總體的功能要求?
(1)來(lái)電時(shí),在振鈴幾次后自動(dòng)摘機(jī);?
(2)在通話過(guò)程中,檢測(cè)到對(duì)方掛機(jī)后自動(dòng)掛機(jī),也可以主動(dòng)地進(jìn)行強(qiáng)制掛機(jī);?
(3)能夠?qū)㈦娫捑€上傳輸?shù)腄TMF信號(hào)轉(zhuǎn)換成為數(shù)字信號(hào),并通過(guò)自定義通信口或者UART端口傳送給其它模塊;?
(4)電話線的地和記錄儀的地需要隔離;?
(5)電路需要提供功率放大器到電話線的傳輸接口,以實(shí)現(xiàn)遠(yuǎn)程監(jiān)聽(tīng)和查詢;?
(6)系統(tǒng)要有高可靠性。?
2 硬件構(gòu)成及原理?
系統(tǒng)組成框圖如圖1所示。?
?
?
接口電路主要包含以下幾個(gè)模塊:電話線接口、振鈴檢測(cè)、雙音多頻信號(hào)檢測(cè)、忙音檢測(cè)以及與主控單片機(jī)的通信。下面分別介紹其中的一些模塊電路。?
2.1 電話線接口電路?
電話線接口電路如圖2所示。電路模擬摘掛機(jī)通過(guò)控制一個(gè)電流源通斷來(lái)實(shí)現(xiàn)。交換機(jī)通過(guò)線路上的直流電流來(lái)判斷用戶的摘掛機(jī)狀態(tài)。在掛機(jī)狀態(tài)下,電路上的直流電流為0;在摘機(jī)狀態(tài)下,線路上的直流電流為18mA~55mA,如果電流超出此范圍,則認(rèn)為用戶環(huán)路出了故障。單片機(jī)通過(guò)端口I/O1控制三極管T1的通斷來(lái)控制電路中的電流,模擬摘掛機(jī)的動(dòng)作。當(dāng)I/O1為低電平時(shí),T1截止,電流比較小,處于掛機(jī)狀態(tài);當(dāng) I/O1為高電平,T1導(dǎo)通,此時(shí)T1和T2組成的電流源將提供30mA左右的電流,相當(dāng)于電話摘機(jī),交換機(jī)會(huì)接通話路。另外,恒流源可以保證電路具有較小的直流阻抗(<300Ω)和較大的交流阻抗(>600Ω)。在電話線之間跨接壓敏電阻,以達(dá)到抗雷擊保護(hù)的作用。?
?
?
由于在檢測(cè)振鈴信號(hào)的時(shí)候T1截止,在穩(wěn)壓二極管的鉗制下,線路上的電壓幾乎都加在T1的集電極和發(fā)射極兩端,此時(shí)電壓高達(dá)100多伏。所以三極管需要選擇一個(gè)耐壓比較高的三極管,耐壓在150V左右比較合適。需要注意的是所使用的單片機(jī)I/O腳的輸出電流,T1的基極工作電流大約為2mA~3mA,而89C2051的輸出電流只有80μA,無(wú)法驅(qū)動(dòng)三極管,所以需要驅(qū)動(dòng)電路。?
為了將功率放大器的輸出送到電話線路上去,通常的做法是采用變壓器耦合。但在本文中采用了一種更為簡(jiǎn)單的辦法。?
電路采用了直接電容耦合。記錄儀的I/O輸出通過(guò)電容、8Ω電阻R1將聲音耦合到電話線路。89C2051通過(guò)I/O2控制繼電器來(lái)控制聲音是播放到本地的喇叭還是電話線路。電阻放在電橋的后面,便于直接從Voice處取出聲音信號(hào)來(lái)消側(cè)音。?
2.2 振鈴檢測(cè)電路?
在待機(jī)狀態(tài)下,電話線路上的電壓一直保持約52V;當(dāng)有用戶呼叫本機(jī)時(shí),交換機(jī)將向電話線路上發(fā)送振鈴信號(hào),振鈴信號(hào)為90V±15V、25Hz±3Hz、3s通、4s斷的蜂音。此時(shí)只需將線路上的電壓與參考電壓進(jìn)行比較,I/O3為高電平時(shí)就可以檢測(cè)出振鈴信號(hào),電路如圖3所示。因?yàn)檎疋忞妷阂绕綍r(shí)高許多,所以可靠性高,干擾信號(hào)不會(huì)影響檢測(cè)結(jié)果。同時(shí),可以在軟件部分進(jìn)行振鈴次數(shù)的檢測(cè),設(shè)置在一定次數(shù)的振鈴后再摘機(jī),提高系統(tǒng)的穩(wěn)定性。?
?
?
2.3 DTMF信號(hào)檢測(cè)?
DTMF信號(hào)檢測(cè)則由MT8870完成,見(jiàn)圖4。當(dāng)有DTMF信號(hào)時(shí),MT8870可以將其解碼得出四位二進(jìn)制代碼,同時(shí)產(chǎn)生一個(gè)STB信號(hào),用作與其它控制芯片連接。?
?
?
2.4 忙音檢測(cè)?
圖5為忙音檢測(cè)電路。通話中一方掛機(jī)后,交換機(jī)會(huì)向另一方發(fā)送忙音信號(hào)。電話遠(yuǎn)程模塊必須具備的一個(gè)功能就是在查詢者掛機(jī)后,檢測(cè)出忙音,自動(dòng)掛機(jī)。線路上的忙音信號(hào)是0.35s±0.05s斷續(xù)的450Hz±25Hz峰音。本電路采用Teltone公司的M982。這是一個(gè)專門用于電話呼叫進(jìn)程檢測(cè)的芯片。其作用是把蜂音信號(hào)轉(zhuǎn)換成高低電平的信號(hào),使用本身的時(shí)鐘,所以檢測(cè)比較準(zhǔn)確,且與單片機(jī)接口比較方便。?
?
?
2.5 消側(cè)音電路?
因?yàn)閽鞕C(jī)依據(jù)的是忙音檢測(cè)結(jié)果,而語(yǔ)音中包含了忙音450Hz這個(gè)頻率,所以在線路上聲音比較大時(shí),有可能影響忙音檢測(cè)的進(jìn)程,使得電路誤掛機(jī)。消側(cè)音電路可以減少在放音過(guò)程中系統(tǒng)的誤動(dòng)作,提高系統(tǒng)的可靠性和穩(wěn)定性。?
電路如圖4所示。從Voice處取出的語(yǔ)音通過(guò)T3反向后與通過(guò)話路耦合過(guò)來(lái)的信號(hào)相加,以達(dá)到消除忙音檢測(cè)輸入信號(hào)中的聲音的目的,電路簡(jiǎn)單可靠。?
2.6 光耦隔離?
光耦電路如圖6所示。使用電話接口的電路需要注意的一點(diǎn)是,電源必須懸浮(由于記錄儀采用了接地設(shè)計(jì),兩部分的電源必須隔離)。此電路中采用光電耦合器來(lái)實(shí)現(xiàn)隔離。電路中采用普通的4N35,在標(biāo)定的傳輸頻率下需要的電流為幾個(gè)mA,但是因?yàn)?9C2051可以提供10mA的吸收電流,故可以直接同光耦連接使用,比較方便。?
2.7 與記錄儀的通信接口?
接口電路與記錄儀的通信通過(guò)四個(gè)信號(hào)線來(lái)實(shí)現(xiàn),分別是STB選通、ASW應(yīng)答、DATA數(shù)據(jù)、CLK時(shí)鐘。這種通信接口可以從遠(yuǎn)程模塊向記錄儀單向發(fā)送DTMF數(shù)據(jù)。?
3 軟件控制流程?
主程序" title="主程序">主程序流程圖如圖7所示。?
?
?
系統(tǒng)一直監(jiān)測(cè)線路信號(hào),在三次振鈴后接通電話。提示音通過(guò)8Ω電阻耦合到電話線路上后,就可以進(jìn)行DTMF信號(hào)的通信。系統(tǒng)檢測(cè)電話線上的DTMF碼;同時(shí)檢測(cè)線路是否有忙音信號(hào),判斷對(duì)方是否已掛機(jī),若對(duì)方掛機(jī)則本地也掛機(jī)。在掛機(jī)后系統(tǒng)返回初始等待狀態(tài);如果主叫方三次密碼輸入錯(cuò)誤,則記錄儀通知電話查詢模塊主動(dòng)掛機(jī);主叫方在接通電話以后長(zhǎng)時(shí)間沒(méi)有輸入需要查詢的記錄時(shí)間,電路也會(huì)主動(dòng)掛機(jī)。?
軟件首先對(duì)所用到的寄存器和存儲(chǔ)器進(jìn)行初始化,然后進(jìn)入節(jié)電模式。?
如果有振鈴信號(hào),則通過(guò)中斷方式進(jìn)行響應(yīng)。振鈴3次后接通電話;對(duì)于異常情況,如振鈴只響過(guò)一次對(duì)方就已經(jīng)掛機(jī),則不響應(yīng)。中斷處理程序中首先將中斷屏蔽掉(以避免同一次鈴流而產(chǎn)生幾次中斷),計(jì)時(shí)4s后打開(kāi)中斷;如果超過(guò)8s仍然沒(méi)有下一次鈴流來(lái)觸發(fā)中斷,則清除計(jì)數(shù)器,跳轉(zhuǎn)到程序開(kāi)始。累計(jì)振鈴3次后,關(guān)掉中斷,避免其他干擾信號(hào)打斷程序的正常運(yùn)行。此后進(jìn)入主程序。?
為了保證程序的實(shí)時(shí)性且不丟失數(shù)據(jù),主程序?yàn)橐粋€(gè)主循環(huán)。循環(huán)中根據(jù)輸入和標(biāo)志位來(lái)判斷是否有DTMF數(shù)據(jù)需要接收,是否有數(shù)據(jù)需要發(fā)送,是否需要掛機(jī)。而數(shù)據(jù)的接收檢測(cè)、發(fā)送和忙音檢測(cè)是在定時(shí)中斷中來(lái)做。?
有忙音時(shí),M982的輸出是一個(gè)0.35s±0.05s的方波。此時(shí)對(duì)方已經(jīng)掛機(jī),其他的任務(wù)已基本不需要占用時(shí)間,所以可以采取一種比較嚴(yán)格的檢測(cè)方法。本文在檢測(cè)到有忙音信號(hào),即I/O3變低時(shí),開(kāi)始連續(xù)監(jiān)測(cè),每隔100μs檢測(cè)一次,如果連續(xù)100ms中有85ms均為低電平,即檢測(cè)1000次中至少有850次為低,則認(rèn)為檢測(cè)到一次方波的低電平部分,然后延時(shí)200ms后再開(kāi)始檢測(cè)高電平。在檢測(cè)到高以后,同樣監(jiān)測(cè)100ms,然后再檢測(cè)低電平。一共檢測(cè)3個(gè)周期,如果檢測(cè)都通過(guò),即認(rèn)為收到一個(gè)合格的忙音信號(hào),在掛機(jī)的同時(shí)通知記錄儀。?
在檢測(cè)到有DTMF信號(hào)時(shí),即I/O4變?yōu)楦唠娖綍r(shí),設(shè)置接收標(biāo)志位,在主程序中接收數(shù)據(jù),并且緩存在RAM中。因?yàn)榻邮盏降臄?shù)據(jù)除了密碼,就是查詢時(shí)間,需要用FIFO的存儲(chǔ)方式,將順序輸入的數(shù)據(jù)發(fā)給記錄儀。在時(shí)鐘中斷服務(wù)程序中僅設(shè)置標(biāo)志位,在主程序中讀取。?
如果有數(shù)據(jù)需要發(fā)送,電路首先在STB上給出信號(hào);然后等待ASW線上的應(yīng)答信號(hào);在得到應(yīng)答后,開(kāi)始發(fā)送程序產(chǎn)生的時(shí)鐘信號(hào)" title="時(shí)鐘信號(hào)">時(shí)鐘信號(hào),在時(shí)鐘信號(hào)的上升沿發(fā)送數(shù)據(jù)位,外圍電路在時(shí)鐘信號(hào)的下降沿接收數(shù)據(jù)。電路的傳送速率是100kbps。由于DTMF信號(hào)都只有四位數(shù)據(jù),所以數(shù)據(jù)發(fā)送時(shí)定義了一個(gè)前導(dǎo)碼,即三個(gè)‘0’,一個(gè)‘1’,然后是數(shù)據(jù)。?
這個(gè)接口電路經(jīng)過(guò)實(shí)際運(yùn)行檢驗(yàn),具有電路可靠、使用靈活、成本低等特點(diǎn)。?
參考文獻(xiàn)?
1 國(guó)標(biāo)半導(dǎo)體集成電路通信電路系列和品種.北京:中國(guó)標(biāo)準(zhǔn)出版社,1993?
2 曾 剛,賀 蓉,徐成. DTMF遠(yuǎn)程通信的軟硬件實(shí)現(xiàn)技術(shù).電子技術(shù)應(yīng)用, 2000;26(5)?