第22卷第4期重庆工商大学学报(自然科学版)2005年8月Vo.l22No.4JChongqingTechnolBusinessUniv.(NatSciEd)Aug.2005
收稿日期:2004-12-10;修回日期:2005-03-11。作者简介:徐速(1979-),男,四川省达州人,助理实验师,从事计算机网络及EDA研究。文章编号:1672-058X(2005)04-0360-04
单片机与PC机的串口通信
徐速,李盛渝(重庆工商大学计算机科学与信息工程学院,重庆400067)摘要:通过对常用PC机串行接口的比较,阐述了用C++Builder语言实现基于ActiveX技术的串行通信编程的过程,介绍了C++Buider的Tcomm组件特性和8031单片中机主要通信程序模块的设计思想,利用C++Builder语言制作的应用程序界面,最后通过调用TComm控件来实现PC机与MCS51系列单片机进行串口通信,并给出了主要通讯程序、模块的C++Builder代码和汇编语言程序。关键词:串口通信;单片机;C++Builder中图分类号:TP368文献标识码:A
1串行通信接口常用PC机串行接口有3种:PS/2接口用于连接键盘和鼠标;RS232C串行接口一般用来实现PC机与较低速外部设备之间的远距离通信;USB通用串行总线接口是现在比较流行的接口,它最大的好处在于能支持多达127个外设,外设可以独立供电,也可以通过USB接口从主板上获得500mA@+5V的电流,并且支持热拔插,真正做到即插即用。PC机的3种串行接口都可以用于与外设之间的数据通信,PS/2接口由于是专用于键盘和鼠标,在PC机的编程处理上要麻烦一些,而且在多数情况下,其他外设还不能占用。USB接口有着功能强大、传输速度高、连接外设数量多,可向外设提供电源等特点,其应用越来越广,但是与RS232C串行接口比较,USB接口的上位机(即PC机)程序的开发有着开发难度大、涉及知识面广、开发周期长等特点,同时在下位机(即单片机)硬件设计时必须选用带有USB接口的单片机或扩展专门的USB接口芯片,这必然会给下位机的软硬件系统设计增加难度并提高了软硬件成本。所以,USB接口通常用于对传输速度要求高、传输功能复杂、或需上位机提供电源的外设和装置上。RS232C串行通信接口主要特点是技术成熟、结构简单,只需3条普通导线就可以进行双向通信,传输距离较远,一般可达10m以上。现在流行的高级语言都支持对串口的直接操作,常用的单片机也把串行通讯口作为一个标准接口集成在单片机内,开发者在进行单片机应用系统设计时只需增加1片RS232C与TTL电平转换芯片就可以构成一个单片机与PC机之间的RS232C串行通讯接口。因此,RS232C串行通讯接口的开发具有开发周期短,对开发者的软硬件水平要求不高等特点。2C++Builder软件与单片机硬件组成2.1C++Builder软件简介C++Builder编程语言是由Borland公司推出的一种32位Windows可视化开发工具,目前的版本已经发展到了6.0版。C++Builder不但继承了C++结构化语言的特点,而且采用了与微软公司的VisualBasic语言非常类似的用户界面,C++Builder是VisualBasic外观和C++内涵结合的产物。对于那些使用过VisualBasic和VisualC++的程序员,C++Builder无疑是结合了两者优点的编程语言。利用C++Builder6.0开发串口通信软件一般有2种方法:一是利用Windows的通信API函数,另一种是采用Borland提供的TerminalCommunicatioControl(以下简称Comm控件)。利用API函数编写串口通信程序较为复杂,需要掌握大量的通信知识,而利用TComm控件则相对较简单。TComm是Borland提供的简化Windows下串口通信编程的一个ActiveX控件,它的核心内容是组建对象模型COM(ComponentObjecMtodel),是以属性和事件的形式提供的对Windows通信驱动程序API函数的接口。TComm控件提供了事件驱动和查询2种处理通信的方法。其中,事件驱动方法在硬件上要求必须采用Modem方式连接,并通过设置CommEvent、Rthreshold、TRSEn-able等属性实现对TComm控件的OnComm事件驱动;查询方式则通常通过OutPut属性直接写输出缓冲区且通过Input属性直接读输入缓冲区实现。使用TComm控件开发串口通信程序时,一般先在窗体中添加一个TComm控件,然后对其相关属性进行必要的设置,再设计OnComm事件过程或读取TComm输入缓冲区的通用过程即可。在串口通信程序开发中TComm控件常用属性及其意义如表1所示。表1TComm控件主要属性的含义与作用属性含义CommPort设置并返回通讯端口号Settings以字符串的形式设置并返回波特率。奇偶校验、数据位、停止位;PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口Input从接收缓冲区返回和删除字符Output向传输缓冲区写一个字符串InputLen设置和返回Input属性从接收缓冲区中读取的字节数InpuMtode设置和返回的类型。2.2硬件组成由于PC机RS232C串行通信接口和8031单片机的信号电平不一致,所以在PC机RS232C串口和单片机串口应具有1个电平转换装置,而MAX232就可以完成这一功能,最简单系统如图1所示。