單片機和MODEM接口及利用AT命令來控制MODEM方案
void main()
{
……
send_code(ATA,4); /*發(fā)送ATA應(yīng)答命令*/
……
}
void send_code(unsigned char code *send_addr,
unsigned char send_sum)
{
do{
while((U8251_c0x05)!=0x05);
U8251_D=*send_addr;
send_addr++;
}while(--send_sum);
}
為了單片機對MODEM 的控制和操作,對本系統(tǒng)設(shè)計中的MODEM 做了如下初始化:
ATFE0V0D0S0Y0W0
3 接口電路
圖2 為該現(xiàn)場數(shù)據(jù)采集系統(tǒng)中單片機和MODEM的接口電路圖, 單片機選用Winbord(華幫)公司生產(chǎn)的高性能低功耗單片機W78E52B,它采用80C31內(nèi)核,在指令上與MCS-51完全兼容,內(nèi)含8k的電可擦除MTP ROM(Multiple-Time Programmable ROM)。其內(nèi)部串口能和其它有串口的通訊設(shè)備一起進(jìn)行數(shù)據(jù)采集(這部分在圖2中沒畫出);
圖2 單片機和MODEM 的接口電路
考慮到所采集的數(shù)據(jù)較多,故擴(kuò)展了一片8155 作為外部數(shù)據(jù)存儲器,并兼做并行數(shù)據(jù)采集接口,其內(nèi)部14 位定時器作為分頻器使用;另擴(kuò)展的一片8251 用來和MODEM 接口,8251的內(nèi)部工作時序,發(fā)送器時鐘和接收器時鐘需要外部輸入,在設(shè)計中,單片機提供的ALE信號作為其外部輸入,因而無需單獨設(shè)計分頻器,由于在單片機訪問外部存貯器時, ALE要丟失一個周期,因而采用圖2所示的方法,可充分利用系統(tǒng)資源,根據(jù)接收時鐘輸入RXCLK和發(fā)送時鐘輸入TXCLK的不同,8251 的發(fā)送波特率和接收波特率可以不同,在本系統(tǒng)中,發(fā)送波特率和接收波特率相同,都由8155定時器分頻輸出TMROUT供給。發(fā)送數(shù)據(jù)可根據(jù)系統(tǒng)要求在主程序中完成,接收數(shù)據(jù)緩沖區(qū)請求輸出RXRDY經(jīng)74LS02反向后接78E52B的中斷輸入INT0,接收數(shù)據(jù)采用中斷方式控制,系統(tǒng)設(shè)計時忽略了DSR信號, 因而在圖2 中將其直接接地;
RS232 接口電平轉(zhuǎn)換電路采用一片具有五對輸入和輸出的MSX238,它自帶電荷泵,采用單5伏電源,只用一片便可提供本系統(tǒng)所有RS232電平的驅(qū)動與轉(zhuǎn)換。
評論