一、引言
對(duì)于擁有海量電話(huà)、日常辦公繁忙的工作人員來(lái)說(shuō),使用手機(jī)查找和存儲(chǔ)電話(huà)號(hào)碼雖然方便,但也存在著查詢(xún)不方便,工作效率低的缺點(diǎn),且在某些山區(qū)等邊遠(yuǎn)地區(qū),手機(jī)通話(huà)質(zhì)量遠(yuǎn)遠(yuǎn)低于固定電話(huà)。針對(duì)這種情況,本文介紹了一種基于 DTMF技術(shù)的智能撥號(hào)器系統(tǒng),使用該系統(tǒng)可以方便地利用計(jì)算機(jī)進(jìn)行電話(huà)號(hào)碼的查找,更新和撥號(hào)。該系統(tǒng)與固定電話(huà)并聯(lián)在電話(huà)線(xiàn)上,對(duì)固定電話(huà)的正常使用沒(méi)有任何影響。此外,系統(tǒng)還具有通話(huà)質(zhì)量好,保密性高的特點(diǎn)。
二、系統(tǒng)的組成及原理
1. 系統(tǒng)電路如圖1所示,包括:帶USB接口的ARM處理器電路,振鈴檢測(cè)電路,模擬摘機(jī)電路和 DTMF收發(fā)電路;
系統(tǒng)通過(guò) USB接口與計(jì)算機(jī)相連,計(jì)算機(jī)上有專(zhuān)門(mén)用戶(hù)界面供用戶(hù)實(shí)現(xiàn)撥號(hào),查詢(xún)等操作。用戶(hù)使用計(jì)算機(jī)撥號(hào)時(shí),計(jì)算機(jī)將被叫號(hào)碼和呼叫信息通過(guò) USB口傳送到 ARM處理器,ARM處理器控制模擬摘機(jī)電路摘機(jī),并啟動(dòng)雙音多頻收發(fā)電路進(jìn)行撥號(hào)連接。當(dāng)有電話(huà)呼入 時(shí),振鈴檢測(cè)電路檢測(cè)振鈴有效后,計(jì)算機(jī)用戶(hù)界面上會(huì)提示用戶(hù)“有來(lái)電,請(qǐng)摘機(jī)”。
2. DTMF技術(shù)介紹 DTMF雙音多頻系統(tǒng)是有線(xiàn)電話(huà)通信中的撥號(hào)方式。它具有多功能、誤碼低、高可靠、速度快等優(yōu)點(diǎn)。雙音多頻信號(hào)(DTMF)是由一組低音頻信號(hào)和一組高音頻信號(hào)以一定方式的組合構(gòu)成,每組音頻信號(hào)各有 4個(gè)音頻信號(hào),而每種組合有一個(gè)高音頻信號(hào)和一個(gè)低音頻信號(hào),共 16種組合。
低音頻信號(hào)的標(biāo)準(zhǔn)值分別為:697 Hz、770 Hz、852 Hz、941Hz; 高音頻信號(hào)的標(biāo)準(zhǔn)值分別為:1209 Hz、1336 Hz、1477 Hz、1633 Hz。 上述標(biāo)準(zhǔn)頻率的選定不是任選的,而是設(shè)計(jì)時(shí)考慮了撥號(hào)音、忙音及交流電源的雜音,這些雜音均不在上述 DTMF信號(hào)的范圍內(nèi),同時(shí)為了避免標(biāo)準(zhǔn)頻率之間的諧波干擾出現(xiàn),故所列最高標(biāo)準(zhǔn)頻率小于最低標(biāo)準(zhǔn)頻率的三次諧波頻率。 三、硬件電路的組成 智能撥號(hào)器的硬件電路由 ARM存儲(chǔ)器、振鈴檢測(cè)電路、模擬摘機(jī)電路和雙音多頻收發(fā)電路組成。ARM處理器是硬件電路的核心,它完成對(duì)其它電路控制和通信的功能,系統(tǒng)選用的是 ATMEL推出的基于 ARM的 32位閃存微控制器 AT91SAM7S64,它成本低,功耗小,具有豐富的外設(shè)資源,包括一個(gè) USB 2.0設(shè)備。模擬摘機(jī)電路用于實(shí)現(xiàn)系統(tǒng)撥號(hào)前的模擬摘機(jī)功能,以便交換機(jī)判別出系統(tǒng)終端已經(jīng)摘機(jī),從而向系統(tǒng)終端發(fā)送撥號(hào)音提示用戶(hù)可以撥號(hào);振鈴檢測(cè)電路完成檢測(cè)振鈴是否有效的功能,如果振鈴有效,振鈴檢測(cè)電路會(huì)發(fā)送方波信號(hào)通知 ARM處理器;雙音多頻收發(fā)電路是實(shí)現(xiàn)撥號(hào)功能的主要電路。下面對(duì)各個(gè)電路的硬件組成進(jìn)行了詳細(xì)的說(shuō)明。
1. 振鈴檢測(cè)電路
由圖 2知,振鈴檢測(cè)電路完成檢測(cè)振鈴是否有效的功能。當(dāng)用戶(hù)被呼叫時(shí),電話(huà)交換機(jī)發(fā)來(lái)鈴流信號(hào)。振鈴信號(hào)為 25±3Hz的正弦波,電壓有效值90±15V。振鈴以 5秒為周期,即 1秒通,4秒斷。振鈴信號(hào)經(jīng)圓橋整流后經(jīng)光電隔離輸出脈沖信號(hào)。該脈沖信號(hào)輸入到74LS04中整形成方波信號(hào),送入 ARM處理器 [1]。
2. 模擬摘機(jī)電路
圖 3表示模擬摘機(jī)電路完成撥號(hào)前摘機(jī)和來(lái)電后自動(dòng)摘機(jī)的功能,由于電話(huà)線(xiàn)上傳來(lái)的信號(hào)的極性沒(méi)有確定,圓橋可以穩(wěn)定信號(hào)的極性,從正極輸出端輸出的永遠(yuǎn)是正極性,負(fù)極輸出端輸出的永遠(yuǎn)是負(fù)極性。模擬摘機(jī)電路工作與否由 ARM處理器傳送到光耦(TLP521-1)第二個(gè)管腳的高低電平?jīng)Q定,當(dāng) ARM處理器傳送過(guò)來(lái)的是低電平時(shí),光耦合器開(kāi)始工作,穩(wěn)壓二極管被反向擊穿而穩(wěn)壓在 5.1V,三極管(2N5401)因基極電平被拉低而導(dǎo)通,回路電流值突增,電話(huà)交換機(jī)檢測(cè)到該電流,將線(xiàn)路電壓變?yōu)槭畮追闹绷?,模擬摘機(jī)得以實(shí)現(xiàn)。若用戶(hù)沒(méi)有撥號(hào),光電耦合器的 2端一直處于高電平,不工作,三極管沒(méi)有被導(dǎo)通,電路回路呈現(xiàn)高阻抗。音頻變壓器起到隔離高低電壓的作用,它右側(cè)電路的功能是使得輸出的信號(hào)控制在+/-15V以?xún)?nèi)。
3.雙音多頻收發(fā)電路 考慮到硬件電路的可靠性,在參考了大量資料后,系統(tǒng)選用 MT8880芯片來(lái)完成雙音多頻收發(fā)功能,MT8880芯片專(zhuān)業(yè)可靠,應(yīng)用廣泛,便于開(kāi)發(fā)。 雙音多頻收發(fā)電路連接圖見(jiàn)圖4。
放大器的輸出端可獲得峰值 1V左右的雙音頻信號(hào)。MT8880可以接收呼叫過(guò)程中的各種信號(hào)音,以及 16種雙音頻信號(hào)。接收信號(hào)音和 DTMF信號(hào)共用同一通道,并且 MT8880不能同時(shí)接收 DTMF信號(hào)和信號(hào)音,要分時(shí)復(fù)用。信號(hào)音與 DTMF信號(hào)經(jīng)耦合線(xiàn)圈,再經(jīng)電解電容 C1和電阻R1,將電話(huà)線(xiàn)上的信號(hào)輸入到 MT8880的輸入端IN-。MT8880接收與發(fā)送的 DTMF信號(hào)由模擬摘機(jī)電路耦合[2-5]。MT8880作為 DTMF接收器時(shí),將電話(huà)線(xiàn)傳送來(lái)的信號(hào)經(jīng) MT8880轉(zhuǎn)換成數(shù)字信號(hào),由ARM處理器讀入 [6]。
利用雙音多頻(DTMF)技術(shù)可通過(guò)電話(huà)線(xiàn)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸任務(wù),其不足之處是速度太慢(約 80波特)。本系統(tǒng)可實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸?shù)墓δ?,只需要通過(guò)軟件編程在系統(tǒng)(被呼叫用戶(hù))接收到振鈴后控制模擬摘機(jī)電路工作,實(shí)現(xiàn)模擬摘機(jī),并設(shè)置芯片 MT8880工作在接收數(shù)據(jù)模式下。而呼叫用戶(hù)在呼叫后,MT8880立即進(jìn)入發(fā)送模式下,等待用戶(hù)發(fā)送數(shù)據(jù)。
四、軟件編程
本系統(tǒng)通過(guò)軟件編程實(shí)現(xiàn)與 MT8880的部分端口的通信。系統(tǒng)選用 IAR作為軟件開(kāi)發(fā)環(huán)境,IAR的 Embedded Workbench 系列是一種增強(qiáng)型一體化嵌入式集成開(kāi)發(fā)環(huán)境,其中完全集成了開(kāi)發(fā)嵌入式系統(tǒng)所需要的文件編輯、項(xiàng)目管理、編譯、鏈接和調(diào)試工具。IAR公司獨(dú)具特色的 C-SPY調(diào)試器,不僅可以在系統(tǒng)開(kāi)發(fā)初期進(jìn)行無(wú)目標(biāo)硬件的純軟件仿真,也可以結(jié)合 IAR公司推出的 J-Link硬件仿真器,實(shí)現(xiàn)用戶(hù)系統(tǒng)的實(shí)時(shí)在線(xiàn)仿真調(diào)試 [3]。
在軟件編程時(shí)要注意 MT8880上電延時(shí) 100ms以上,初始化時(shí)要將寄存器清零后才能使用[2]。
1. DTMF接收和命令解釋程序 這段程序是系統(tǒng)模擬摘機(jī)后的程序,ARM處理器發(fā)送被叫號(hào)碼到 MT8880芯片,部分程序如下,為了方便升級(jí)開(kāi)發(fā),均有詳細(xì)注釋?zhuān)?/設(shè)置MT8880 模式為雙音頻工作模式(發(fā)送數(shù)據(jù)) 即配置CRA=1101,CRB=0000
dBytesCRA[3] = 1;
dBytesCRA[2] = 1;
……
dBytesCRB[3] = 0;
……
MT8880_WriteCRACRB(dBytesCRA, dBytesCRB);//將1101,0000 分別寫(xiě)入到CRA 和CRB
dLength = strlength(pSendNum); //保存要寫(xiě)入到MT8880 的被叫號(hào)碼的長(zhǎng)度
for(dL = 0; dL < dLength; dL++) { //連續(xù)發(fā)送dLength 個(gè)DTMF 信號(hào)
switch(*pSendNum++) { //判斷ARM 處理器傳來(lái)的字符型的電話(huà)號(hào)碼
case '1':{
dBytesSend[3] = 0; //D3D2D1D0=0001
dBytesSend[2] = 0;
……
break;}
case '2':{
dBytesSend[3] = 0; //D3D2D1D0=0010
……
break;}
……
default:
{
break;
}
}
MT8880_WriteDataReg(dBytesSend); //寫(xiě)發(fā)送數(shù)據(jù)寄存器
for(iTemp = 5000; iTemp; --iTemp) {
MT8880_ReadStateReg(dBytesSReg); //讀取狀態(tài)寄存器的值
if(dBytesSReg[1] == 1) //判斷狀態(tài)寄存器的第二位是否為1
break; //即發(fā)送數(shù)據(jù)寄存器滿(mǎn),準(zhǔn)備發(fā)送數(shù)據(jù)
}
2.信號(hào)音處理程序
首先將芯片 MT8880設(shè)置為呼叫處理、中斷模式,信號(hào)音處理程序分為四大部分:一是撥號(hào)前檢測(cè)是否允許撥號(hào) ,即檢測(cè)信號(hào)音是撥號(hào)音還是忙號(hào)音;二是撥號(hào)后檢測(cè)是否接通,即檢測(cè)信號(hào)音是回鈴音、忙號(hào)音還是占線(xiàn)音;三是撥號(hào)接通后檢測(cè)是否應(yīng)答,即檢測(cè)回鈴音是否消失;四是檢測(cè)各種信號(hào)音:撥號(hào)音、忙號(hào)音、回鈴音。
各種信號(hào)音的特點(diǎn):撥號(hào)音在 5秒內(nèi)是連續(xù)音;忙號(hào)音在 5秒內(nèi) 0.35秒通,0.35秒斷;回鈴音在 5秒內(nèi)是 1秒通,4秒斷。
3.串行通信程序主要功能是接收上位機(jī)的命令,執(zhí)行相應(yīng)的操作。將另撰文詳說(shuō)。
五、小結(jié)
首先對(duì)智能撥號(hào)器的硬件組成進(jìn)行了詳細(xì)的研究和說(shuō)明,并對(duì)部分軟件代碼進(jìn)行了解釋。該系統(tǒng)已經(jīng)測(cè)試使用,它具有成本低、功耗小、便于攜帶、功能易于擴(kuò)展等特點(diǎn),在一定的應(yīng)用背景下有很好的使用前景。