图6.1 电平转换电路图
注:在PC机中9针RS232接口中:2线:RXD, 3线:TXD, 5线:GND 而在25针的RS232接口中:3线:RXD, 2线:TXD, 7线:GND 6.1 软件设计 在进行数据通信的软件设计时,必须解决好两个方面的问题:一是可靠性,二是速度。而这两方面的问题,可靠性是第一位的,速度只能是在可靠的基础上的速度。可靠快速转输的实现,需要PC-单片机软件以及通信协议等各个环节的可靠和其间的相互配合。 6.1.1 通信协议概述 在设计PC-单片机通信协议时,需说明一点:在本系统的实际通信中,PC机是主控者单片机只是被动接收者。采用这种通信协议较双方互为主控者时简单。 本通信协议的设计思想是基于帧传输方式。即在向RS232串口发送命令信号,应答信号及数据信号时,是一帧一帧地发送的。为了使数据快速可靠地传输,将每一帧数据唯一对应一命令帧。此时传输数据即执行命令具体如下: (1) 在PC读数据时,遵循“读命令-等数据-报告”,即PC下达一命令,等待接收数据,根据所接收数据的正误向应用程序报告此命令的执行情况。 (2) 在PC写数据时,遵循“写命令-等回应-报告”,即PC下达一写命令(此时所要写的数据含于此命令中),等待单片机发来的“已正确接收”的回应信号,并向应用程序报告此命令执行完毕。 (3) 如果在转输过程中,其间PC或MCU所接收任何一帧信号出现错误时,均会向对方发送重发此帧信号的请求。如果连续三次转输失败,则退出通信并向应用程序报告。 6.2 通信协议说明 6.2.1信号帧分类 (1) 读命令帧:当PC读数据时,PC向PIC16F877A发送的命令信号。 (2) 写命令帧:当PC写数据时,PC向PIC16F877A发送的命令信号(内含所要写的数据)。 (3) 数据帧:当PC读数据时,PIC16F877A向PC发送的内含数据信息的信号。 (4) 正回应帧:当PC写数据时,PIC16F877A向PC报告数据已正确接收的信号。 (5) 重发命令帧:当PC读/写数据时,PIC16F877A所接收的信号帧(读/写命令帧)有误时向PC发出的请求重发信号。 (6) 放弃命令帧:当PC读/写数据时出现了使程序无法正常执行时PC或PIC16F877A向对方发出的退出通信的通知信号。 6.2.2信号帧格式 (1) 读命令帧格式 帧头标志 帧类型 器件地址 起始地址 长度 校验和 帧尾标志 帧头标志(1 Bit): 表示此数据包属于本串口通信协议,并为是否接收此包数据的标志。 帧类型(1 Bit): 所用信号帧的识别标志,即1.2.1 信号帧分类中的各类型信号的标志字节。 器件地址(1Byte): PC所要访问的外部器件的地址即是哪一个外部器件。 起始地址(2Byte): PC所要访问的器件的存贮器起始地址。 长度(1Byte): 一次命令所转输的数据长度。 校验和(1Byte): 此帧信号的校验字节,为异或校验。 帧尾标志(1Byte): 此帧信号的结束标志。 (2) 写命令帧 帧头标志 帧类型 器件地址 起始地址 长度 数据区 校验和 帧尾标志 数据区:所要写的数据信息。其它分析同上。 (3) 数据帧 帧头标志 帧类型 长度 数据区 校验字 帧尾标志 长度:所转输数据的长度。 数据区:所转输的数据信息。其它分析同上。 (4) 正响应帧 帧头标志 帧类型 空 校验字 帧尾标志 空无意义:为了PIC16F877A编程的方便而加入。其它分析同上。 (5) 重发帧 帧头标志 帧类型 空 校验字 帧尾标志 其它分析同上。 (6) 放弃帧 帧头标志 帧类型 错误码 校验字 帧尾标志 错误码: 00H 执行PC命令发放弃帧回应被动退出通讯。 01H PIC16F877A 单片机方写入芯片发生错误主动通知PC退出通讯。 6.2.3 通信协议处理流程 (1) 数据分帧与数据重组
图6.2.1串口数据发送过程
图6.2.2串口数据接受过程
将应用程序发送过来的数据作为一个数据流放在发送缓冲区中,通过通信协议进行分帧──切割──发送。在接收端,分帧的数据去掉帧头重新组合到接收缓冲区中,交给应用程序处理,发送过程的示意如图6.2.1,接收过程的示意图如图6.2.2。 单片机串口通信软件设计流程图
图6.2.3单片机串口通信软件流程图
PC接收数据软件设计流程
图6.2.4 PC串口通信软件设计流程图
6.3 PC 上位机的软件设计 6.3.1 PC软件设计方法的选择  
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/11/11