利用SPComm 控件实现的PC 机与单片机串口通讯
1.引言
随着计算机网络通讯与信息技术的高速发展,采用PC与多台单片机构成的分布式系统、工业控制系统、数据传输系统等越来越受到广泛应用。下位机采用运行性能较为可靠的单片机,直接对所控制对象进行实时数据的采集、计算、判断和处理;而上位机则多采用PC机(如Pentium 系列),主要负责对各单片机进行综合管理,以实现测控系统的自动检测与控制。在这类应用系统中,稳定可靠、方便快捷的数据通信是实现应用系统功能的基础和保障。因此,如何根据系统的实际工作环境条件,选择恰当的通信接口和协议,合理设计通信软件和硬件控制电路以获得高可靠性,强抗干扰和容错能力成为衡量此类系统好坏的最重要因素。
本文以某一工程项目通讯系统为例,介绍一种基于Delphi语言利用SPComm控件实现了计算机与下位AT80C51单片机之间通信的软硬件设计与实现,并给出关键环节的具体的实现方法。
2.硬件系统
该系统以PC机作为上位主机,各下位机由AT80C51单片机组成,各下位机之间无数据传输,只与主机产生数据交换。根据该工程的特点,各单片机与PC机以RS-485总线连接。
由于微机串口通常采用RS-232电平,而单片机串口是TTL电平,二者不兼容。所以,接口必须做电平转换处理。单片机串行口的TXD、RXD经MAX485电平转换为RS-485电平,在主机端经MAX485和MAX232转换为RS-232电平,再与微机的RxD、 TxD和GND相连。为了提高可靠性和抗干扰能力。在本项目工程中,可以对下位机主控板上的通信部分进行光电隔离。这样的话,使得即便是有超越 MAX485的ESD保护范围的静电或雷电感应在信号线上,也只会毁坏驱动器或光耦合,不至于破坏整个后级系统。同时,通信总线采用屏蔽线,各段线路屏蔽层相联接,集中到某一处,采用了必要的接地措施。布置总线时尽量避免了与高压电或动力电线路平行,无法避免时,尽量让两者之间距离足够大。其接口系统结构图如图所示:
3.系统软件设计
1) 通讯协议
在本系统中,PC机是主控单元,单片机是PC机信息的接受者。由于涉及到单片机多机通讯,因此串行口工作方式选为方式3,通讯格式为每11位构成一串行帧:1位起始位(0),8位数据位(最低有效位在前),1位地址帧识别位(1),1位停止位(1),无奇偶校验位(其中第9位进到单片机RB8)。该设计中,每次通讯过程总是由上位PC机首先发起,通讯时单片机先进入通讯状态,等待与计算机通讯。其过程分为以下几步:
(1)通讯前每台单片机设置一个地址。所有单片机SCON寄存器中的SM2位置1,准备接收地址帧。
(2)PC机向所有单片机发地址帧,单片机接收到地址帧后与本机地址比较,若不同则不动作,继续等待下一个地址帧;若相同,返回本机地址确认。
(3)主机接收到地址确认后,按要求向目标发送命令字。①传送数据命令:可根据要求单片机发送的数据的不同具体定义,为8位单字节数 ;②接收数据命令:EFh;
(4)目标单片机接收到命令字后:按要求动作。①接收到“请求接收命令”:发FEh(若做好接收准备),发00h(若未准备好发送)。②接收到“请求发送数据”:按指定要求发送数据。
(5)由于数据传输是在强干扰的环境中进行的,而且传输距离又较远,为了保证数据能高速、准确传输,软件编程考虑对大批量数据进行分组传送,同时对每组数据进行和校验,检查其准确性。PC机每次接收到一组数据,均要进行再次和校验,然后将PC机的校验和结果和单片机传送过来的校验和相比较,若两者不等则说明传输有错校验失败,PC机给单片机发重传命令,要求单片机重新发送该组数据。若校验正确,PC机发确认信号,并准备接收下一组采样数据。
在传输过程中上位机发送出去的数据有三类:①从机地址;②命令字;③向下位机发送的数据包;收到的数据有两类:①从下位单片机发来的确认信号;②从下位机传来的数据;下位单片机接收和发送的数据与之对应不再赘述。
2) 上位机软件设计
在Delphi 中进行串行通讯的方法可以分成以下几种:
本文采用了Spcomm 控件, 其功能强大, 使用方便, 具有丰富的与串口通讯密切相关的属性事件和方法, 提供了对串口的各种操作。其主要事件及方法如下:
主要事件:Onrececvedata: 当有数据输入缓存时, 将触发该事件。OnreceiveError: 当接收数据出现错误时, 触发该事件。
主要方法:Startcomm: 用于打开串口, 当打开失败时通常会报错。Stopcomm: 用于关闭串口, 没有返回值。Writecommdata: 用于将一个字符串发送到写进程。
利用Spcomm控件编写上位机程序,简单快捷,灵活方便,实现过程中有以下关键点需要注意:
(1) 地址帧的产生。由于PC机
单片机 串口 通讯 PC 实现 SPComm 控件 利用 相关文章:
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)