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