新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 語音數字記錄儀的電話接口

        語音數字記錄儀的電話接口

        作者: 時間:2009-04-09 來源:網絡 收藏

          電路與的通信通過四個信號線來實現,分別是STB選通、ASW應答、DATA數據、CLK時鐘。這種通信可以從遠程模塊向單向發送數據。

        3 軟件控制流程

          主程序流程圖如圖7所示。

        系統一直監測線路信號,在三次振鈴后接通。提示音通過8Ω電阻耦合到線路上后,就可以進行信號的通信。系統檢測線上的碼;同時檢測線路是否有忙音信號,判斷對方是否已掛機,若對方掛機則本地也掛機。在掛機后系統返回初始等待狀態;如果主叫方三次密碼輸入錯誤,則通知電話查詢模塊主動掛機;主叫方在接通電話以后長時間沒有輸入需要查詢的記錄時間,電路也會主動掛機。

          軟件首先對所用到的寄存器和存儲器進行初始化,然后進入節電模式。

          如果有振鈴信號,則通過中斷方式進行響應。振鈴3次后接通電話;對于異常情況,如振鈴只響過一次對方就已經掛機,則不響應。中斷處理程序中首先將中斷屏蔽掉(以避免同一次鈴流而產生幾次中斷),計時4s后打開中斷;如果超過8s仍然沒有下一次鈴流來觸發中斷,則清除計數器,跳轉到程序開始。累計振鈴3次后,關掉中斷,避免其他干擾信號打斷程序的正常運行。此后進入主程序。

          為了保證程序的實時性且不丟失數據,主程序為一個主循環。循環中根據輸入和標志位來判斷是否有DTMF數據需要接收,是否有數據需要發送,是否需要掛機。而數據的接收檢測、發送和忙音檢測是在定時中斷中來做。

          有忙音時,M982的輸出是一個0.35s±0.05s的方波。此時對方已經掛機,其他的任務已基本不需要占用時間,所以可以采取一種比較嚴格的檢測方法。本文在檢測到有忙音信號,即I/O3變低時,開始連續監測,每隔100μs檢測一次,如果連續100ms中有85ms均為低電平,即檢測1000次中至少有850次為低,則認為檢測到一次方波的低電平部分,然后延時200ms后再開始檢測高電平。在檢測到高以后,同樣監測100ms,然后再檢測低電平。一共檢測3個周期,如果檢測都通過,即認為收到一個合格的忙音信號,在掛機的同時通知記錄儀。

          在檢測到有DTMF信號時,即I/O4變為高電平時,設置接收標志位,在主程序中接收數據,并且緩存在RAM中。因為接收到的數據除了密碼,就是查詢時間,需要用FIFO的存儲方式,將順序輸入的數據發給記錄儀。在時鐘中斷服務程序中僅設置標志位,在主程序中讀取。

          如果有數據需要發送,電路首先在STB上給出信號;然后等待ASW線上的應答信號;在得到應答后,開始發送程序產生的時鐘信號,在時鐘信號的上升沿發送數據位,外圍電路在時鐘信號的下降沿接收數據。電路的傳送速率是100kbps。由于DTMF信號都只有四位數據,所以數據發送時定義了一個前導碼,即三個‘0’,一個‘1’,然后是數據。

          這個電路經過實際運行檢驗,具有電路可靠、使用靈活、成本低等特點。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 翁牛特旗| 阳城县| 从江县| 鲜城| 囊谦县| 道孚县| 讷河市| 东乡族自治县| 天津市| 浦东新区| 惠来县| 兰州市| 延边| 噶尔县| 仪征市| 抚顺市| 海城市| 咸阳市| 威海市| 宁陵县| 安泽县| 布拖县| 洪洞县| 昭觉县| 和顺县| 合江县| 和平区| 渝中区| 建德市| 潼关县| 宝清县| 崇州市| 白朗县| 武邑县| 乐清市| 崇明县| 广丰县| 达州市| 卫辉市| 孟州市| 和龙市|