工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->通信电路图->无线发射电路图->利用MODEM实现单片机与PC间的远程通信

利用MODEM实现单片机与PC间的远程通信

作者:Lamborghini时间:2009-09-21

  在单片机应用中,时常遇到与计算机通信的情况。通信距离较短时,加一个电平变换电路(如MAX232)就行了。但在远距离(大于2km)通信时,必须用调制解调器MODEM。一般资料介绍的单片机与MODEM间连接至少要用4~5个I/O口。笔者参考相关资料并经过实验后,只用了2个I/O口就可以使单片机与MODEM相连接,并进行远程通信,简化了单片机外围电路设计,节省了I/O口,提高了可靠性,减少了制作的难度,不过软件稍大。这里将此方法介绍给大家,供参考。

  外置MODEM的数据接口是25针阴插座,其引脚定义如附表。

  为了简化接口,需要做一根专用三线式MODEM连接电缆(如图1所示)。将MODEM端插头的{4}(RTS)、{5}(CTS)、{8}(CD)脚短接,{6}(DSR)、{20}(DTR)脚短接,即将MODEM的CD、CTS信号当成RTS信号送回MODEM,将DSR当成DTR信号送回MODEM。这样,MODEM与对方MODEM完成了信号握手后,可以直接进行从DTE到DTE的通讯(这里的DTE指一方的单片机和另一方的PC机)。当然,DTE必须在收到MODEM发来的CONNECT信号后才可以进入数据通信(最好再设置一个时间在1s以内的延时)。这样一来,对MODEM的控制就完全靠软命令来实现了(因为没有接相关的控制线)。

  使用前,应先预置好单片机一端MODEM的参数,以便编程。将MODEM接到电脑串口上,运行WIN95/98中的“超级终端”程序。然后键入AT&F回车,此时MODEM回应OK。如无OK回应,则要检查MODEM与电脑串口的连线及超级终端所用的串口是否正确。接着依次键入下列命令:

  ATE0↙(取消命令打字回显)

  ATV0↙(使用数字回应命令结果)

  ATS0=0↙(禁止MODEM自动应答呼叫)

  AT&W0↙(将配置写入0号内存,以便每次开机时自动调出)

  为了编写MODEM控制程序,必须对MODEM的控制有所了解。MODEM有命令交互和数据传输两种状态。在命令交互状态时,可用AT命令集让MODEM拨号、响应拨号、设置有关参数。此时MODEM从串口收到的所有字符作为对MODEM的命令处理,并不送到电话线上,而且MODEM会用数字代码或英文字串报告命令的执行情况(使用何种回应要看MODEM的设置)。在数据传输状态,所有从串口发到MODEM的字符都送到电话线路上。MODEM通电后处于命令状态,如果作为被叫方要响应呼入时,可用ATA命令来应答呼叫,握手信号完成后就进入数据传输状态。如果作为主叫方呼叫对方时,用ATDT×××××(×××××为对方电话号码)命令来拨叫对方,待对方应答,握手信号完成后也自动进入数据传输状态。在数据传输状态下,暂停串口发送2秒,再发“+++”(注意不要回车符),再暂停串口发送2秒,MODEM就自动返回命令状态了。

  下面举例说明MODEM的一些常用控制命令。

  1. ATDTW0127800000↙

  发起呼叫。拨号0,待二次拨号音后拨127800000。如不用拨0要外线可去掉W0。

  2. ATA↙

  命令MODEM应答远端MODEM的呼叫。如果双方MODEM握手成功,则进入数据传输状态。

  3.(暂停2秒)+++(暂停2秒),使MODEM从数据传输状态回到命令状态。

  4. ATH↙

  命令MODEM挂机。

  由于预先用ATV0设置了MODEM的响应为数字代码,因此有必要了解数据回应代码的含义。

  回送0时,OK,即命令执行完成。

  回送1x时,表示与对方完成握手信号,两MODEM连接于x速率,然后MODEM进入数据传输状态。

  回送2时,表示振铃,即有来电。

  回送3时,表示无载波,呼叫或应答不成功。

  据此,我们可以编写出单片机通过串口控制MODEM的程序了。这里笔者提供一段远程报警/监控程序,程序流程图如图2,硬件接线图如图3(此图未绘出单片机的复位、晶振、电源等电路)。

  

 

  

 

  



评论

EEPW网友 · 2009-12-10 22:10:35

写得很好,就是不完整,太可惜了!

技术专区