摘要:本設計基于μC/OS—II嵌入式實時操作系統(tǒng)和來電顯示技術,由鈴流檢測電路、來電解碼電路、DTMF解碼電路、模擬掛機電路、號碼存儲電路等組成。系統(tǒng)利用得到的來電號碼,同存儲黑名單中的號碼進行比較,判斷是接通話機振鈴線路,還是控制模擬掛機電路掛機。本系統(tǒng)復用電話機鍵盤控制,并以LCD中文顯示,可方便地對黑名單中的號碼進行管理。
關鍵詞:騷擾電話;μC/OS;防火墻
引言
隨著電信業(yè)務的發(fā)展,騷擾電話問題日益突出,大量用戶被騷擾電話所煩擾。為躲避騷擾,多數(shù)人采取拔電話線的方法,卻因此錯過不少重要來電。此外,每個人在生活中都可能遇到一些出于顧慮而不想接聽的電話。針對此種現(xiàn)象,本次設計的來電防火墻可屏蔽騷擾電話。來電防火墻通俗地講就是“不想聽”的電話打不進來,它可以過濾掉黑名單中電話號碼的來電,直接拒絕接昕。同時,也支持親友名單模式,只接聽親友名單中電話的來電,拒絕接聽其他號碼的來電。
1 系統(tǒng)概述
μC/OS—II嵌入式實時操作系統(tǒng)的引入極大地方便了模塊的管理和號碼存儲的管理,系統(tǒng)復用電話機鍵盤控制,并以LCD中文顯示,可方便對黑名單中的號碼進行管理。主叫識別信息傳送及顯示CID業(yè)務是向被叫電話用戶提供的一種新服務項目,是指在被叫用戶終端設備上顯示主叫號碼、主叫用戶姓名、呼叫日期時間等主叫識別信息,并進行存儲以供用戶查閱的一種服務項目。實現(xiàn)CID的基本方法是發(fā)端交換機將主叫號碼等信息通過局間信令系統(tǒng)傳送給終端交換機,終端交換機將主叫識別信息以移頻鍵控FSK的方式,送給被叫用戶終端,主叫識別信息傳送設備如圖1所示。
終端交換機將主叫識別信息送給被叫用戶終端設備,在下述兩種狀態(tài)下進行;一種是用戶終端掛機狀態(tài),另一種是用戶終端通話狀態(tài)。掛機狀態(tài)下的傳送方法是終端交換機將主叫識別信息在第一次振鈴和第二次振鈴間隔期間,送給被叫用戶終端設備,被叫終端信息傳送如圖2所示。目前我國大陸地區(qū)都是采用圖2所示的方式進行來電號碼傳遞。
2 系統(tǒng)硬件電路設計
固定電話來電防火墻是基于來電顯示(CID)設計的,通過解碼得到的來電號碼,與黑名單中的號碼進行比對,進行模擬掛機或者接通振鈴行動。復用電話及鍵盤進行系統(tǒng)設置,通過電話機鍵盤輸入號碼,存儲到EEPROM中。
2.1 鈴流檢測電路
我國大陸來電顯示是FSK格式的。來電號碼在第一聲振鈴和第二聲振鈴之間發(fā)送。為避免在得到來電號碼前,第一聲振鈴對用戶產(chǎn)生影響,需要在話機振鈴電路動作之前截斷振鈴,因此要求振鈴檢測迅速有效。圖3為鈴流檢測電路。
鈴流為25 Hz,電壓有效值是90±15 V的正弦波,通過二極管組成的整流器整流后,進入電壓比較器LM311。當鈴流電壓上升到60 V以上的時候,LM311比較器就會輸出高電平。反相后,用來觸發(fā)單片機的外中斷。仿真波形略——編者注。[!--empirenews.page--]
2.2 線路切換及后備電源
當檢測到鈴流后,單片機應立即把電話機與外線電話線路斷開,防止電話響鈴。因為話機可能存有信息,所以應繼續(xù)為話機供電,以保證話機信息不丟失。同時,電源也為系統(tǒng)設置復用話機鍵盤供電。
如圖4所示,使用一個雙刀雙擲繼電器進行線路切換。常閉觸點連接外線,常開觸電連接后備電源。LM317接成電流反饋形式,構成一個恒流源為話機供電。
2.3 來電解碼電路
來電解碼電路如圖5所示,解碼芯片采用盛群半導體公司的集成解碼芯片HT9032。它著眼于Type I或On—hook caller ID的應用,符合Bellcore(Type I)及ITU—IV.23的規(guī)范。HT9032整合了FSK解調器于其芯片中,并以低耗電量及價格的優(yōu)勢等見長。芯片將解碼以1 200波特率通過異步串行口發(fā)送至單片機。
2.4 摘掛機檢測及DTMF解碼電路
當系統(tǒng)黑名單設置時,會復用話機鍵盤,因此需要對話機按鍵的DTMF撥號解碼,得到相應的按鍵鍵值,送由單片機處理。同時,要對話機狀態(tài)進行檢測,以及時通知單片機進行解碼。DTMF解碼采用盛群半導體公司的HT9170B集成解碼芯片。摘掛機檢測及DTMF解碼電路如圖6所示。
摘掛機檢測使用了電壓比較器。根據(jù)我國電話網(wǎng)標準,掛機狀態(tài)時電話網(wǎng)電壓在24 V以上,摘機時在10 V以下,用電壓比較器比較電壓,判斷話機狀態(tài)。
2.5 模擬掛機電路
模擬掛機電路如圖7所示。當TAKEUP為高電平時,T1導通;當TAKEUP為低電平時,T1截止。因此T1就是一個受單片機I/O口控制的開關,可以通過單片機模擬摘掛機。
2.6 單片機及顯示部分
單片機采用NXP公司的80C51內核P89C668。P89C66單片機內帶64 KB Flash存儲器,8KB RAM。顯示電路采用的是128×64點陣LED屏。
2.7 系統(tǒng)電源
電話機后備電源需要24 V供電,而其他數(shù)字電路需要5 V供電,若采用線性穩(wěn)壓則損耗較大,故采用DC-DC芯片將24 V電壓降為5 V,為數(shù)字電路供電。電源電路略——編者注。
[!--empirenews.page--]
3 μC/OS硬件層驅動程序設計
3.1 異步串行口驅動程序
當使用中斷模式時,從接收移位寄存器接收到一個完整的字節(jié),并將數(shù)據(jù)送入數(shù)據(jù)輸入寄存器,產(chǎn)生一個中斷。中斷處理程序從端口讀入字節(jié),清除中斷源。這時,可以處理ISR收到的字節(jié),或者將字節(jié)送入緩沖區(qū)由后臺處理,緩沖區(qū)大小依賴于后臺進程控制CPU處理信息的速度。從串行端口捕捉數(shù)據(jù)時,常用一種被稱作環(huán)形緩沖區(qū)的專用緩沖區(qū)。
輸入數(shù)據(jù)的響應依賴于后臺進程的執(zhí)行速度。如果是實時內核,則處理輸入數(shù)據(jù)的速度就與ISR接收不處理的速度差不多。為此,環(huán)形緩沖區(qū)的管理加入了信號量說明:
①應用程序等待信號量。
②接收到一字節(jié)后,ISR從串行端口讀入字節(jié)。
③將接收到的字節(jié)送入環(huán)形緩沖區(qū)。
④ISR釋放一個信號量,通知任務已經(jīng)接收到一字節(jié)。
⑤信號量有效,等待任務準備開始運行。ISR完成后,內核決定等待任務是否成為優(yōu)先級最高的任務。如果是,并且內核為可剝奪型內核,則恢復等待字節(jié)的任務。該任務從環(huán)型緩沖區(qū)取出數(shù)據(jù),并執(zhí)行相關操作。
3.2 基于μC/OS—II的串行口接收驅動
單片機對串口的支持僅僅是當數(shù)據(jù)送入SBUF時開始移位,但收到一個完整的字節(jié)后產(chǎn)生中斷,通知用戶進行讀操作。在P89C668中,串行口并沒有設計緩沖區(qū),接收移位寄存器直接將數(shù)據(jù)送到接收SBUF,如果沒有及時從接收SBUF中取出,前一字節(jié)就會丟失。如果沒有驅動程序的支持,應用程序必須一字節(jié)一字節(jié)地接收數(shù)據(jù),不但浪費時間,而且對應用程序的編制將產(chǎn)生極大影響。所以,在使用串口的時候,串口驅動程序是必須有的,通過驅動程序,可以大大簡化應用程序的編寫。
針對P89C668片內UART和μC/OS—II的特性,設計了分層明確的驅動模型,串口接收分層驅動結構圖略——編者注。
任務在對環(huán)形緩沖區(qū)進行操作的時候,通過等待信號量,確定緩沖區(qū)是否允許操作。同時,中斷服務子程序通過釋放信號量來通知任務可以對緩沖區(qū)進行操作,大大提高了任務的響應時間。
4 系統(tǒng)軟件設計
根據(jù)硬件構成,系統(tǒng)軟件可分為來電解碼、顯示、鍵盤、判決、存儲幾大模塊。模塊在μC/OS—II的調度之下運行。
防火墻在值守狀態(tài)時,各模塊處于掛起態(tài)。當系統(tǒng)檢測到鈴流,將運行來電解碼模塊,并將解得的號碼通知μC/OS—II。μC/OS—II將通過判決模塊判斷來電屬性,執(zhí)行相應動作。程序流程如圖8所示。
結語
本文設計了基于μC/OS和80C51單片機的固話來電防火墻。介紹了電話機的基本工作原理,對硬件主要模塊進行了詳細地分解分析。對軟件基本流程和設計思路進行了闡述。整個系統(tǒng)通過了實際產(chǎn)品的最終驗證,達到設計要求。