<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)多機(jī)通信在程控交換機(jī)中應(yīng)用

          單片機(jī)多機(jī)通信在程控交換機(jī)中應(yīng)用

          作者: 時(shí)間:2012-05-29 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/171402.htm

          國(guó)內(nèi)多機(jī)方向技術(shù)開發(fā)已有相當(dāng)長(zhǎng)時(shí)間,在智能化儀器、工業(yè)自動(dòng)控制、家用電器機(jī)電一體化等方面的成果尤為顯著。本文介紹AT 系列多機(jī)機(jī)中

          多機(jī)機(jī)將1 至2 條電話外線擴(kuò)展成4 繩路、12 個(gè)分機(jī)容量, 可以多部分機(jī)同時(shí)通話而互不干擾(可以內(nèi)外線混用); 分機(jī)可以為電話機(jī)、傳真機(jī)、答錄機(jī)和電腦等任何電訊產(chǎn)品。

          1 ,硬件結(jié)構(gòu)簡(jiǎn)介

          機(jī)應(yīng)用AT 系列, CPU 使用一個(gè)AT89C52 和四個(gè)AT89C51, 進(jìn)行多機(jī), 如圖1 所示。

          其中一個(gè)CPU(AT89C52)作為上位機(jī), 實(shí)現(xiàn)分機(jī)摘機(jī)/ 掛機(jī)查詢、分機(jī)振鈴等功能。四個(gè)CPU(AT89C51)作為下位機(jī), 各控制一根繩路, P10、P11 口作為CPU 地址, CPU 進(jìn)行查詢外線來電、分機(jī)掛線(內(nèi)線和外線)、分機(jī)撤線、分機(jī)撥號(hào)處理等工作, 提供內(nèi)線撥號(hào)音、回音鈴、忙音、證實(shí)音等信號(hào)音。0_CPU 和1_CPU各有一個(gè)繼電器J 控制開關(guān), 用于接通或切斷電話外線與繩路的連接。

          硬件線路保證每CPU 各施其職, 互不串?dāng)_。某分機(jī)一旦掛線后, 該分機(jī)的信號(hào)音、撥號(hào)等只受該繩路的CPU 控制, 而且分機(jī)摘機(jī)、掛線后撥號(hào)才有效; 撤線后, 該分機(jī)不再受繩路的CPU 控制。

          2, 多機(jī)通信協(xié)議

          在多機(jī)通信協(xié)議中定義上位機(jī)為主動(dòng), 下位機(jī)為被動(dòng)。

          2.1 上——下位機(jī)聯(lián)絡(luò)握手

          上位機(jī)向下位機(jī)廣播地址信息; 下位機(jī)收到地址信息后判斷是否是本機(jī)地址, 若不是, 不應(yīng)答; 若是, 向上位機(jī)發(fā)應(yīng)答信號(hào), 同時(shí)作好接收數(shù)據(jù)準(zhǔn)備。上位機(jī)收到應(yīng)答信號(hào)后, 判斷應(yīng)答信號(hào)是否正確。若不正確, 重發(fā)地址信號(hào); 若正確, 發(fā)送數(shù)據(jù)(命令代碼)。已握手的下位機(jī)接收數(shù)據(jù)(命令代碼)后, 執(zhí)行相應(yīng)功能或?qū)嵤┓?wù)。地址信息與命令代碼設(shè)置不重碼, 以便下位機(jī)能判別出。

          2.2 上位機(jī)向下位機(jī)發(fā)送命令類

          是否接外線(僅為0_CPU 和1_CPU)、有否請(qǐng)求服務(wù)、指定分機(jī)掛某一根內(nèi)/ 外線、指定分機(jī)撤線、釋放外線繼電器、編程密碼、長(zhǎng)途等級(jí)(內(nèi)部、市內(nèi)、國(guó)內(nèi)和國(guó)際)、長(zhǎng)途解鎖、要求繩路發(fā)內(nèi)線撥號(hào)音、內(nèi)線回音鈴、內(nèi)線忙音鈴或內(nèi)線證實(shí)音等。

          2.3 下位機(jī)向上位機(jī)請(qǐng)求服務(wù)

          下位機(jī)只有在上位機(jī)“有否請(qǐng)求服務(wù)”時(shí), 才可向上位機(jī)發(fā)送信息。發(fā)送信息有:本繩路有外電呼叫、撥打內(nèi)部分機(jī)、三方通話、代接外線、設(shè)置轉(zhuǎn)移功能(無條件轉(zhuǎn)移、遇忙轉(zhuǎn)移、無應(yīng)答轉(zhuǎn)移、撤消轉(zhuǎn)移)、設(shè)置外線來電振鈴方式(指定若干分機(jī)振鈴、全部分機(jī)振鈴、三機(jī)四組輪流振動(dòng)鈴、外線來電時(shí)指定分機(jī)振鈴)、設(shè)置長(zhǎng)途密碼 長(zhǎng)途等級(jí) 長(zhǎng)途解碼、強(qiáng)插監(jiān)聽等。

          3 ,多機(jī)程控交換機(jī)軟件設(shè)計(jì)方法

          程序設(shè)計(jì)思路是根據(jù)多機(jī)程控交換機(jī)工作過程而制定的, 采用上下位機(jī)包干控制, 充分利用CPU 資源, 實(shí)現(xiàn)程控交換機(jī)功能。

          3.1 上位機(jī)軟件設(shè)計(jì)思路

          根據(jù)多機(jī)程控交換機(jī)功能, 上位機(jī)程序分成初始化、摘機(jī)處理、掛機(jī)處理、發(fā)送命令、下位機(jī)請(qǐng)求服務(wù)處理、振鈴處理和定時(shí)器處理(包括看門狗)七個(gè)模塊, 程序模塊結(jié)構(gòu)如圖2 所示。

          初始化模塊主要是定義常數(shù)變量、變量單元、位標(biāo)志、緩沖區(qū)、中斷設(shè)置、定時(shí)器設(shè)置/ 啟動(dòng)、電話分機(jī)工作初始狀態(tài)等。

          摘機(jī)處理模塊主要判別是外線來電摘機(jī)、內(nèi)線來電摘機(jī)還是要撥打外線或內(nèi)線電話。

          掛機(jī)處理模塊比較復(fù)雜, 既有內(nèi)外線通話結(jié)束掛機(jī), 又有內(nèi)外線通話中止掛機(jī), 還有三方通話主叫機(jī)掛機(jī)和從叫機(jī)掛機(jī), 其它有中止撥打外線/ 內(nèi)線掛機(jī)、分機(jī)功能設(shè)置完畢掛機(jī)等。

          發(fā)送命令模塊主要是根據(jù)電話分機(jī)發(fā)生摘/ 掛機(jī)時(shí), 向下位機(jī)發(fā)送掛線/ 撤線命令、內(nèi)線撥號(hào)音等命令, 發(fā)送詢問下位機(jī)有否請(qǐng)求服務(wù)等命令。

          下位機(jī)請(qǐng)求服務(wù)處理模塊主要根據(jù)下位機(jī)CPU 請(qǐng)求, 完成外線來電、撥打內(nèi)線分機(jī)、分機(jī)功能設(shè)置等工作。

          振鈴處理模塊主要處理外線來電時(shí), 根據(jù)振鈴模式進(jìn)行分機(jī)振鈴、輪流振鈴等; 內(nèi)線呼叫分機(jī)時(shí), 根據(jù)分機(jī)轉(zhuǎn)移功能, 作相應(yīng)的振鈴處理; 被呼叫分機(jī)摘機(jī)后停止振鈴等功能。

          定時(shí)器處理模塊配合振鈴處理模塊產(chǎn)生各種振鈴計(jì)時(shí)以及看門狗定時(shí)常數(shù)刷新等。

          交換機(jī)相關(guān)文章:交換機(jī)工作原理



          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();