微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于89C51单片机的远程数据采集系统设计

基于89C51单片机的远程数据采集系统设计

时间:02-04 来源:互联网 点击:

89C51通信程序

  通讯程序编写中首先在项目头文件中嵌入MSComm控件的头文件MSComm.h及实现文件MSComm.cpp,其次,为了用该控件控制一个串口的通讯操作,还必须在相应程序中插入该控件。为此,设计在某对话框中插入MSComm控件,其ID为IDC_MSComm1,并利用ClassWizard 为其添加变量CCMSComm m_Com1,通讯程序中对串口的所有操作都可以通过m_Com1来实现。

  89C51通过中断方式采集和传递数据。当其数据缓冲区满时,向CPU发出中断申请,若CPU响应并经与PC机握手后便可发送数据。因此PC机采用查询的通讯方式。设计中将PC机串口每接收一帧数据设置成串口要响应的事件EV_RXFLAG事件,通过此事件激活消息处理函数OnComm(),在OnComm()中加入处理代码,判断是否是所需的数据,再作出相应的显示、存盘等处理。

  下面简要给出用事件驱动方式接收89C51单片机发送数据的程序源代码。通讯时PC机串口与89C51串口参数的设置必须一致,否则两者无法进行通讯。设置PC机串口参数的初始化程序如下:
If(!m_Com1.getportOpen())

m_Com1.SetPortOpen(TRUE);//打开串口 
  m_Com1.SetSettings("9600,n,11,1");
//串口参数设置 
  m_Com1.InputMode(1);
//建立1024字节输入队列 
  SetCommEvent(m_Com1,EV_RXFLAG);
//设置串口要响应的事件EV_RXFLAG 
  m_Com1.SetRThreshold(200);
//每接收200帧激活OnComm()事件 ………

3 结束语

  本文通过PC机与89C51单片机组成一简单的多机系统,通过串行通信实现了远程数据采集系统的基本功能。在硬件连接上,为提高传输距离,采用了RS- 232C/RS-422A转换电路,以差分传输、差分接受的形式解决了这一问题。在软件编制上,采用流行的VC++6.0下的Active X控件,通过对控件相关属性及代码的编写,实现了Windows 98环境下PC机与89C51单片机的远程通信。该方法也可以用于类似的工业场合中。

参 考 文 献

1 何立民.单片机应用系统设计.北京:航空航天大学出版社,1998
2 赵仕健.VC++6.0编程与实例解析.北京:科学出版社,2000

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top