文档详情

MCS251单片机和PC机间的串口通信.docx

发布:2022-06-26约4.41千字共10页下载文档
文本预览下载声明
PAGE 1 PAGE 1 MCS251单片机和PC机间的串口通信 摘 要 概述了PC机与单片机间进行串行口通信的基本原理,介绍了PC机与下位机之间的通信协议,并详述了在VisualC + +环境下上位机利用MSComm通信控件与单片机之间进行RS232异步串行口通信的实现,给出了实现通信的硬件设计、串行口属性的初始化、与下位机进行通信的掌握代码以及下位机的程序流程图。 随着计算机技术的快速进展和广泛应用,上位机和下位机的主从工作方式为工业掌握及自动掌握系统所采纳。由于PC机分析力量强、处理速度更快及单片机使用敏捷便利等特点,所以一般都将PC机作为上位机,单片机作为下位机,二者通过RS2232或者RS2485接收、发送数据和传送指令。单片机可单独处理数据和掌握任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示。 本文介绍PC机和单片机通信在一种基于C8051F单片机的波形发生器中的应用,在上位机上显示正弦波的幅值和频率,由上位机发送指令可以转变波形幅度及频率。 1 硬件电路的设计 MCS251 单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2 个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以便利地进行串口通讯。单片机串口有3条引线: TXD (发送数据) 、RXD (接收数据)和GND(信号地) .因此在通信距离较短时可采纳零MO2DEM方式,简洁三连线结构。IBM2PC机有两个标准的RS2232串行口,其电平采纳的是E IA电平,而MCS251单片机的串行通信是由TXD (发送数据)和RXD (接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS251机之间能牢靠地进行串行通信,需要用电平转换芯片,我们采纳了MAXIM公司生产的专用芯片MAX232 进行转换。 电路如图1所示。 图1 转换芯片电路 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。 为了保证数据通信的牢靠性,要制定通信协议,然后各自依据协议分别编制程序。现商定通信协议如下: PC机和单片机都可以发送和接收。上位机和下位机均采纳查询方式发送控字符和数据、中断方式接收掌握字符和数据。采纳RS2232串口异步通信,1位起始位, 8位数据位, 1位停止位,无奇偶校验,波特率9 600 b / s.每次PC机向单片机发送数据时,先发送握手信号FF,下位单片机收到握手信号则发送应答信号EE至PC机,上位PC机收到应答信号后即发送数据。同样,当单片机要向PC机发送数据时,也先向PC机发联络信号EB90,PC机收到联络信号后发应答信号EBOO,单片机收到应答信号后则发送数据。 2.1 上位机通信程序设计 PC机的串口都采纳的是INS8250芯片。PC机中有2个异步通信口,一个是COM1,其端口地址范围是3F8H-3 FFH,另一个是COM2,其端口地址是2F8H-2FFH.其与MODEM协作可以实现远距离通信。其波特率是标准波特率(50-9 600) b / s。 8250内部有10个寄存器端口,其中有一个除数锁存器,可以通过编程除数的大小来确定异步通信的波特率。8250使用的频率是2 MHz的基准时钟输入信号,所以必需用分频的方法产生所需要的波特率(移位脉冲) .除数锁存器的值必需在8250初始化时设置, 即把通信线路掌握器的位(DLAB)置1,然后分两次把除数锁存器的高8位和低8位分别写入端口地址3F8H和3F9H (COM1) ,8250传送或接收串行数据时使用的时钟信号的频率是数据传输波特率的16 倍,即波特率= 16 ×除数/1 843 200. 在Windows平台上的串行通信多使用其供应的AP I函数来实现,这种方法使用起来需要很多底层设置,因而较为繁琐,并且难以理解。Microsoft推出的ActiveX技术供应了另外一种实现串行通信的方法。这种方法不仅相对较为简洁,而且特别有用。 尤其是Visual C + +这种可视化面对对象的编程环境中,可以真正把串口看作一个对象,编程时只需简洁的设置,理解起来也很简单。本文上位机通信程序使用VC + +供应的串行通信控件MSComm (Mi2crosoft Communication Control) ,主要步骤如下:打开VC + + 610集成开发环境,选择菜单项File /New,在消失的对话框中选中Projects标签中的MFC App2Wiza
显示全部
相似文档