單片機和MODEM接口及遠程數(shù)據(jù)傳輸設(shè)計
波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)
本系統(tǒng)選用頻率為11.0592MHz 的晶振,fosc為1.0592MHz, 若8251 采用2400Hz的波特率來傳輸數(shù)據(jù),則8155的定時器常數(shù)N為:
N=11.0592X106/(2400X16X6)=48=30H
按照以上分析,則8155,8251 初始化編程如下:
void initialize rs(void)
{
U8155_IO=0xc0; /*8155命令字初始化*/
U8155_TO=0x30;/*送8155定時器常數(shù)低字節(jié)*/
U8155_TH=0x40; /*送8155定時器常數(shù)高字節(jié)*/
U8251_C=0x4e; /* 方式控制字初始化*/
U8251_C=0x37;
}
4.2 遠程設(shè)置主叫呼叫號碼
在本系統(tǒng)中,當關(guān)鍵數(shù)據(jù)發(fā)生越限變化時,現(xiàn)場數(shù)據(jù)采集器能夠自動呼叫監(jiān)控中心,而被呼叫的電話號碼卻不能夠存儲在程序的ROM中, 原因有兩條:第一:監(jiān)控中心的電話號碼可能會變更;第二:不同的用戶被呼叫的電話號碼不一樣; 而在現(xiàn)場數(shù)據(jù)采集器上設(shè)計一片EEPROM 也不是最好的方案;解決這一問題的最佳方法是將此電話號碼存儲在MODEM 中, 那么如何實現(xiàn)呢?可用前面提到的ATZ=X(X為電話號碼) 命令進行遠程設(shè)置,當監(jiān)控中心需要修改這個電話號碼時, 就呼叫現(xiàn)場數(shù)據(jù)采集器,并將此電話號碼傳輸給數(shù)據(jù)采集器,然后由數(shù)據(jù)采集器自動用ATZ=X(X為電話號碼)命令將此號碼存儲在MODEM 中。
4.3 主叫方式
當現(xiàn)場數(shù)據(jù)采集器采集到的關(guān)鍵數(shù)據(jù)發(fā)生越限變化時,現(xiàn)場數(shù)據(jù)采集器便利用AT指令ATDS主動撥打存儲在MODEM 中的電話號碼來呼叫監(jiān)控中心,并將關(guān)鍵數(shù)據(jù)打包傳送給監(jiān)控中心,在監(jiān)控中心收到信息包后,系統(tǒng)便可進行存儲和分析,以供值班人員判斷并做出處理。
4.4 被叫方式
當監(jiān)控中心需要獲得現(xiàn)場數(shù)據(jù)時, 可以主動撥號呼叫現(xiàn)場數(shù)據(jù)采集器, 在圖2中,W78E52 的P1.1在檢測到預定次數(shù)的振鈴信號時發(fā)出MODEM應(yīng)答指令ATA,并在延時等待MODEM 連通以及雙方握手成功后, 由監(jiān)控中心向現(xiàn)場數(shù)據(jù)采集器發(fā)出請求發(fā)送數(shù)據(jù)指令?,F(xiàn)場數(shù)據(jù)采集器收到指令后將實時變化的動態(tài)數(shù)據(jù)傳送給監(jiān)控中心, 以使監(jiān)控中心隨時中斷對數(shù)據(jù)接收, 并向現(xiàn)場數(shù)據(jù)采集器發(fā)出掛機指令?,F(xiàn)場數(shù)據(jù)采集器在收到掛機指令后停止發(fā)送數(shù)據(jù)并掛機。
4.5 存在問題及解決方法
本系統(tǒng)剛開始設(shè)計時,8251 的復位輸入端和CPU的復位輸入端是連接在一起,這樣設(shè)計曾出現(xiàn)過8251不能可靠復位的問題。 后改為靠W78E52的P1.0 給8251發(fā)復位脈沖,圖2 所示,這樣,就可根據(jù)軟件抗干擾的需要隨時復位8251,用C51編寫的復位程序如下:
void reset_8251(void)
{
P1^0=1;
ACC=0;
while(--ACC);
P1^0=0;
}
5 結(jié)論
實踐證明,該系統(tǒng)和MODEM 接口具有電路簡單,成本低,可靠性高的特點。在實際應(yīng)用中取得了良好效果.
分頻器相關(guān)文章:分頻器原理
評論