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