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