《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于單片機的程控交換機多機通信設(shè)計
基于單片機的程控交換機多機通信設(shè)計
OFweek電子工程網(wǎng)
摘要: 本文介紹單片機在程控交換機中的應(yīng)用,,使用五個ATMEL公司的AT89C52和AT89C51作為主控制器和從控制器,多機通訊,,硬件結(jié)構(gòu)清晰,,模塊化程序結(jié)構(gòu),。
Abstract:
Key words :

  摘 要:本文介紹單片機在程控交換機中的應(yīng)用, 使用五個ATMEL 公司的AT89C52 和AT89C51 作為主控制器和從控制器,, 多機通訊,, 硬件結(jié)構(gòu)清晰, 模塊化程序結(jié)構(gòu),。

  0 引言

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

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

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

  本程控交換機應(yīng)用AT 系列單片機, CPU 使用一個AT89C52 和四個AT89C51,, 進行多機通信,, 如圖1 所示。

  多機通信程控交換機結(jié)構(gòu)框圖

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

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

  2 多機通信協(xié)議

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

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

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

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

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

  2.3 下位機向上位機請求服務(wù)

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

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

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

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

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

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

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

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

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

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

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

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

  上位機程序流程框圖

   3.2 下位機軟件設(shè)計思路

  為便于編輯和管理,, 4 個下位機程序使用同一版本, 程序運行時根據(jù)地址作相應(yīng)的處理,。

  根據(jù)多機程控交換機功能,, 下位機程序分成初始化、連接外線查詢,、發(fā)送請求服務(wù),、外線來電中斷請求、分機撥號中斷請求和定時器中斷(包括看門狗)六個模塊,, 程序模塊結(jié)構(gòu)如圖3 所示,。

  下位機程序流程框圖

  初始化模塊主要是定義變量單元、位標(biāo)志,、緩沖區(qū),、中斷設(shè)置、定時器設(shè)置/ 啟動等,。

  連接外線查詢模塊在開機復(fù)位后查詢本CPU 是否接外線(2_CPU 和3_CPU 跳過),, 然后置標(biāo)志, 上位機通過問詢下位機知道程控交換機接幾根外線,。

  命令處理模塊主要完成上位機下達(dá)的命令, 命令有指定分機掛外線/ 內(nèi)線,、對掛內(nèi)線分機發(fā)送或停止內(nèi)線信號音(內(nèi)線撥號音,、內(nèi)線回音鈴、內(nèi)線忙音鈴或內(nèi)線證實音等),、指定分機撤外線/ 內(nèi)線等等,。

  發(fā)送請求服務(wù)模塊主要向上位機發(fā)送外線來電處理,、分機撥打內(nèi)線電話、分機設(shè)置功能等請求服務(wù),。

  外線來電中斷請求模塊在外線來電時(0_CPU 和1_CPU),,向CPU 請求中斷。CPU 響應(yīng)中斷后,, 首先判斷是否干擾信號,, 確認(rèn)為外線來后, 豎立外線來電標(biāo),。當(dāng)上位機查詢下位機有否請求服務(wù)時,, 向上位機發(fā)送外線來電服務(wù)請求。為防外線來電中止,,下位機CPU 發(fā)送請求后即清除外線來電標(biāo),。上位機在送出分機振鈴后一秒鐘內(nèi), 如分機未摘機,, 而下位機又沒發(fā)來新的外線來電請求服務(wù),, 立馬中止振鈴。

  分機撥號中斷請求模塊在分機撥號后,, 向CPU 請求中斷,。

  CPU 響應(yīng)中斷后, 根據(jù)所撥號碼,, 產(chǎn)生對應(yīng)請求服務(wù)代碼,。上位機收到請求服務(wù)后, 對其進行譯碼,, 作相應(yīng)處理,。如分機是掛外線, 除判別該分機長途等級外,, 對撥號不作任何處理,。分機在掛線情況下, 撥號才有中斷請求信號產(chǎn)生,, 這由硬件保證,。

  定時器處理模塊主要產(chǎn)生450 方波信號, 產(chǎn)生各種內(nèi)線鈴聲所需脈沖信號以及看門狗定時常數(shù)刷新等,。

  上下位機源程序限于篇幅,, 不作介紹。

  4 編程中特點

  由于多機程控交換機上位機CPU 要對四個下位機CPU,, 而分機摘/ 掛機狀態(tài)采用查詢方式,, 又要處理分機振鈴等, 查詢過程中要采用抗干擾措施,, 防止CPU 誤判,、誤動作,。所以編程中要考慮整體時間分配, 以免延誤用戶通話,。

  上位機在查詢下位機有否服務(wù)請求時,, 采用輪流查詢法。在發(fā)送信息前又要與下位機握手,, 所以查詢時間較長,。當(dāng)下位機有服務(wù)請求時, 上位機馬上中止查詢下一CPU,, 為當(dāng)前下位機服務(wù),。

  為縮短上下位機通信時間, 下發(fā)代碼采用單字節(jié),, 按位定義,。如“D7”位表示掛線或撤線,“D6”位表示掛內(nèi)線或外線,,“D5,、D4”位表示發(fā)內(nèi)線撥號音、內(nèi)線回音鈴,、內(nèi)線忙音或內(nèi)線證實音,,“D3”~“D0”表示分機號。

  上發(fā)代碼采用多字節(jié),, 長短不同,, 這是由于多機程控交換機功能豐富多采, 下位機在上發(fā)代碼最后加一個結(jié)束符,。

  多機程控交換機功能較多,, 分機撥號中斷請求模塊要分成外線撥號、內(nèi)線撥號(包括代接,、轉(zhuǎn)接和三方通話)和功能設(shè)置三個小模塊,。為提高CPU 利用率, 分機撥號中斷請求模塊采用流水線作業(yè)方式,, 按一次鍵,, 模塊執(zhí)行一次。所以要保護好現(xiàn)場,,豎立相應(yīng)的標(biāo)志,, 保證分機撥號中斷請求模塊工作正常。當(dāng)某功能撥完后,, CPU 再將請求服務(wù)代碼送到發(fā)送緩沖區(qū),。

  5 結(jié)束語

  多機程控交換機可連接二根外線, 十二只內(nèi)部分機,, 四繩路通話容量,, 具有豐富的實用功能, 可不間斷連續(xù)工作,。分機之間可多對電話(最多四對八機)同時通話而彼此互不干擾,。分機可直撥外線、強插外線,、長途加鎖設(shè)置等,。外線來電響鈴方式有二種, 一為選擇某些分機振鈴,, 二為分機輪流振鈴,, 由1 號分機進行設(shè)置。分機可代撥,、代接,、征詢轉(zhuǎn)接和三方通話等。

  本文作者的創(chuàng)新點:上,、下位機CPU 串行通信發(fā)送采用查詢方式,, 接收采用中斷循環(huán)隊列緩沖區(qū)方式。多機程控交換機不使用擴展外RAM,, 上位機采用AT89C52,, 其內(nèi)RAM為256 字節(jié), 足夠CPU 工作所需,, 同時給硬件上分清上位機和下位機CPU 芯片帶來好處,, 一舉二得。

  多機程控交換機樣機已小批量投入某些公司,、企業(yè)使用,, 用戶反映程控交換機基本功能工作正常, 使用方便,, 由此說明多機程控交換機達(dá)到設(shè)計要求,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。