信息電話(huà)機(jī)關(guān)鍵模塊的研究與應(yīng)用
摘要 本裝置利用來(lái)電顯示服務(wù),通過(guò)FSK解碼芯片MC14LC5447完成對(duì)來(lái)電顯示數(shù)據(jù)的解碼;使用AT89C2051單片機(jī)進(jìn)行數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ);通過(guò) DLL動(dòng)態(tài)鏈接庫(kù)控制USB203(8位并行輸入U(xiǎn)SB傳輸模塊),完成對(duì)存儲(chǔ)數(shù)據(jù)的傳輸,并對(duì)該數(shù)據(jù)進(jìn)行分析處理。通過(guò)本裝置,可完成對(duì)來(lái)電數(shù)據(jù)的采集、分析與處理,使用改進(jìn)后的軟件接口進(jìn)行數(shù)據(jù)傳輸,且提供可用于VC、VB和DELPHI語(yǔ)言編程環(huán)境的接口函數(shù)。
關(guān)鍵詞 主叫號(hào)碼顯示 移頻鍵控(FSK) 單片機(jī) USB接口設(shè)計(jì) USB203
來(lái)電顯示是近年來(lái)電信部門(mén)推出的一種新的業(yè)務(wù)——顯示被叫方的電話(huà)號(hào)碼和呼叫時(shí)間等信息。來(lái)電顯示電話(huà)機(jī)和來(lái)電顯示器產(chǎn)品應(yīng)用十分廣泛,其技術(shù)也相當(dāng)成熟。
500)this.width=500" border="0" />
圖1 來(lái)電顯示信號(hào)解碼模塊電路原理
傳統(tǒng)的來(lái)電顯示信息電話(huà)僅將數(shù)據(jù)顯示在自身的話(huà)機(jī)上,而無(wú)法將數(shù)據(jù)提供給計(jì)算機(jī)或其他設(shè)備。所以,開(kāi)發(fā)來(lái)電顯示電話(huà)與計(jì)算機(jī)的接口和相關(guān)的數(shù)據(jù)采集系統(tǒng)是十分必要的,也是有實(shí)用價(jià)值的。
本裝置共分為4個(gè)子模塊設(shè)計(jì),分別為來(lái)電顯示信號(hào)解碼模塊、信號(hào)采集模塊、電話(huà)信號(hào)處理模塊、USB傳輸模塊。其中USB傳輸模塊通過(guò)接口函數(shù)調(diào)用,且通過(guò)接口函數(shù)即可得到來(lái)電顯示號(hào)碼。
1 來(lái)電顯示信號(hào)解碼模塊設(shè)計(jì)
來(lái)電顯示信號(hào)解碼模塊主要采用FSK解碼芯片MC14LC5447實(shí)現(xiàn),其原理如圖1所示。來(lái)電顯示輸出有兩路信號(hào),分別為DOC、DOR。其數(shù)據(jù)格式不同的地方在于,DOC處理了來(lái)電顯示的信道占用信號(hào)(由前導(dǎo)的300個(gè)連續(xù)的0、1交替的位組成),而DOR為芯片解碼后的數(shù)據(jù),沒(méi)有刪減。由于兩路信號(hào)的差別僅在于信道占用信號(hào)的不同,那么,使用DOC將比DOR方便,因?yàn)镈OC的數(shù)據(jù)流即為來(lái)電顯示的數(shù)據(jù)流。
數(shù)據(jù)檢測(cè)有兩路,分別為RDO與CDO。RDO為振鈴檢測(cè)輸出,在沒(méi)有振鈴的情況下,RDO輸出高電平,當(dāng)有振鈴時(shí),RDO輸出低電平直到振鈴結(jié)束;CDO為載波檢測(cè)輸出,在沒(méi)有載波時(shí),CDO輸出高電平,當(dāng)有載波時(shí),CDO輸出低電平直到載波結(jié)束。RDO不受芯片開(kāi)關(guān)(PWRUP)信號(hào)的限制,而在芯片開(kāi)關(guān)為高電平時(shí),無(wú)論是否檢測(cè)到載波信號(hào),都將始終保持高電平。
TIP和RING為電話(huà)線(xiàn),連接無(wú)要求,可隨意連接。TIP線(xiàn)與RING線(xiàn)的區(qū)別在于承載的電壓不同,TIP線(xiàn)電壓為負(fù)電壓,RING線(xiàn)電壓為正電壓。兩線(xiàn)路之間的壓差為60 V或48 V(地區(qū)差異)。
PWRUP信號(hào)接地可以作為測(cè)試端(PWRUP接地使芯片始終處于打開(kāi)狀態(tài)),DOR信號(hào)在本測(cè)試中始終存在干擾信號(hào),但當(dāng)有來(lái)電時(shí),信號(hào)正常。為了提高系統(tǒng)的穩(wěn)定性,一般不使用DOR作為數(shù)據(jù)信號(hào)輸出。CDO需要PWRUP支持,如果使PWRUP接地,并使芯片始終處于工作的狀態(tài),則CDO 可做觸發(fā)信號(hào)使用。考慮到系統(tǒng)的低功耗要求,必須使芯片在不使用的狀態(tài)下關(guān)閉;但芯片在關(guān)閉狀態(tài)下,CDO無(wú)任何信號(hào)發(fā)出,而RDO不受電源控制,更容易使用。另外,將芯片關(guān)閉也可以增強(qiáng)系統(tǒng)的穩(wěn)定性,同時(shí)提高數(shù)據(jù)的安全可靠性。
500)this.width=500" border="0" />
圖2 來(lái)電顯示時(shí)序
圖2是DOC信號(hào)的測(cè)試結(jié)果(數(shù)字示波器中采集結(jié)果)。由于分時(shí)分段采集,僅作數(shù)據(jù)參考,時(shí)間幀和校驗(yàn)幀不為一次采集的結(jié)果。圖3是經(jīng)過(guò)圖形化處理后的時(shí)序。
500)this.width=500" border="0" />
圖3 來(lái)電顯示時(shí)序(計(jì)算機(jī)圖形化處理后)
由采樣時(shí)序圖可知,來(lái)電顯示波形按異步串行數(shù)據(jù)格式排列,以0作為起始位,1作為終止位;但與多種資料不同的是,無(wú)字段校驗(yàn)位,按排列應(yīng)是每個(gè)數(shù)據(jù)包的第9位,類(lèi)型字段和長(zhǎng)度字段以及最后的校驗(yàn)字段除外??梢钥吹?,采集的數(shù)據(jù)均無(wú)校驗(yàn)位。來(lái)電顯示數(shù)據(jù)包的速率為1 200 bps,由數(shù)字示波器測(cè)量也可得到,每位數(shù)據(jù)占用時(shí)間為830 μs(由于數(shù)字示波器的時(shí)間精度不能準(zhǔn)確地調(diào)整到1 μs,所以只能精確到830 μs),基本與1 200 bps的速率相同(1 s÷1 200位≈833.333 μs),所以來(lái)電數(shù)據(jù)是穩(wěn)定的。需要指出的是,在來(lái)電數(shù)據(jù)包結(jié)束后,即在本采樣包81H結(jié)束后,實(shí)際上還有數(shù)據(jù)信號(hào),每位信號(hào)占用的時(shí)間為410 μs,數(shù)據(jù)速率為2 400 bps。此信號(hào)是空閑信號(hào),所以在采集時(shí)需要通過(guò)濾波器進(jìn)行濾除。
2 信號(hào)采集模塊方案設(shè)計(jì)
作為對(duì)輸出數(shù)據(jù)的研究,經(jīng)由MC14LC5447解調(diào)后的信號(hào)為異步串行信號(hào),而且數(shù)據(jù)速率為1 200 bps,可使用單片機(jī)的串口模式1來(lái)進(jìn)行數(shù)據(jù)接收,算法請(qǐng)見(jiàn)參考文獻(xiàn)[1]。單片機(jī)除了進(jìn)行數(shù)據(jù)采集,將串行數(shù)據(jù)包解包外,還將數(shù)據(jù)復(fù)原。
主中斷程序大部分都在循環(huán)等待串口程序的中斷響應(yīng),首先需要接收的是來(lái)電顯示包的長(zhǎng)度字段,接收到長(zhǎng)度字段的好處就在于可以動(dòng)態(tài)地接收來(lái)電數(shù)據(jù)包,而不必每次都等待接收固定的長(zhǎng)度。雖然來(lái)電顯示包長(zhǎng)度不可能大于某個(gè)固定長(zhǎng)度,但根據(jù)來(lái)電數(shù)據(jù)包的長(zhǎng)度字段,動(dòng)態(tài)接收數(shù)據(jù),使采集的數(shù)據(jù)更容易處理,而且位于數(shù)據(jù)包尾的干擾信號(hào)也可以再次濾除,從而減輕其他程序的負(fù)荷。
當(dāng)然,在此也可以通過(guò)單片機(jī)將數(shù)據(jù)分離出來(lái)并進(jìn)行處理,但為了包的可分析性,單片機(jī)除了數(shù)據(jù)采集外,不做其他的工作。
某一次獲取的數(shù)據(jù)如下:
500)this.width=500" border="0" />
500)this.width=500" border="0" />
圖4 數(shù)據(jù)采集模塊原理
圖4給出了數(shù)據(jù)采集模塊的原理,MC14LC5447的DOC信號(hào)輸出連接到AT89C2051的第2引腳處(串行輸入端口);MC14LC5447的RDO信號(hào)輸出連接到AT89C2051的第6引腳處(AT89C2051的外部中斷0);AT89C2051的第9引腳連接到MC14LC5447的第7引腳(PWRUP),來(lái)控制MC14LC5447的開(kāi)與關(guān)。AT89C2051第7引腳連接到USB設(shè)備狀態(tài)輸出口,第1 引腳也連接到USB設(shè)備的狀態(tài)輸出口,第11引腳連接到USB設(shè)備的狀態(tài)輸入口,數(shù)據(jù)線(xiàn)連接到USB設(shè)備的并行數(shù)據(jù)輸入口。其中第12、第13引腳需要外接上拉電阻。
利用單片機(jī)實(shí)現(xiàn)的方案較數(shù)字邏輯電路的方案有許多優(yōu)點(diǎn)。主要有出錯(cuò)幾率小,有存儲(chǔ)控制功能,方便,更換靈活等。
利用存儲(chǔ)轉(zhuǎn)發(fā)方案提高了數(shù)據(jù)傳輸?shù)陌踩?。由于USB203無(wú)USB的中斷功能,所以接收數(shù)據(jù)只能用程序循環(huán)的方式來(lái)實(shí)現(xiàn),但不恰當(dāng)?shù)厥褂醚h(huán)會(huì)增加系統(tǒng)的負(fù)擔(dān)。
3 電話(huà)信號(hào)處理模塊設(shè)計(jì)
摘掛機(jī)信號(hào)可以由電話(huà)機(jī)叉簧線(xiàn)路取得。
經(jīng)過(guò)檢測(cè),叉簧上共有兩路信號(hào): 一路為22~27 V的正弦波信號(hào),位于叉簧第5、6引腳;另一路為15~20 V的負(fù)正弦波信號(hào),位于叉簧第3、4引腳。第1、2引腳為信號(hào)輸出。當(dāng)叉簧上的彈片沒(méi)有被壓下時(shí),第1、2引腳與第5、6引腳連通,信號(hào)為正交流信號(hào),此時(shí)表示摘機(jī);當(dāng)掛機(jī)時(shí),叉簧上的彈片被壓下,此時(shí),第1、2引腳與第3、4引腳連通,第1、2引腳上的信號(hào)為負(fù)交流信號(hào)。將此信號(hào)轉(zhuǎn)換為邏輯0、1電平,即摘機(jī)時(shí)信號(hào)為邏輯1,掛機(jī)時(shí)信號(hào)為邏輯0,電路原理如圖5所示。
500)this.width=500" border="0" />
圖5 叉簧信號(hào)處理原理
通過(guò)分壓電路與二極管進(jìn)行濾波,負(fù)半周信號(hào)將被二極管濾除。由于10 MΩ的電阻分壓,使得輸出電平在1 V左右。經(jīng)過(guò)測(cè)試,USB狀態(tài)輸入引腳需要1.6 V以上才認(rèn)為輸入信號(hào)為邏輯1,而低于1.6 V的將被認(rèn)為是邏輯0。
摘機(jī)輸入信號(hào)為正弦波,通過(guò)整流濾波電路后,能輸出2.6 V左右的電平信號(hào)給USB設(shè)備,信號(hào)為穩(wěn)定的邏輯1。
掛機(jī)信號(hào)為負(fù)值的正弦波,通過(guò)整流濾波電路后,能輸出260 mV的電平信號(hào)給USB設(shè)備,信號(hào)為穩(wěn)定的邏輯0。
4 USB傳輸模塊設(shè)計(jì)
USB傳輸模塊使用USB203作為傳輸接口,如圖6所示。使用此模塊的好處是,它為并串轉(zhuǎn)換的傳輸模塊,而且有4位控制信號(hào)輸入和4位控制信號(hào)輸出,并提供了DLL庫(kù)文件,為二次開(kāi)發(fā)提供了方便;但是此設(shè)備并沒(méi)有使用中斷控制方式,因此讀取數(shù)據(jù)將是本系統(tǒng)的瓶頸。然而在本系統(tǒng)內(nèi)并未用到大量的數(shù)據(jù)采集,數(shù)據(jù)長(zhǎng)度僅僅為26位,即使為其他長(zhǎng)度的復(fù)合來(lái)電顯示數(shù)據(jù)包,長(zhǎng)度也不會(huì)大于1 000位,所以是否為高速傳輸在此并不重要。本系統(tǒng)使用USB的原因在于,USB的簡(jiǎn)單易用和支持熱插拔,這對(duì)于使用RS232通信口的設(shè)備較有優(yōu)勢(shì);另外USB使用5 V電源,可以為外接設(shè)備提供電源,節(jié)省了外接設(shè)備的電源部分,從而減小了外接設(shè)備的體積。
500)this.width=500" border="0" />
圖6 USB傳輸模塊電路原理
500)this.width=500" border="0" />
圖7 USB接口程序算法流程圖
在DLL中需要建立USB_CID函數(shù),無(wú)參數(shù),直接返回處理后的來(lái)電數(shù)據(jù)包中的來(lái)電號(hào)碼,而且在無(wú)號(hào)碼時(shí)將相應(yīng)的錯(cuò)誤代碼返回。在此要注意的是,雖然單片機(jī)程序?yàn)榭勺冮L(zhǎng)度存儲(chǔ),但依然有錯(cuò)誤產(chǎn)生,原因是來(lái)電顯示數(shù)據(jù)包的發(fā)送。當(dāng)一次來(lái)電時(shí),數(shù)據(jù)包會(huì)在第一和第二振鈴間,如果呼叫者掛斷電話(huà),那么來(lái)電數(shù)據(jù)包將不再發(fā)送;或者被叫者拿起電話(huà)也將丟失來(lái)電數(shù)據(jù)包,那么來(lái)電包將被存儲(chǔ)一部分,單片機(jī)在不重啟的情況下將繼續(xù)等待接收。當(dāng)下一個(gè)來(lái)電到達(dá)時(shí),這個(gè)新的來(lái)電數(shù)據(jù)包將被繼續(xù)存儲(chǔ),直到滿(mǎn)足第一個(gè)來(lái)電數(shù)據(jù)包的長(zhǎng)度時(shí),才結(jié)束接收,那么整個(gè)數(shù)據(jù)包將被接口程序獲取并判斷是否出錯(cuò)。如果是復(fù)合包,那么在來(lái)電號(hào)碼數(shù)據(jù)包前出錯(cuò)的情況將被排除,但是如果在來(lái)電數(shù)據(jù)號(hào)碼數(shù)據(jù)包內(nèi)出錯(cuò),那么接收到的號(hào)碼將被發(fā)送,顯示的可能是亂碼,其算法流程如圖7所示。表 1給出了狀態(tài)字的定義。
表1 狀態(tài)字定義
500)this.width=500" border="0" />
5 結(jié)論
信息電話(huà)USB接口設(shè)計(jì),是來(lái)電顯示電話(huà)與計(jì)算機(jī)的接口和相關(guān)的數(shù)據(jù)采集系統(tǒng),是運(yùn)用接口技術(shù)、計(jì)算機(jī)軟件技術(shù)實(shí)現(xiàn)來(lái)電號(hào)碼等相關(guān)信息在計(jì)算機(jī)上的顯示或存儲(chǔ),并可以根據(jù)基本信息進(jìn)行來(lái)電號(hào)碼的分類(lèi)統(tǒng)計(jì)。這些數(shù)據(jù)對(duì)相關(guān)部門(mén)服務(wù)質(zhì)量和效率的提高將起到重要的作用,同時(shí)還可以為相關(guān)決策部門(mén)及時(shí)提供參考信息。
本裝置完成數(shù)據(jù)采集和數(shù)據(jù)傳送,而且通過(guò)軟件接口完成對(duì)相關(guān)數(shù)據(jù)的分離。詳細(xì)地研究了來(lái)電顯示技術(shù),單片機(jī)程序編制和使用VC++編寫(xiě)DLL。本裝置不但可以嵌入到電話(huà)內(nèi),還可以作為單一的模塊來(lái)使用,所以該系統(tǒng)有廣泛的實(shí)用價(jià)值。