摘 要:概述了单片机与PC机间串行口通信的基本原理,介绍了89C51单片机及其外围信号采集电路构成的下位机的原理及程序框图,并详述了在Delphi环境下上位机利用Spcom控件与下位机进行RS232串行口通信的实现。实际中,应用于智能磁滞回线实验仪,效果良好。
关键词:RS232;串行口通信;单片机;SPComm控件;Delphi
1 概 述
在PC机与单片机构成的上下位机系统中,经常采用由单片机及其外围电路构成的下位机进行数据采集,然后利用基本三线制的RS232串行口通信将数据传送给PC机,由PC机进行数据的进一步处理。图1为其系统原理图。

2 下位机的实现
下位机程序采用汇编语言编写,主要完成定时数据采集及数据发送工作,其中定时采样的中断频率由定时器0的常数自动装载8 b计数器方式产生;波特率由定时器1的方式1产生;握手信号可以随意选择一常数,如果单片机接收到的数据等于此常数,则表示握手成功,否则重新接受握手数据。图2所示为程序框图。

3 上位机软件的实现
在Windows环境下,Win32 API提供了CreatFile,SetupComm,BulidCommDCB,SetCommState,ReadFile,WriteFile等 I/O函数进行要掌握大量通信知识,优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂的低层通信程序。相比较而言,利用SPComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。另外,选择Delphi6.0作为开发工具,由于SPComm控件是一个PAS文件,因此不依赖于Delphi的具体版本,程序的通用性和移植性好。
3.1 SPComm的特点
(1)属性
CommName:控件名,可填写COM1,COM2,…等串口的名字,为字符型变量。
BaudRate:设定波特率,如可为9 600,4 800等,可以在串口打开后更改波特率。
ParityCheck:是否选择奇偶校验。
ByteSize:字节长度,根据实际情况设定为5,6,7,8等。
Parity:奇偶校验位。
StopBits:停止位的位数。
(2)方法
Startcomm:用于打开串口,当打开失败时通常会报错。
StopComm:过程用于关闭串口,没有返回值。
(3)函数
WriteCommData(pDataToW rite:PChar;dwSizeof DataTo Write:W ord):boolean
用于发送一个字符串到写线程,发送成功返回true,执行此函数将立即得到返回值,发送操作随后执行。pDataToWrite是要发送的字符串,dwSizeofDataToWrite是发送的长度。
(4)事件
OnReceiveData:procedure(Sender:TObject;Buffer:
Pointer;BufferLength:Word)ofobject
当输入缓存有数据时,该事件被触发,在这里可以对从串口收到的数据进行处理。Buffer中是收到的数据,BufferLength是收到的数据长度。
3.2 程序关键部分的实现
以智能磁滞回线实验仪为例,说明上位机软件中通信部分的实现。图3为软件界面。
(1)打开串行口并进行初始化


(2)串行口选择



4 结 语
在实际开发中,SPComm表现了很好的灵活性,在智能磁滞回线实验仪的研制中得以应用。上下位机间的这种串口通信方法具有很强的工程实用性,可广泛应用于测试控制领域。
[1]刘 艺.Delphi 5企业级解决方案及应用剖析[M].北京:机械工业出版社,2000.
[2]孙涵芳,徐爱卿.MCS-51(96)系列单片机原理及应用[M].北京:北京航空航天大学出版社,1996.
[3]刘乐善,欧阳星明,刘学清.微型计算机接口技术及应用[M].武汉:华中科技大学出版社,2000.

