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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)和MODEM接口及遠(yuǎn)程數(shù)據(jù)傳輸

          單片機(jī)和MODEM接口及遠(yuǎn)程數(shù)據(jù)傳輸

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

          單片機(jī)和MODEM接口及遠(yuǎn)程數(shù)據(jù)傳輸
          圖3 現(xiàn)場數(shù)據(jù)采集器的程序流程圖
          4.1 通訊波特率
          8251 的通訊波特率取決于RXCLK和TXCLK的時(shí)鐘輸入,在異步方式中,RXCLK,TXCLK可以是波特率,也可以是波特率的16 或64倍.這由8251控制字中的波特率因子來決定,在本系統(tǒng)設(shè)計(jì)中,設(shè)波特率因子為異步X16,即RXCLK,TXCLK是傳輸波特率的16倍.從圖2可以看出,RXCLK,TXCLK由8155 的TMROUT給出, 而8155 的TMRIN為系統(tǒng)時(shí)鐘fosc的1/6,因此選擇波特率的關(guān)鍵就是確定8155定時(shí)器的時(shí)間常數(shù).如果將8155 的定時(shí)器設(shè)為連續(xù)方波輸出,那么8155 定時(shí)器的時(shí)間常數(shù)N和定時(shí)器輸入頻率fTMRIN,輸出頻率fTMROUT的關(guān)系為:fTMROUT=fTMRIN/N,設(shè)8251的分頻系數(shù)為16,則傳輸波特率可有下式計(jì)算:
          波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)
          本系統(tǒng)選用頻率為11.0592MHz 的晶振,fosc為1.0592MHz, 若8251 采用2400Hz的波特率來傳輸數(shù)據(jù),則8155的定時(shí)器常數(shù)N為:
          N=11.0592X106/(2400X16X6)=48=30H
          按照以上分析,則8155,8251 初始化編程如下:
          void initialize rs(void)
          {
          U8155_IO=0xc0; /*8155命令字初始化*/
          U8155_TO=0x30;/*送8155定時(shí)器常數(shù)低字節(jié)*/
          U8155_TH=0x40; /*送8155定時(shí)器常數(shù)高字節(jié)*/
          U8251_C=0x4e; /* 方式控制字初始化*/
          U8251_C=0x37;
          }

          4.2 遠(yuǎn)程設(shè)置主叫呼叫號(hào)碼
          在本系統(tǒng)中,當(dāng)關(guān)鍵數(shù)據(jù)發(fā)生越限變化時(shí),現(xiàn)場數(shù)據(jù)采集器能夠自動(dòng)呼叫監(jiān)控中心,而被呼叫的電話號(hào)碼卻不能夠存儲(chǔ)在程序的ROM中, 原因有兩條:第一:監(jiān)控中心的電話號(hào)碼可能會(huì)變更;第二:不同的用戶被呼叫的電話號(hào)碼不一樣; 而在現(xiàn)場數(shù)據(jù)采集器上設(shè)計(jì)一片EEPROM 也不是最好的方案;解決這一問題的最佳方法是將此電話號(hào)碼存儲(chǔ)在 中, 那么如何實(shí)現(xiàn)呢?可用前面提到的ATZ=X(X為電話號(hào)碼) 命令進(jìn)行遠(yuǎn)程設(shè)置,當(dāng)監(jiān)控中心需要修改這個(gè)電話號(hào)碼時(shí), 就呼叫現(xiàn)場數(shù)據(jù)采集器,并將此電話號(hào)碼傳輸給數(shù)據(jù)采集器,然后由數(shù)據(jù)采集器自動(dòng)用ATZ=X(X為電話號(hào)碼)命令將此號(hào)碼存儲(chǔ)在 中.

          4.3 主叫方式
          當(dāng)現(xiàn)場數(shù)據(jù)采集器采集到的關(guān)鍵數(shù)據(jù)發(fā)生越限變化時(shí),現(xiàn)場數(shù)據(jù)采集器便利用AT指令A(yù)TDS主動(dòng)撥打存儲(chǔ)在 中的電話號(hào)碼來呼叫監(jiān)控中心,并將關(guān)鍵數(shù)據(jù)打包傳送給監(jiān)控中心,在監(jiān)控中心收到信息包后,系統(tǒng)便可進(jìn)行存儲(chǔ)和分析,以供值班人員判斷并做出處理.

          4.4 被叫方式
          當(dāng)監(jiān)控中心需要獲得現(xiàn)場數(shù)據(jù)時(shí), 可以主動(dòng)撥號(hào)呼叫現(xiàn)場數(shù)據(jù)采集器, 在圖2中, 的P1.1在檢測到預(yù)定次數(shù)的振鈴信號(hào)時(shí)發(fā)出MODEM應(yīng)答指令A(yù)TA,并在延時(shí)等待MODEM 連通以及雙方握手成功后, 由監(jiān)控中心向現(xiàn)場數(shù)據(jù)采集器發(fā)出請求發(fā)送數(shù)據(jù)指令.現(xiàn)場數(shù)據(jù)采集器收到指令后將實(shí)時(shí)變化的動(dòng)態(tài)數(shù)據(jù)傳送給監(jiān)控中心, 以使監(jiān)控中心隨時(shí)中斷對數(shù)據(jù)接收, 并向現(xiàn)場數(shù)據(jù)采集器發(fā)出掛機(jī)指令.現(xiàn)場數(shù)據(jù)采集器在收到掛機(jī)指令后停止發(fā)送數(shù)據(jù)并掛機(jī).

          4.5 存在問題及解決方法
          本系統(tǒng)剛開始設(shè)計(jì)時(shí),8251 的復(fù)位輸入端和CPU的復(fù)位輸入端是連接在一起,這樣設(shè)計(jì)曾出現(xiàn)過8251不能可靠復(fù)位的問題. 后改為靠的P1.0 給8251發(fā)復(fù)位脈沖,圖2 所示,這樣,就可根據(jù)軟件抗干擾的需要隨時(shí)復(fù)位8251,用C51編寫的復(fù)位程序如下:
          void reset_8251(void)
          {
          P1^0=1;
          ACC=0;
          while(--ACC);
          P1^0=0;
          }

          5 結(jié)論
          實(shí)踐證明,該系統(tǒng)和MODEM 接口具有電路簡單,成本低,可靠性高的特點(diǎn).在實(shí)際應(yīng)用中取得了良好效果.


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();