MCS251单片机和PC机间的串口通信-技术方案_第1页
MCS251单片机和PC机间的串口通信-技术方案_第2页
MCS251单片机和PC机间的串口通信-技术方案_第3页
MCS251单片机和PC机间的串口通信-技术方案_第4页
MCS251单片机和PC机间的串口通信-技术方案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑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串行口,其电平采用的是EIA电平,而MCS251单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS251机之间能可靠地进行串行通信,需要用电平转换芯片,我们采用了MAXIM公司生产的专用芯片MAX232进行转换。

电路如图1所示。

图1转换芯片电路

2系统软件设计

软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。

为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS2232串口异步通信,1位起始位,8位数据位,1位停止位,无奇偶校验,波特率9600b/s.每次PC机向单片机发送数据时,先发送握手信号"FF",下位单片机收到握手信号则发送应答信号"EE"至PC机,上位PC机收到应答信号后即发送数据。同样,当单片机要向PC机发送数据时,也先向PC机发联络信号"EB90",PC机收到联络信号后发应答信号"EBOO",单片机收到应答信号后则发送数据。

2.1上位机通信程序设计

PC机的串口都采用的是INS8250芯片。PC机中有2个异步通信口,一个是COM1,其端口地址范围是3F8H-3FFH,另一个是COM2,其端口地址是2F8H-2FFH.其与MODEM配合可以实现远距离通信。其波特率是标准波特率(50-9600)b/s。

8250内部有10个寄存器端口,其中有一个除数锁存器,可以通过编程除数的大小来确定异步通信的波特率。8250使用的频率是2MHz的基准时钟输入信号,所以必须用分频的方法产生所需要的波特率(移位脉冲).除数锁存器的值必须在8250初始化时设置,即把通信线路控制器的位(DLAB)置1,然后分两次把除数锁存器的高8位和低8位分别写入端口地址3F8H和3F9H(COM1),8250传送或接收串行数据时使用的时钟信号的频率是数据传输波特率的16倍,即波特率=16×除数/1843200.

在Windows平台上的串行通信多使用其提供的API函数来实现,这种方法使用起来需要许多底层设置,因而较为繁琐,并且难以理解。Microsoft推出的ActiveX技术提供了另外一种实现串行通信的方法。这种方法不仅相对较为简单,而且非常实用。

尤其是VisualC++这种可视化面向对象的编程环境中,可以真正把串口看作一个对象,编程时只需简单的设置,理解起来也很容易。本文上位机通信程序使用VC++提供的串行通信控件MSComm(Mi2crosoftCommunicationControl),主要步骤如下:打开VC++610集成开发环境,选择菜单项File/New,在出现的对话框中选中Projects标签中的MFCApp2Wizard(exe),生成一个基于对话框的应用程序。选择菜单项Project/Addtoproject/ComponentsandControls?,在弹出的对话框中选择RegisteredAc2tiveXControls文件夹下的MicrosoftCommunicationsControl,选择RegisteredActiveXControls来注册MSComm,将该控件从工具箱中拉到对话框中即可实现控件的插入。选择ClassWizard为新创建的通信控件加入一个成员变量,将其命名为m_commute.

通过该成员变量便可以对串口属性进行设置。以下是通过设置控件属性对串口进行初始化:

BOOLCMyCOMMDlg::OnlnitDialog()

{

CDialog::OnlnitDialog();

//此处为应用框架自动生成代码

m_commute.SetCommPort(1);//使用串口1

m_commute.SetSettings("9600,N,8,1");//波特率为9600,无奇偶校验,8位数据位,1位停止位

m_commute.SetRThreshold(10);//每接收10个字符就触发1次接收事件

m_commute.SetSThreshold(0);//不触发发送事件

m_commute.SetInputLen(10);//每次读操作从缓冲区中取10个字符

m_commute.SetInputMode(1);//二进制数据传输形式

m_commute.SetPortOpen(TRUE);//打开串口

returnTRUE;//返回

}

事件驱动是处理串行端口交互作用的一种非常有效的方法。OnComm事件的CommEvent属性可以捕捉并检查通信事件和错误。发生通信事件或错误时,将触发OnComm事件,CommEvent属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反应。双击对话框中CMSComm控件,添加OnComm事件的代码:

if(m_commute.GetCommEvent()==2)//判断comEvReceive事件发生否

{

shortm_size=m_commute.GetinBufferCount();

if(m_size==11)//缓冲区为11个字符为满

{

m_commute.SetInputLen(L);//读取接收到的数据

VARIANTvReply=m_commute.GetInput();//处理接收到的数据

}

}

2.2下位机通信程序设计

在上位机与多片单片机通信中,要保证主机与从机间可靠的通信,必须保证通信接口具有识别功能。而单片机串行口控制寄存器SCON中的控制位SM2就是为了满足这一要求而设置的。且SM2控制位只在MCS51单片机的串行工作方式2与方式3才起作用。在串行口以方式2或方式3接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能情况:接收到第9位数据为1时,数据才装入SBUF,并置RI=1向CPU发出中断请求;如果接收到第9位数据为0时,则不发生中断,信息被掉失。若SM2=0,则接收到的第9位数据无论是0还是1都产生RI=1中断标志,接收到的数据装入SBUF中。根据上述情况MCS-51多机通信过程安排如下:

(1)开始时设所有的从机SM2位为1,处于只接收地址帧的状态(串行帧的第9位为1),对数据帧(串行口的第9位为0)则不做响应。

(2)当从机接收到主机发来的地址帧后,将所接收的地址与本机地址相比较,若地址与本机地址相符,便使SM2清零以接收主机随后发来的数据,对于地址不相符合的从机,仍保持SM2=1状态,故不能接收主机随后发来的数据信息。

(3)当主机改为与另外从机联系时,可再发出地址帧来寻找其它从机。而先前被寻址过的从机在分析出主机是对其它从机寻址时,恢复其SM2=1,等待主机的再寻址。

(4)从机要呼叫主机时,可先发送握手信号,主机检测到有从机呼叫后,发出应答信号,从机接收到主机应答后,便可发送数据给主机。主机通过该信号来判断从机所处的状态,从而作出相应的反应。

设计单片机通信程序时,必须充分发挥单片机的效率。由于单片机多应用于实时性较强的控制场合,因此,应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间。基于上述考虑,笔者在设计单片机通信程序时,将通信程序分为接收中断处理程序、发送中断处理程序和通信处理程序3部分,并将这3部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论