單片機(jī)和MODEM接口及利用AT命令來控制MODEM方案
4 現(xiàn)場數(shù)據(jù)采集器的功能及原理
現(xiàn)場數(shù)據(jù)采集器有兩種工作方式, 即主叫方式和被叫應(yīng)答方式。主叫方式就是現(xiàn)場數(shù)據(jù)采集器主動呼叫監(jiān)控中心;被叫應(yīng)答方式是在現(xiàn)場數(shù)據(jù)采集器收到監(jiān)控中心的呼叫振鈴后響應(yīng)應(yīng)答指令。另外,現(xiàn)場數(shù)據(jù) 采集器具有遠(yuǎn)程設(shè)置主叫呼叫號碼的功能,其軟件編制流程圖如圖3 所示。
圖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è)置主叫呼叫號碼
在本系統(tǒng)中,當(dāng)關(guān)鍵數(shù)據(jù)發(fā)生越限變化時(shí),現(xiàn)場數(shù)據(jù)采集器能夠自動呼叫監(jiān)控中心,而被呼叫的電話號碼卻不能夠存儲在程序的ROM中, 原因有兩條:第一:監(jiān)控中心的電話號碼可能會變更;第二:不同的用戶被呼叫的電話號碼不一樣; 而在現(xiàn)場數(shù)據(jù)采集器上設(shè)計(jì)一片EEPROM 也不是最好的方案;解決這一問題的最佳方法是將此電話號碼存儲在MODEM 中, 那么如何實(shí)現(xiàn)呢?可用前面提到的ATZ=X(X為電話號碼) 命令進(jìn)行遠(yuǎn)程設(shè)置,當(dāng)監(jiān)控中心需要修改這個(gè)電話號碼時(shí), 就呼叫現(xiàn)場數(shù)據(jù)采集器,并將此電話號碼傳輸給數(shù)據(jù)采集器,然后由數(shù)據(jù)采集器自動用ATZ=X(X為電話號碼)命令將此號碼存儲在MODEM 中。
評論