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