首页 > 范文大全 > 正文

基于RS232串行通信的设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于RS232串行通信的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】PC机与单片机相结合在工业监控、数据采集和实时控制系统中应用广泛。其中,单片机系统作为从机进行数据采集和执行控制,而PC机作为主机进行发送命令、实时检测、数据存储、动态显示等工作。 因此,主从机之间的通讯至关重要。 而串行口具有连接简单、使用灵活方便、数据传递可靠等优点。文中介绍了AT89C52单片机与PC机之间串行通讯实现, 包括硬件结构、通讯协议及软件设计.单片机部分由C语言实现, PC机部分了用VC++语言的MSComm控件及调用WindowsAP I函数来实现通讯。,实现数据的快速发送和接收,实时自动控制准确、快速、 该系统简单、经济、稳定、实用性强并已成功应用于实际系统中。

【关键词】串行通讯;RS232;PC;单片机;MSComm控件

一、引言

在电动机控制系统中,单片机系统作为从机进行数据采集和执行控制,而PC机作为主机进行发送命令、实时检测、数据存储、动态显示等工作。串行口具有连接简单、使用灵活方便、数据传递的特点,使其成为主从机之间通讯的主流。

目前主要的串行通讯接口有RS-232,RS-485,USB接口,IEEE-1394等。RS-485对传输数据具有很强抗噪能力,所以它通常被用于工业生产中。USB接口和IEEE-1394具有速度快,但一些计算机和操作系统不支持此类接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准,具有适中的价格和良好的系统的实用性,RS-232是最广泛地用作在PC计算机串行接口和通讯行业,所以它是最适宜的是一个通信端口。

二、串口通讯的硬件设计

PC机和单片机连接时两者的串口电平不同,PC机的是RS-232C电平,而单片机是TTL电平,因此需要通过电平转换的措施才能连接。系统中采用MAXIM公司生产的MAX3232型芯片进行电平转换来完成串口通信。MAX3232芯片中的变压器装置能够把TTL和RS-232C两种电平进行相互转换。其通信接口电路也只需+5 V或+3.3 V单一的电源供电。比常用的MC1488和MC1489芯片进行电平转换时需要12 V和5 V三路电源供电转换电路,具有更低耗能,接口简单的优点。系统中单片机通过MAX3232转换芯片与PC机相联,实现单片机与PC机间的数据通信。串口通信电路如图1所示。

图1 串口通信电平转换电路

MAX3232芯片上有两路串口通信,系统只采用了其中一路。图中芯片的8引脚R2IN和7引脚T2OUT分别连接DB9针连接器的3脚和2脚;芯片的9引脚R2OUT和10引脚T2IN分别连接单片机的引脚。

三、串行通讯的串口通信协议设计

上位机与下位机之间的通信在整个控制系统运行过程中扮演着重要角色。PC机与单片机之间要保持正常而准确的通信,就需要两者遵守共同的通信协议,而通信协议的设计要与I/O口以及数据存储等的工作配合起来[34]。我们设定控制的两台电机为1号电机和2号电机,此次我们采用12个字节为组来由PC机通过串口向单片机发送数据,把控制数据指令放在数组中发送给单片机来完成具体的控制。以数组的方式发送数据方便了单片机接收和处理数据。数组中具体格式的定义如下:

1)第一和第二字节作为起始的两个字节,用来定义数组起始;

2)第三个字节定义运动的标志;

3)第四个字节定义转向的标志;

4)第五和六个字节用来定义电机速度,分别为低八位和高八位;

5)第七和八个字节用来定义1号电机运行的步数,分别为低八位和高八位;

6)第九和十个字节用来定义2号电机运行的步数,分别为低八位和高八位;

7)第十一个字节定义为数组的结尾,设定为0x99;

8)第十二个字节定义为数组的校验字节。

虽然串口通信本身有校验功能,但是在数据发送速度较快且数据量较大时还是避免错误的产生,因此为了保险起见确保数据发送的准确将数组的第十二个字节设置为校验字节,其为前面十一个字节与运算结果。单片机在接收到数组以后可以将前十一个字节再进行一次与运算,然后将结果和校验字节比较,如果相同,则表示数据在发送过程中没有出现错误,否则,说明出现了错误,可要求PC机重新发送数组。因此此字节可以用来用来检测数据发送过程数据损坏丢失而导致的错误。下位机在接受到正确数据后,并将它们转到子程序进行具体的执行。

电机在运动过程中的限位控制也做了考虑,当单片机P2.0~P2.3四个引脚中的任一个由高电平变为低电平时,说明相应电机运行错误,需要其停止运动,单片机就会把此信号通过串口发送给PC机,要求其发送停止指令。单片机向上位机发送的数据信号具体定义为:

1)1号电机的正负限位分别为0x11,0x12;

2)2号电机的正负限位分别为0x21,0x22。

以上这些就是我们设计的上下位机之间通信协议。串口通信协议在运动控制系统中非常重要,只有保证上下位机的通信的准确,才能够使得成形机步进电机能够准确运行,达到预想轨迹。

四、软件设计

下位机中的软件主要完成的有通过串口中断程序接受来自上位机的数据,根据数据命令做简单处理,并向驱动器发送脉冲输入和方向信号。

1.单片机串口通信程序

单片机有512字节的RAM,用于存放PC机通过串口发送来的数据。单片机在接受和发送数据是都以中断触发来完成。当上位机在接受到使用者要求后,通过运算处理生成一系列数据发送给单片机,单片机串口缓冲区的寄存器中有数据时产生中断进而启动中断服务程序[36]。而下位机将接收到的数据,通过每一个数组前两个字节判断其是否为数据指令,然后将数据指令放入相应程序中进行处理来执行相应的电机运动等,同时当单片机接收到的数据进行校验如果出错时就要向上位机请求重发。

2.PC机的串口通信程序

在PC的软件系统中,需将其算好的数据指令发送到单片机上,而串口通信的起着与单片机衔接的作用。PC机的软件通过C++来编程软件的,数据的传送过程要采用Windows系统的设备驱动程序,PC机串口通信的实现可利用API应用程序函数、MSComm(全称为Microsoft Communication Control)控件等方式来实现。

MSComm是简化Windows操作系统下的ActiveX控件,用于串行通信。此控件不像API函数有许多繁琐细节需要处理,比较简单,适用于一般的串口通信。为保证二者之间数据传递的可靠性, PC与单片机之间先进行两字节(55H、AAH)的握手通讯.通讯成功后送命令字( 5AH)启动50ms定时采样.最后由PC送出命令字( FFH)停止采样.

五、结论

本文设计了基于rs232串口通信的硬件和通信模块的软件,PC微机和单片机之间通过使用C + +生编程。该系统通过在PC微机发出控制指令控制控制步进电机的“开始/停止和正向/反转旋转”,其具有良好的产业领域前景。

参考文献

[1]孔巧玲.单片机与PC机串行通讯的实现[J].成都大学学报(自然科学版),2005.9:197-201.

[2]张红勇,方军.单片机AT0088515与PC的通讯[J].微型机与应用,2013.14:51-52.

[3]高潮等.用VisualC++实现PC与PLC之间的串行通讯[J].重庆大学学报(自然科学版),2006.6:20-21.

论文来源:院级自选课题(课题编号:ZK13-37)。