用户中心
· 企业空间 首页 | 资讯 | 技术 | 产品 | 企业 | 直播 | 专题 | 智能制造 | 论坛| 在线研讨会
武汉波仕电子有限公司
企业空间 > 案例应用 > 正文
  • 纯软件实现单片机远程通信
  • 发布时间:2007/12/7 10:27:59   修改时间:2007/12/7 10:27:48 浏览次数:2264
  • 作者:武汉波仕电子有限公司 www.bosika.com

     

    GMS972051是韩国LG公司生产的MW内部带2K E2PROM的与MCS-51兼容的单片机。GMS97C2051省去了MCS-51P0P3口,但是多了一个内部硬件比较器。由于单片机的通信信号为TTL电平,如果不采取其它的措施,其在通信速率为9600bps时通信距离不超过5。一般为了延长单片机的通信距离,采用RS-232/RS-485转换器、RS-232/RS -422转换器或光隔远程收发器。本文介绍的方法可将GMS97C2051单片机之间通信距离延长到1200以上,而且不需要添加任何硬件措施,完全用软件来实现。

     

    要用纯软件方法实现GMS97C2051单片机之间的远程通信,首先必须将单片机的TTL电平的软件方法转换为差分电平,其次要用普通I/O口线来构成软件串行口,并且在软件上进行正确的配合。

     

    TTL电平转换成差分电平的纯软件方法

     

    GMS97C2051单片机的信号均为TTL电平。TTL电平信号传输距离非常有限,一般在9600bps传输率时传输距离不超过5。而差分电平信号则是取决于两种信号线之间的电平差值,如果某条信号线的电平高于另一条,则信号为1,否则为0。由于差分电平信号可以避免长距离传输导线上的电荷积累,并且具有更宽的电平范围,所以传输距离远得多。RS485差分电平信号在9600bps传输率时传输距离可达1200

     

    为了用纯软件实现差分电平传输就不能使用GMS97C2051本身的硬件串行口,而是用普通I/O线来实现串行通信。差分电平要用两条I/O口线来实现,比如P1.2P1.3两条线(见图1)。当传输信号为1时,P1.2+5V,而P1.30V。当传输信号为0时,P1.20V0V,而P1.3+5V。注意P1.2P1.3不得同时置+5V或同时置0V

     

    GMS97C2051单片机的P1.0P1.1可以分别作为片内精密模拟电压比较器的正输入端(AIN0)和负输入端(AINI),所以正好可以用于接收差分电平信号。内部电平比较器的输出已经在芯片内部连到P3.6口,所以可以通过读取P3.6口的值来得到差分电平信号。

     

    软件串行口的实现方法

     

    由普通I/O口线来实现串行通信,习惯上称为软件串行口。采用差分电平通信的软件串行口的硬件接线图如图2.AB两机均为GMS97C2051单片机。P1.2P1.3用于发送,P1.0P1.1口用于接收,P1.0同时接本机中INI0。软件串行口一般全用标准的10位异步通信格式:1位起始位(信号0),8位数据位,1位停止位(信号1)。接收时均是低位数据在前,高位数据在后。

    软件串行口接收和发关的工作原理和过程如下:单片机复位后,执行初始化程序时,定义P 1口为位控方式,其中P1.0P1.1定义为输入,P1.2P1.3定义为输出。P1.2初始化为"1"P1.3初始化为"0",这样发送信号处于停止位(差分电平"1")。定义INT0为负沿触发。允许中断且定义成高优先级,然后开中断,两机进入随时可开始串行通信的等待状态。AB不通信时,两机的收发均为"1",一旦某机(假设为A)需要与对方通信,A机以约定的波特率(假定为9600bps),通过P1.2P1.3发送。发关和接收一个字节的过程如下:

     

    A机发送端首先发送起始位("0"电平),BINT0引脚产生下跳沿后,产生中断申请。BCPU响应此中断后,执行INT0中断服务子程序。在中断服务子程序开始,用位输入指令读入P3.6状态,如果是"1"电平,则表明此次中断是受干扰所致,因而取消此次接收过程,中断返回;如果P3.6状态读入电产是"0",则表明本次中断确系A机发送超始位所引起,经精确延时,在A机发送各数据位中间处进行采样,获得各数据位的状态,最后生成一个字节,送有关单元之后中断返回。虽然送往INT0的信号为TTL电平,但是由于它的传输速率非常之低,加上软件抗干扰措施,所以仍然可以有效地传输1200

     

    软件串行中远程通信的关键是如何以较高的波特率可靠地实现数据的发送和接收。下面介绍一组以9600bps波特率设计,用MCS-51汇编语言编写的具有很强抗干扰能力和很高可靠性的收发一个字节的子等等程序。

     

    软件串行通信的编程

     

    串行通信要实现成功接收必须解决以下关键技术:(1)要准确、快速检测出对方发出的超始位以及起始位负跳变的时刻;(2)保证在每个数据位中间采样;(3)具有有效的校验和查错手段。

    我们针对性地采取以下措施:用定义成高级中断的外中断引脚下接收线相连,来及时捕 捉起始位信息,并在确定采样时刻的计算中扣除中断响应滞后的延时时间;精心设计、编写程序,逐条计算指令实际执行时间,排除其他中断干扰(关中断),从而保证在每个数据位中间处进行采样;每位重复采样多次,确定各数据位的状态,从而可大大减少远程通信常见的瞬态干扰(其特点是幅度大、作用时间短、随机性强)对通信的不良影响。综合采用上述技术措施以中断方式工作的接收(1帧)的中断服务源程序见程序清单):

    以上指令共46个机器周期(T),加上中断响应平均延时5个机器周期,所以程序执行到此,即A机发送起始位(开始变低)到此已经历51T。由于MCS-51指令的1个机器周期(T)相当于12个时钟周期,所以当用12MHz的晶振时,1个机器周期(1T)相当于是1μs51T相当于51μs

    A机发出超始位到此共延时51T+4T+88T=143T,相当于143μs

    传输率为9600bps时,每位费时104μs(即1s/9600)。从起始位开始到D0位中间1.5位,费时1.5×104μs=156μs。下面程序在156μs及其前后各11μs处对D0位进行共3次采样,记录D0采样结果为0次数。如果3次采样结果为0的次数小于等于1,则判断D0=1。如果3次采样结果为0的次数大于等于2,则判断D0=0。这样极大地增强了串行通信的可靠性。然后再经过延时后对其他各位数据进行同样的三次采样,直到D0D78位数据全部采样结束。

     

    以上程序执行用去40T,加上前面的143T,共花去183μs。每次返回NEXT3循环一次,读入一位数据。在程序输入NEXT3前,给R0赋值02H,就能保证以后各位数据位3次采样的准确时刻。此中断服务子程序段不仅能实现在每位数据采样,而且还在中间时刻前后11μs各采样1次。以3次数据的多数结果确定该位的值,可大大降低因干扰出错的概率,因此在干扰严重的远程通信中有很强的适应性。

     

    结语

     

    本文介绍的GMS97C2051单片机远程通信的纯软件方法和程序也适合于ATMEL公司的AT89C2051单片机,对其他单片机的远程通信也具有一定的参考价值。文中提供的软件接口方法和源程序经实际应用表明,该方法可延长通信距离至1200米(9600bps时)。本方法的不足之处在于软件编程要求比较高,如果要实现即软件编程简单、又通用性好的单片机远程通信,还是要使用RS-232/RS-485/RS-422转换器或光隔远程收发器。

     

     

  • 企业介绍
波士电子1993年创立于北京。波士电子致力于RS232/RS485产品的开发。 波士电子创造了许多种世界上第一的RS232/RS485产品,拥有数10项专利。 2007年:世界上第一个以太网-串口光纤转换器:(OPET232L1) 2007年:世界上第一个USB-串口光纤转换器:…  更多>>
  • 联系方式

武汉波仕电子有限公司

联系人:孙汉华

地址:关东科技工业园

邮编:430074

电话:027-87561487

传真:027-87561486

公司网址:http://www.bosika.com

  • 该空间手机版

扫描此二维码即可访问该空间手机版

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件:
您还没有登录,请登陆,
如果您还没有注册,点击这里注册.
  • 网友反馈
  • 孙红杰 在2024/7/4 8:54:00留言
  • 留言类型:我想得到贵公司产品详细资料,我想得到贵公司产品的价格信息,我让贵公司产品销售人员联系我,我让贵公司技术支持人员联系我,
  • 详细留言:需要USB转串口的转换器,能够支持的最高速度是921600bps,稳定可靠,长时间不存在数据丢失和错误等问题。
  • 李孝浪 在2022/8/5 10:22:00留言
  • 留言类型:我想得到贵公司产品详细资料,
  • 详细留言:有没有921600转115200的波特率转换器
  • Mike Ma 在2020/1/30 14:06:00留言
  • 留言类型:得到贵公司产品的价格信息,贵公司产品销售人员联系我,
  • 详细留言:我要买20个无源CAN隔离器,可以给我报价吗? 我公司是OSC Automation Engineering Blk 178 Edgefield Plains 09-224 Singapore 820178
  • 王力 在2014/12/15 18:05:00留言
  • 留言类型:贵公司产品销售人员联系我,
  • 详细留言:我已经购买了贵公司的ARK-2120无风扇嵌入式工控机,除了你家我还看了: E+H:http://www.endress-h.com pilz:http://www.pilz-zh.com 邦纳:http://www.banner-cn.com 穆格:http://www.moog-cn.com 穆格伺服阀:http://www.moog-cn.com 哈威:http://www.hawe-zh.com 力士乐:http://www.rexroth-zh.com 请问这些是正规的吗?可以开发票吗?
  • 汤庆 在2014/11/7 15:57:00留言
  • 留言类型:我想得到贵公司产品详细资料,我让贵公司产品销售人员联系我,我让贵公司技术支持人员联系我,
  • 详细留言:能否将电话的音频信号转换成485信号传输?有没有这样的设备?
更多请进入空间管理中心查看
关于我们 | 网站地图 | 联系我们
© 2003-2018    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688
我要反馈