登录站点

用户名

密码

单片机和MODEM接口及远程数据传输

已有 186 次阅读  2013-04-16 14:50   标签单片机  数据  接口 

摘要:介绍了一种以W78E52单片机为控制核心和调制解调器 (MODEM )接口进行远程数据采集与传送的实用电路。该电路结构简单 ,可靠性高 ,控制方便。文中讲述了MODEM的AT指令描述以及用单片机控制MODEM的方法,并结合系统功能及原理给出了主程序流程图。

){5O0Uvd5b-}E44606

7U'L?:p_ Vf44606 电子园51单片机学习网Rn;sD] @

电子园51单片机学习网/D-SxB$~8C

    随着自动化程度的不断提高,对现场数据远程采集与传输的要求也日益提高,在电话通讯网络相当普及的今天,最方便最灵活的方法就是采用MODEM(调制解调器)并借助于现有的模拟公用电话交换网进行数据传输,经过几年的研究,笔者开发了一种在单片机控制下通过公用电话交换机网络做载体的数据传输系统,这种数据传输系统不受时间与地域的限制,并可随时实时追踪现场资料的变化情况,从而为远程故障的诊断和排除提供了便利。

6@Np4O&g%T\h]R44606 电子园51单片机学习网s+Lg`'@0b[ C


f4[$n%S6u*\2\?44606    由于目前国内有关单片机和MODEM的接口资料很少,所以,本文主要就单片机和MODEM接口及如何利用AT命令来控制MODEM 做些介绍。

3q Q6]#e o6AM+hG44606 电子园51单片机学习网Y H}Ts Vw)Pj

 

1]"z.ab$KU44606

KM,Oj E+i5{r@ U446061 系统组成

Qm+~+B/g"PX d$b44606

1han-KH-RQ%O44606电子园51单片机学习网~ z;]1Q9P1VB4d:v:ls
    图1 所示为该远程数据采集系统的系统组成图,整个系统主要由现场数据采集器和监控中心两部分组成,现场数据采集器负责将所采集到的数据进行预处理后打包, 并通过现场调制解调器MODEM、公用电话网和监控中心的MODEM 将数据发送到监控中心。然后监控中心将接收到的数据进行处理、显示、存储和分析,并根据需要向现场发送控制指令,由于监控中心采用计算机与MODEM 直接相连的方式, 因此硬件接口比较简单, 而软件编写不是本文讨论的重点,不再赘述。系统有两种工作方式:即监控中心呼叫现场请求发送数据和现场呼叫监控中心主动发送数据。
&n.r#@9_T:G&H1n C2P44606 电子园51单片机学习网!Yug yA%T+j0qx

电子园51单片机学习网oZ,S7m2E8u#xC


5LbSo+~9e1}44606图1 系统组成图电子园51单片机学习网6g;J-xBq

电子园51单片机学习网3@{(pc1fn&I

2 MODEM 命令

n%pX%CsfyEF44606 电子园51单片机学习网H!?5l~#H~+ZL


^JG{)rG HL}44606
    由于MODEM 是将数据通过公用电话网进行远程发送和传输的桥梁,这里先将MODEM 的功能及用法做一介绍"MODEM 是“调制解调器”的英文缩写,所谓调制,就是将“0”和“1”的数字信号变成不同的频率信号,调制到载波频率上,并利用电话线进行模拟信号的传送, 解调是调制的反过程, 即将载波频率上的频率信号解调成与其对应的数字信号,传送至终端控制器。

dd"p,_he@VX44606

vie.o7mgn};u44606电子园51单片机学习网ZTgB?%v }C
    目前,我们在市场上所见到的MODEM 都用贺氏兼容的指令集来管理和设定MODEM 的各项操作和通讯功能,而一般这些指令皆以AT为前置码,所以称这些指令为“AT指令”。下面介绍几个常见的MODEM 指令,这些指令都以回车(RETURN)结尾。电子园51单片机学习网7x7GD(J.mX[}l;_%f$O

电子园51单片机学习网8n/_ lUcun9G.i;W


$l+X*rzK.z)Pg s44606
fsh$ZK\44606ATA:手动应答指令,强迫MODEM 摘机并检测载波;
t4I N]5|Iz!M4~E44606ATE0: 指令不回应,即向MODEM 发送的指令不在终端回显;
;b)[0A"?I Bx44606ATV0: MODEM 以数字形式回应信息,即MODEM 收到指令后,以数字形式返回结果码;
;no[n.jB44606AT&F:参数恢复为出厂值;电子园51单片机学习网p6m.KO%F3rq0]#O
AT&D0:忽略DTR信号;
-N1TRH"sIs44606AT&S0:将DSR信号设定为ON;电子园51单片机学习网,K4Z.l b3n
ATD:发出拨号指令;
6T |;F.}Gl^"Sl44606AT&W0:将MODEM 目前的参数状态存储在参数表0 中;
V:h#p A^'rE44606AT&Y0:当MODEM 初始上电时,调用存储的参数表0;电子园51单片机学习网5EH$X Q$X
ATZ0: 复位MODEM 并启用存储的第0组参数表;
@S*@ B R44606AT&Z=X:将电话号码X存储在MODEM 的内部存储器中;
~!jRgxN(w0LSU44606ATDS:拨出MODEM 预存储的电话号码.电子园51单片机学习网:|n|G8yW0C l

G1[%`%u,F44606那么,单片机如何利用这些指令来操作MODEM呢?下面以发送指令ATA为例来加以说明,程序采用C51编写,该程序只给出了相关的部分,
sN2RW/@!k+Z Q;zq44606#include <reg52.h>
)YD,|PYxGPZ44606#include <absacc.h>电子园51单片机学习网bL H1j&o6W!S/A
#define U8251_C XBYTE[0xfd00]电子园51单片机学习网kk vla0oy
/* 定义8251 控制/状态字地址*/
0u#@0v+O1c:e N+F4N44606#define U8251_D XBYTE[0xfc00]电子园51单片机学习网 N'MIp.[0K d(_
/*定义8251 数据缓冲区地址*/电子园51单片机学习网x E+c$n)A
unsigned char code ATA[4]={'A','T','A',0x0d};电子园51单片机学习网2w e/YO9RP K*d
/*0x0d为回车(return)控制符*/电子园51单片机学习网Z/l"J7uoF)W6o
void send-code (unsigned char code *send_addr,
KA(P%us.r8F5zR44606unsigned char send_sum);
b+]K*^y:g+z+xA44606/*发送函数声明,形式参数为发送
x@'U5l:r |/F w b44606首地址和发送字符个数*/
1}~-H8Qm44606void main()
&q#KvB*` k44606{
"[e xP#`44606 ……
y,X-z)p-H;e:J44606 send_code(ATA,4); /*发送ATA应答命令*/
$\.[s|$IQ|44606 ……电子园51单片机学习网&Jy/HTj(bI Tp
}

4?7ueD,@d9X'I44606

!P/o&S9}@)Y A44606void send_code(unsigned char code *send_addr,
NN(H#hp ndk44606unsigned char send_sum)
HQe/p$t%}/@g44606{电子园51单片机学习网g"sLz ymF
  do{
b0YIv%d3N44606    while((U8251_c&0x05)!=0x05);
:J`9L m;~}X1[44606        U8251_D=*send_addr;电子园51单片机学习网5wz-ZiI u"F
    send_addr++;电子园51单片机学习网p9I:bEw*Y]uL
    }while(--send_sum);
{ J%]{8P[F4bl4w44606}电子园51单片机学习网Y a"}!_3Vhq

电子园51单片机学习网%QX|S H

    为了单片机对MODEM 的控制和操作,对本系统设计中的MODEM 做了如下初始化:
L(@zCC0oo z,F44606AT&FE0V0&D0&S0&Y0&W0电子园51单片机学习网0HLFi;j


v*^ A9sUv44606 电子园51单片机学习网"C i)Cd Vt C$x*Fu


l l?Rfo5@446063 接口电路电子园51单片机学习网 Yr.V"f,^.Ln:R


Dn8j \],H44606电子园51单片机学习网1K J LI7M
    图2 为该现场数据采集系统中单片机和MODEM的接口电路图, 单片机选用Winbord(华帮)公司生产的高性能低功耗单片机W78E52B,它采用80C31内核,在指令上与MCS-51完全兼容,内含8k的电可擦除MTP ROM(Multiple-Time Programmable ROM).其内部串口能和其它有串口的通讯设备一起进行数据采集(这部分在图2中没画出);电子园51单片机学习网;Mu^I/?S2v/D;[ l


:CQs0Bnhr44606电子园51单片机学习网^Vkh/Lt!zK#C8[!p
 
Xw C x1MlB,Tv44606图2 单片机和MODEM 的接口电路电子园51单片机学习网)H;f$Tck/@}


7U'V8x U4n"v-n]44606
%O OZ\"L o6`&Q44606    考虑到所采集的数据较多,故扩展了一片8155 作为外部数据存储器,并兼做并行数据采集接口,其内部14 位定时器作为分频器使用;另扩展的一片8251 用来和MODEM 接口,8251的内部工作时序,发送器时钟和接收器时钟需要外部输入,在设计中,单片机提供的ALE信号作为其外部输入,因而无需单独设计分频器,由于在单片机访问外部存贮器时, ALE要丢失一个周期,因而采用图2所示的方法,可充分利用系统资源,根据接收时钟输入RXCLK和发送时钟输入TXCLK的不同,8251 的发送波特率和接收波特率可以不同,在本系统中,发送波特率和接收波特率相同,都由8155定时器分频输出TMROUT供给.发送数据可根据系统要求在主程序中完成,接收数据缓冲区请求输出RXRDY经74LS02反向后接78E52B的中断输入INT0,接收数据采用中断方式控制,系统设计时忽略了DSR信号, 因而在图2 中将其直接接地;

P-\H l2z+A'XO&n{Z {S44606 电子园51单片机学习网2c+C\3SgP"NNW&Wyt


(T's }pR1zPpi44606    RS232 接口电平转换电路采用一片具有五对输入和输出的MSX238,它自带电荷泵,采用单5伏电源,只用一片便可提供本系统所有RS232电平的驱动与转换.电子园51单片机学习网b*jG.\ w(g V


WZ k+pw0]Vsdpa#T44606 

G'{s l/jI1v44606

v1rb s!G9t9M8J A446064 现场数据采集器的功能及原理

^,p7Ho*Z Nl44606

_4[2TN rq:Rwm44606电子园51单片机学习网K6p4{9y jOB
    现场数据采集器有两种工作方式, 即主叫方式和被叫应答方式.主叫方式就是现场数据采集器主动呼叫监控中心;被叫应答方式是在现场数据采集器收到监控中心的呼叫振铃后响应应答指令.另外,现场数据采集器具有远程设置主叫呼叫号码的功能,其软件编制流程图如图3 所示.电子园51单片机学习网zp5j v,k'q1^
 电子园51单片机学习网E-F*Q8u.V
图3 现场数据采集器的程序流程图

uDF"QY44606 电子园51单片机学习网-lT[3te3f1v

电子园51单片机学习网'S[)RD4N%F |2sg|
4.1 通讯波特率电子园51单片机学习网yvKE9z i1`F

电子园51单片机学习网Os:U'g*Y{ jF


1Z!Ms0f5P(oV44606    8251 的通讯波特率取决于RXCLK和TXCLK的时钟输入,在异步方式中,RXCLK,TXCLK可以是波特率,也可以是波特率的16 或64倍.这由8251控制字中的波特率因子来决定,在本系统设计中,设波特率因子为异步X16,即RXCLK,TXCLK是传输波特率的16倍.从图2可以看出,RXCLK,TXCLK由8155 的TMROUT给出, 而8155 的TMRIN为系统时钟fosc的1/6,因此选择波特率的关键就是确定8155定时器的时间常数.如果将8155 的定时器设为连续方波输出,那么8155 定时器的时间常数N和定时器输入频率fTMRIN,输出频率fTMROUT的关系为:fTMROUT=fTMRIN/N,设8251的分频系数为16,则传输波特率可有下式计算:电子园51单片机学习网VNg7w"kyf


aoY^FE"J44606电子园51单片机学习网1M!qs5\Mj
波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)

o4i3seId B44606

[oP.mXt4a8f44606电子园51单片机学习网YA^D9`#vh5[H
    本系统选用频率为11.0592MHz 的晶振,fosc为1.0592MHz, 若8251 采用2400Hz的波特率来传输数据,则8155的定时器常数N为:电子园51单片机学习网`T(T(u#Oo9n;xK

电子园51单片机学习网 G9T^X7B

电子园51单片机学习网+H7b:KH&_9G
N=11.0592X106/(2400X16X6)=48=30H
g$UH$l7K`3M44606按照以上分析,则8155,8251 初始化编程如下:电子园51单片机学习网C_!@ L(b
void initialize rs(void)
+n+cb2H.B4hMYN44606{
r kD6~'{44606  U8155_IO=0xc0; /*8155命令字初始化*/
.Or7Z4IHx44606  U8155_TO=0x30;/*送8155定时器常数低字节*/电子园51单片机学习网&a Q{*Ys"L
  U8155_TH=0x40; /*送8155定时器常数高字节*/电子园51单片机学习网4c[I)oHBs#Z0y[
  U8251_C=0x4e; /* 方式控制字初始化*/电子园51单片机学习网&vi/v%\;K5I7cR3R @n
  U8251_C=0x37;电子园51单片机学习网xf3r,H&h [\
}电子园51单片机学习网 KC0xvU U ?%cf{


;F!rZ3G8\8YC5t~44606电子园51单片机学习网8t_ XCi+~8X_T"|

6}b#Zo"~z!Cwo}446064.2 远程设置主叫呼叫号码电子园51单片机学习网;T:_8v&`&K3e SfX&j
    在本系统中,当关键数据发生越限变化时,现场数据采集器能够自动呼叫监控中心,而被呼叫的电话号码却不能够存储在程序的ROM中, 原因有两条:第一:监控中心的电话号码可能会变更;第二:不同的用户被呼叫的电话号码不一样; 而在现场数据采集器上设计一片EEPROM 也不是最好的方案;解决这一问题的最佳方法是将此电话号码存储在MODEM 中, 那么如何实现呢?可用前面提到的AT&Z=X(X为电话号码) 命令进行远程设置,当监控中心需要修改这个电话号码时, 就呼叫现场数据采集器,并将此电话号码传输给数据采集器,然后由数据采集器自动用AT&Z=X(X为电话号码)命令将此号码存储在MODEM 中.电子园51单片机学习网%Hl y(YZ0IVs

电子园51单片机学习网}zWdj~4RQR6R

电子园51单片机学习网L|2~Z ?/A(z

k,T,R"wT JX446064.3 主叫方式电子园51单片机学习网Ro i;SJT/mT8Z
    当现场数据采集器采集到的关键数据发生越限变化时,现场数据采集器便利用AT指令ATDS主动拨打存储在MODEM 中的电话号码来呼叫监控中心,并将关键数据打包传送给监控中心,在监控中心收到信息包后,系统便可进行存储和分析,以供值班人员判断并做出处理.

9^x6^{[ v2X44606 电子园51单片机学习网-@0U7}*?glh7I


jJ J2]Hh+BS44606电子园51单片机学习网n#l:xAY[[`o}
4.4 被叫方式
&?#d/IPHNuf m-Z44606    当监控中心需要获得现场数据时, 可以主动拨号呼叫现场数据采集器, 在图2中,W78E52 的P1.1在检测到预定次数的振铃信号时发出MODEM应答指令ATA,并在延时等待MODEM 连通以及双方握手成功后, 由监控中心向现场数据采集器发出请求发送数据指令.现场数据采集器收到指令后将实时变化的动态数据传送给监控中心, 以使监控中心随时中断对数据接收, 并向现场数据采集器发出挂机指令.现场数据采集器在收到挂机指令后停止发送数据并挂机.电子园51单片机学习网)CM6^]Z[,@O


-c;O5t\.YJO"R wA44606
*W6H%b!u[9D#wl;m44606
E},T+\ zG446064.5 存在问题及解决方法电子园51单片机学习网$\5MML#S ~Y


W `:c @*b,loq44606电子园51单片机学习网h&[VZ7c^c
    本系统刚开始设计时,8251 的复位输入端和CPU的复位输入端是连接在一起,这样设计曾出现过8251不能可靠复位的问题. 后改为靠W78E52的P1.0 给8251发复位脉冲,图2 所示,这样,就可根据软件抗干扰的需要随时复位8251,用C51编写的复位程序如下:
t'Nk#W!RD/Z;}W!C#w;]0g44606void reset_8251(void)
2[ s#[ZLW44606{
{ zv ?Hxf44606  P1^0=1;
&sfH z@0|)SkG44606  ACC="0";电子园51单片机学习网 `S&`j8bLA
  while(--ACC);电子园51单片机学习网5F/e#tew'f:Bjd&y0O6bZ
  P1^0=0;电子园51单片机学习网x(I4jm2m&Jww$?
}

b,F oS7S.h5j44606

U,_N2H4l^JQD:Y44606 

u7J0M CB/S44606

n1k$env u*s446065 结论电子园51单片机学习网4N#n&r A9[;Lov ~


&Jg UE?a$w7^&sh Q44606
O(s+v w%S6~}_44606    实践证明,该系统和MODEM 接口具有电路简单,成本低,可靠性高的特点.在实际应用中取得了良好效果.电子园51单片机学习网U&R1L5|t.{vg,V:J

上一篇: stm32应用例程 下一篇: 51单片机的实时操作系统电路设计

分享 举报