PIC单片机与PC机串行通信的实现
2013-05-16 来源:电子设计工程
文中将使用PIC单片机的同步/异步串行模块(USART)和计算机进行串口通信。PC机的通信软件采用Visual C++6.0编写,具体是利用MSComm控件完成与PIC单片机的通信。
1 异步串行通信的概念
PIC单片机与PC机之间的异步串行通信采用RS-232串行接口电路实现,利用PC机的串行接口进行数据传输。在异步通信中,数据是逐帧传送的,其格式如图1所示。
在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位“0”,然后是5~8位数据,接下来是奇偶校验位,最后是停止位“1”。起始位“0”信号只占用1位,用来通知接收设备一个待接收的字符开始到来。在不传送字符时,线路上应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又检测到一个“0”,就知道要发来一个新字符,应立即准备接收。
2 接口器件介绍
2.1 电平转换芯片
PC机与HC单片机通信使用RS-232串行总线标准。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平电压范围为5~15 V,负电平为-15~-5 V。当无数据传输时,线上为TTL电平,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平为3~12 V与-12~-3 V之间。如此高的电压是不能和单片机直接相连的,所以必须进行电平转换。文中利用MAX232实现电平转换。MAX232芯片是由德州仪器公司推出的一款兼容RS-232标准的芯片。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TTA/EIA-232-F电平。
2.2 信号接口介绍
PC机都有串行接口,一般用RS-232接口。与RS-232相匹配的连接器有DB-25、DB-15和DB-9,其引脚也各不相同。文中使用的是DB-9连接器,作为提供I/O卡或主板上COM1和COM2两个串行接口的连接器,提供异步通信的9个信号。
3 硬件电路设计
3.1 PC机与PIG单片机的串行通信原理图
PC机与PIC单片机串行通信原理如图2所示,整个系统由3个部分组成。由于PC机与PIC单片机串行通信时采用RS-232协议,因此无论是单片机向PC发送数据,还是PC机向单片机发送数据都必须通过MAX232进行电平转换。在电路连接时,PC机的串口输出应对应PIC单片机的串口输入。
3.2 系统电路连接图
整个系统电路连接图可分为两个部分,PIC单片机串口与MAX232之间的连接以及MAX232通过DB-9型连接器和PC机串口的连接,如图3所示。将PIC单片机的“RC6/TXD”引脚和MAX232的“T1IN”引脚相连;单片机的“RC7/RXD”引脚和MAX232的“R1OUT”引脚相连,即将单片机的输入引脚和MAX232的输出引脚相连;将单片机的输出引脚和MAX232的输入引脚相连。
MAX232通过DB-9型连接器和PC机的串口相连,具体实现应选用标准的串口线将AX232同PC机的COM1口连接。
4 程序设计
整个程序设计为两部分,分别是PC机的通信程序和PIC单片机的通信程序。由于PIC单片机的通信程序采用汇编语言编写,其编写过程在各种环境下大同小异。
VC实现串行通信有3种途径,利用MSComm控件或者是利用CSerialPont类进行串口通信,还可用WinAPI函数对串口进行操作。以下重点介绍在Visual C++6.0开发环境下利用MSComm控件实现串行通信的方法。
编程是采用基于对话框的主体程序框架结构,串口通信部分采用MSComm控件完成。具体步骤如下。
(1)创建工程。打开Vlsaal C++6.0编程环境,新建一个工程,并输入相应的工程名和该工程所在的路径。
(2)添加相应的资源。为能在友好的界面下对程序进行操作,必须为应用程序添加相应的资源,文中只添加了通信程序必要的控件。添加两个“EDIT”控件;一个用来输入发送给单片机的数据;一个用来显示接收到的单片机传来的数据。添加一个“发送”按钮用来确定何时发送。文中的串口通信通过MSComm控件完成,所以还需要添加MSComm控件。添加完MSComm控件后,还需对其进行相关设置。对MSComm控件的设置一定要根据计算机外围的单片机来设置合理的参数,否则无法保证正常的串口通信。文中MSComm控件的设置界面如图4所示。
(3)添加成员变量。应用程序上的控件负责接收输入或者显示输出,应用程序后台的成员变量来管理这些数据,添加好资源后还要使控件和成员变量关联起来。成员变量添加界面如图5所示。
(4)消息映射。当单片机通过串口向PC机发送数据或者单击“发送”按钮,都是激发了Windows消息,应用程序的窗口将收到这些消息。收到消息后,检查应用程序是否处理这些消息函数,为处理这些函数必须添加相应的消息映射。
(5)添加程序执行代码。PC端的Visual C++程序的程序流程如图6所示。
添加消息映射后只给出了一个处理这些消息的函数的框架,具体的处理代码必须由用户添加。
编译之后,PC机上的应用程序运行结果如图7所示。
将要发送的数据写到发送数控件中,单击“发送”按钮,则PC机通过串口将数据发送给单片机。如果单片机将数据发送给PC机,则程序将自动把接收到的数据显示在接收数控件中。
5 结束语
PIC单片机与PC机的串行通信被广泛应用于各种控制系统中。文中提出了一种实现该串行通信的方法,并给出了具体的电路原理图和通信程序。实践证明,利用VC开发通讯系统,从底层到上层直接面向用户,具有较强的调试功能。因此文中为PC机与PIC单片机串行通信的实现提供了良好的参考。