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

最新更新时间:2011-12-23来源: OFweek电子工程网关键字:单片机  MODEM接口  远程数据传输 手机看文章 扫描二维码
随时随地手机看文章

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

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

  1 系统组成

  图1 所示为该远程数据采集系统的系统组成图,整个系统主要由现场数据采集器和监控中心两部分组成,现场数据采集器负责将所采集到的数据进行预处理后打包, 并通过现场调制解调器MODEM、公用电话网和监控中心的MODEM 将数据发送到监控中心。然后监控中心将接收到的数据进行处理、显示、存储和分析,并根据需要向现场发送控制指令,由于监控中心采用计算机与MODEM 直接相连的方式, 因此硬件接口比较简单, 而软件编写不是本文讨论的重点,不再赘述。系统有两种工作方式:即监控中心呼叫现场请求发送数据和现场呼叫监控中心主动发送数据。

  

  图1 系统组成图

  2 MODEM 命令

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

  目前,我们在市场上所见到的MODEM 都用贺氏兼容的指令集来管理和设定MODEM 的各项操作和通讯功能,而一般这些指令皆以AT为前置码,所以称这些指令为“AT指令”。下面介绍几个常见的MODEM 指令,这些指令都以回车(RETURN)结尾。

  ATA:手动应答指令,强迫MODEM 摘机并检测载波;

  ATE0: 指令不回应,即向MODEM 发送的指令不在终端回显;

  ATV0: MODEM 以数字形式回应信息,即MODEM 收到指令后,以数字形式返回结果码;

  AT&F:参数恢复为出厂值;

  AT&D0:忽略DTR信号;

  AT&S0:将DSR信号设定为ON;

  ATD:发出拨号指令;

  AT&W0:将MODEM 目前的参数状态存储在参数表0 中;

  AT&Y0:当MODEM 初始上电时,调用存储的参数表0;

  ATZ0: 复位MODEM 并启用存储的第0组参数表;

  AT&Z=X:将电话号码X存储在MODEM 的内部存储器中;

  ATDS:拨出MODEM 预存储的电话号码。

  那么,单片机如何利用这些指令来操作MODEM呢?下面以发送指令ATA为例来加以说明,程序采用C51编写,该程序只给出了相关的部分,

  #include < P>

  #include < P>

  #define U8251_C XBYTE[0xfd00]

  /* 定义8251 控制/状态字地址*/

  #define U8251_D XBYTE[0xfc00]

  /*定义8251 数据缓冲区地址*/

  unsigned char code ATA[4]={‘A’,‘T’,‘A’,0x0d};

  /*0x0d为回车(return)控制符*/

  void send-code (unsigned char code *send_addr,

  unsigned char send_sum);

  /*发送函数声明,形式参数为发送

  首地址和发送字符个数*/

  void main()

  {

  ……

  send_code(ATA,4); /*发送ATA应答命令*/

  ……

  }

  void send_code(unsigned char code *send_addr,

  unsigned char send_sum)

  {

  do{

  while((U8251_c&0x05)!=0x05);

  U8251_D=*send_addr;

  send_addr++;

  }while(--send_sum);

  }

  为了单片机对MODEM 的控制和操作,对本系统设计中的MODEM 做了如下初始化:

  AT&FE0V0&D0&S0&Y0&W0

  3 接口电路

 

  图2 为该现场数据采集系统中单片机和MODEM的接口电路图, 单片机选用Winbord(华帮)公司生产的高性能低功耗单片机W78E52B,它采用80C31内核,在指令上与MCS-51完全兼容,内含8k的电可擦除MTP ROM(Multiple-Time Programmable ROM)。其内部串口能和其它有串口的通讯设备一起进行数据采集(这部分在图2中没画出);

 

  

  图2 单片机和MODEM 的接口电路

 

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

  RS232 接口电平转换电路采用一片具有五对输入和输出的MSX238,它自带电荷泵,采用单5伏电源,只用一片便可提供本系统所有RS232电平的驱动与转换。

 

  4 现场数据采集器的功能及原理

 

  现场数据采集器有两种工作方式, 即主叫方式和被叫应答方式。主叫方式就是现场数据采集器主动呼叫监控中心;被叫应答方式是在现场数据采集器收到监控中心的呼叫振铃后响应应答指令。另外,现场数据采集器具有远程设置主叫呼叫号码的功能,其软件编制流程图如图3 所示。

 

  

  图3 现场数据采集器的程序流程图

 

  4.1 通讯波特率

  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,则传输波特率可有下式计算:

  波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)

  本系统选用频率为11.0592MHz 的晶振,fosc为1.0592MHz, 若8251 采用2400Hz的波特率来传输数据,则8155的定时器常数N为:

  N=11.0592X106/(2400X16X6)=48=30H

  按照以上分析,则8155,8251 初始化编程如下:

  void initialize rs(void)

  {

  U8155_IO=0xc0; /*8155命令字初始化*/

  U8155_TO=0x30;/*送8155定时器常数低字节*/

  U8155_TH=0x40; /*送8155定时器常数高字节*/

  U8251_C=0x4e; /* 方式控制字初始化*/

  U8251_C=0x37;

  }

  4.2 远程设置主叫呼叫号码

  在本系统中,当关键数据发生越限变化时,现场数据采集器能够自动呼叫监控中心,而被呼叫的电话号码却不能够存储在程序的ROM中, 原因有两条:第一:监控中心的电话号码可能会变更;第二:不同的用户被呼叫的电话号码不一样; 而在现场数据采集器上设计一片EEPROM 也不是最好的方案;解决这一问题的最佳方法是将此电话号码存储在MODEM 中, 那么如何实现呢?可用前面提到的AT&Z=X(X为电话号码) 命令进行远程设置,当监控中心需要修改这个电话号码时, 就呼叫现场数据采集器,并将此电话号码传输给数据采集器,然后由数据采集器自动用AT&Z=X(X为电话号码)命令将此号码存储在MODEM 中。

  4.3 主叫方式

  当现场数据采集器采集到的关键数据发生越限变化时,现场数据采集器便利用AT指令ATDS主动拨打存储在MODEM 中的电话号码来呼叫监控中心,并将关键数据打包传送给监控中心,在监控中心收到信息包后,系统便可进行存储和分析,以供值班人员判断并做出处理。

  4.4 被叫方式

  当监控中心需要获得现场数据时, 可以主动拨号呼叫现场数据采集器, 在图2中,W78E52 的P1.1在检测到预定次数的振铃信号时发出MODEM应答指令ATA,并在延时等待MODEM 连通以及双方握手成功后, 由监控中心向现场数据采集器发出请求发送数据指令。现场数据采集器收到指令后将实时变化的动态数据传送给监控中心, 以使监控中心随时中断对数据接收, 并向现场数据采集器发出挂机指令。现场数据采集器在收到挂机指令后停止发送数据并挂机。

  4.5 存在问题及解决方法

  本系统刚开始设计时,8251 的复位输入端和CPU的复位输入端是连接在一起,这样设计曾出现过8251不能可靠复位的问题。 后改为靠W78E52的P1.0 给8251发复位脉冲,图2 所示,这样,就可根据软件抗干扰的需要随时复位8251,用C51编写的复位程序如下:

  void reset_8251(void)

  {

  P1^0=1;

  ACC=0;

  while(--ACC);

  P1^0=0;

  }

  5 结论

  实践证明,该系统和MODEM 接口具有电路简单,成本低,可靠性高的特点。在实际应用中取得了良好效果.

关键字:单片机  MODEM接口  远程数据传输 编辑:探路者 引用地址:单片机和MODEM接口及远程数据传输设计

上一篇:单片线性锂离子电池充电器IC设计与实现
下一篇:浅析如何选取激光功率计和能量计

推荐阅读最新更新时间:2023-10-18 16:16

51单片机矩阵式键盘的编程方法
根据电路原理图,键盘扫描方法是:行线P1O~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P1O-P13)全部输出低电平,此时读入列线数据,若列线全为高电平说明没有键接下,若有列线为低电平则调用延时程序来去除按键抖动。延时后再读入列线看是否有低电平,如果列线数据还是有低电平,说明确实有键接下,接下来便是确定键值。下面以第二行的S5键为例,看接下S5后我们应该怎么得到这个键值。当判定确实有键接下之后,将行线轮流置为低电平,根据读入列线的数据可以确定键值。首先,单片机将P1O置为低电平,P11~P13置为高电平,此时读出的列线数据全为高电平,说明第一行没有键接下;接着单片机将P11输出低电平,P1O、P12、P13置
[单片机]
51<font color='red'>单片机</font>矩阵式键盘的编程方法
基于89C51单片机的环境噪声测量仪的设计
环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关学校等需要对环境噪声进行测量和控制的场合。 1 声压级的测量机理 人耳的听阈一般是20m Pa (微帕),痛阈一般是200Pa(帕),其间相差107倍,这样宽广的声压范围很不易测量,而且人耳对声
[单片机]
基于89C51单片机的环境噪声测量仪
   1 引 言      环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关、学校等需要对环境噪声进行测量和控制的场合。 2 声压级的测量机理   人耳的听阈一般是20μPa,痛阈一般是200 Pa,其间相差107倍,这样宽广的声压范围很不
[单片机]
PIC单片机的学习——时钟的配置
一、概念 Fcy是CPU时钟,Fosc晶振频率。Fcy = Fosc/2,也就是CPU时钟是晶振频率的1/2。 二、寄存器的配置 例子如下: //系统时钟初始化 产生55.296M //11.0592M晶振 // Fosc= Fin*M/(N1*N2), Fcy=Fosc/2 // Fosc= 11.0592M*60/(2*3)=110.592Mhz for 11.0592M input clock // Fcy= Fosc/2 = 55.296MHZ PLLFBD = 58; //M=PLLFBD+2=60 CLKDIVbits.PLLPOST = 0; // N2=2*(PLLPOST
[单片机]
PIC单片机程序设计的基本格式
为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。 TITLE“This is……”;程序标题   ;程序说明   LIST P="16F84",F=1NHX8M   ;   include   -config_RC_Qsc &_WDT_0FF…   ;资源定义和变量定义   STATUS EQU 03   FSR EQ
[应用]
NSM全新LED驱动器简化系统复杂度并降低系统成本
  美国国家半导体公司(NSM)宣布推出型号为LM3942的具有动态电压调整功能的LED驱动器,它可同时准确高效地驱动两组独立的可调光LED灯串。LM3492驱动器是美国国家半导体PowerWise® 高能效产品系列中的一员,它可大幅提高系统效率,降低系统复杂度及汽车LCD背光应用的系统成本。   LM3492具有动态电压调整功能,可以利用升压转换器的反馈电压灵活调整LED的供电,确保最低的耗电等级从而优化系统效率。该驱动器内置三个MOSFET,有效简化了系统设计的复杂度并降低系统成本。 美国国家半导体LM3492 LED 驱动器——技术特性   美国国家半导体LM3492芯片内置升压转换器及双通道稳流器,可以高效并具
[汽车电子]
内嵌USB设备的ARM微控制器
  爱特梅尔推出基于ARM9 的微控制器AT91SAM9R64,目标市场为高性能的、具有USB接口的嵌入式控制应用。AT91SAM9R64可通过USB、SD卡或外接NAND闪存启动,从而减少保存程序和批量数据的存储器的数量。芯片采用球间距为0.8mm的10x10 mm BGA封装。    高速USB   传输速率高达480 Mbits/sec的高速USB正迅速成为连接设备与PC的标准。SAM9R64可以将现有的全速USB (速率为12 Mbits/sec)产品升级到高速USB,而无需对连接器进行任何物理改动。    可编程的存储器总线电压   除了支持传统的静态存储器外,SAM9R64的存储器总线接口还支持
[新品]
STM32单片机ISP下载的方法解析
STM32支持仿真器和串口下载程序。将要介绍的内容,属于串口下载,即我们通常说的ISP下载。 手动ISP下载程序,我们已经知道了,控制BOOT0引脚实现。STM32上电,会自动检测BOOT0引脚是什么电平,如果是高电平,等待用户下载程序;如果是低电平,运行用户之前下载到单片机的程序。所以我们需要把BOOT0引脚引出,然后控制其接地或接VCC来下载程序或者运行程序。在调试过程中,我们需要不断的控制BOOT0,非常麻烦。那么,自动ISP就该出场了。 自动ISP,把BOOT0与地直接连接,那么每次上电就会运行程序,而且只要点击电脑上的“下载”按钮,就开始下载程序,下载完程序,就开始执行。实现此目的,需要借助串口握手信号DTR和R
[单片机]
STM32<font color='red'>单片机</font>ISP下载的方法解析
小广播
最新电源管理文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved