IOT-控制工程在线
国际领先的权威的工业自动化专业媒体

Hot Tag:

当前位置: 物联网在线 > 工业控制 > 技术 > 基于89C51单片机的远程数据采集系统

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

本文通过PC机与89C51单片机组成一简单的多机系统,通过串行通信实现了远程数据采集系统的基本功能。在硬件连接上,为提高传输距离,采用了RS- 232C/RS-422A转换电路,以差分传输、差分接受的形式解决了这一问题。
关键词: 89C51 单片机 数据采集
时间:2012-09-19 17:29 来源:物联网在线 作者:IOTer 点击:

分享到:
我要发布文章 收藏 推荐 打印

工业生产过程中常常需要对温度、湿度、压力、流量等各种工艺参数随时进行检测和监控,同时还要将检测到的数据及时传递给上位机,以实现对参数的随机查询, 对信息的存储与处理,及时调整控制方案,提高生产效率和产品质量。为此,笔者以89C51单片机作为主控制器设计了一种简单易行的远程数据采集系统。

1 系统硬件电路的设计

远程数据采集系统框图,由两部分组成:一是基于89C51实现的现场数据采集电路,二是PC机与89C51之间的远程通讯电路。

1.1 89C51数据采集系统

数据采集系统的硬件原理如图1所示。

该系统选用89C51单片机作为主控制器,此芯片与8051完全兼容,且内部带有4 KB闪速可编程、可擦除PEROM,工作时钟可高达24 MHz。

MAX691主要用来实现掉电保护,同时起到“看门狗”的作用。系统电源突然断电时,MAX691PF0端及时向89C51INT0申请中断,保护采集 的数据不丢失。若软件执行中出现故障,89C51P3.2经一定时间间隔没有脉冲输出时,MAX691将起“看门狗”的作用,使RST复位有效,重新启动系统。

数据存储器6116主要作为数据传输的缓冲,显示电路由8155完成,PA口作键盘输入,PB口作字形显示,PC口作控制线用。8155内部256 BRAM用于存放8通道采集到的原始数据。

数据采集与转换由12位A/D转换器ICL7109来完成。7109是高精度、低噪声、低漂移的双积分模数转换器,其内部带14位锁存器和14位三态输出 寄存器,具有较强的接口处理能力。设定7109为直接接口方式。这种工作方式下,7109可连续进行数据的转换,转换结束时由STATUS发出转换结束信 号送至单片机INT0请求中断。89C51将转换后的数据分两次先低8位后高4位读取。为了实现对8个通道的参数测量,同时尽量降低成本,简化系统配置, 设计了利用模拟多路开关CD4051进行通道的切换,共用一片7109由89C51控制,分时完成所有通道的采样与转换。

1.2 远程通讯电路

由于是远程数据采集系统,对数据传输的距离提出了较高的要求。PC机与单片机232C串行口直接相连,传输距离只有十几米,无法满足系统要求。为此采用 了一个RS232C到RS422A的转换装置,PC机与89C51间接相连,以RS422A方式进行通讯,大大增加了传输距离。

PC机与89C51串行通讯电路框图如图2所示。

RS422A是一种以平衡方式传输的标准,可双端发送、双端接收。发送端和接收端分别采用平衡发送及差动接收。通过前者把逻辑电平变成电位差,完成始端 信息传送;通过后者把电位差变成逻辑电平,完成终端信息接收。并且RS422A采用双线传输,大大提高了抗干扰能力。最大传输速率可达10 Mb/s(传输距离15 m时),传输速率降至90 kb/s时,最大传输距离可达1200 m,这能充分满足系统的“远程”要求。

2 软件设计

软件设计采用模块化程序设计方法,按功能分为4个模块,其中数据通信模块又分为单片机串行通信程序和PC机通信程序,除与PC机通信程序使用VC++编程,其余均采用汇编语言编制。

2.1 主程序模块

主程序主要完成对系统硬件电路的初始化,设置堆栈指针、串行口、T0、T1工作方式、8155显示指示符,扫描键盘获取键值并进行散转处理。主程序模块负责管理和调用各子模块。

2.2 数据采集模块

该模块完成对数据的采集及处理,中间调用了数字滤波子程序、数据转换子程序、字形转换及显示子程序等。

系统数据采样模块框图如图3所示。

系统上电即执行初始化程序。当操作员按下采样键时执行数据采样模块。从00~07通道间隔每秒采集每个通道的5个值,调用滤波子程序得到准确值,再通过 数据转换子程序分别送到6116数据区及8155RAM区,通过字形显示子程序显示各通道检测的数据。每采集完一个周期后,89C51单片机通过 MAX232接口PC机查询有无通信命令,有则响应,无则继续采集数据。该程序一直按框图流程循环执行,直至意外掉电或强迫复位后,才能终止数据采集。

2.3 故障诊断模块

数据采集过程中,若出现故障会直接影响采样结果,所得到的错误数据不允许存档,并应该记录故障原因及持续时间。故障诊断模块主要是89C51外围芯片 MAX691的电源监控以及掉电保护电路检测到硬件故障后向单片机发出中断请求INT0所执行的外部中断服务子程序。该程序主要功能是在累加数据保存完毕 后,置位89C51内部的特殊功能寄存器PCON中的PD,使RAM进入掉电模式,保护数据不变,同时显示故障类型和发生的时间。若为软件死循环引起的故 障,则MAX691的“看门狗”电路自动使程序跳出陷阱,强迫系统复位。

2.4 数据通信模块

分单片机通信程序和PC机通信程序。

2.4.1 单片机通信程序

流程图如图4所示。

2.4.2 Win98下PC机与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单片机的远程通信。该方法也可以用于类似的工业场合中。

(责任编辑:zxh007)


本文链接基于89C51单片机的远程数据采集系统
http://c.iot-online.com/tech/2012/091922299.html
 
 
声明:物联网在线转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站转载而转移。作者如不同意转载,即请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。



电子刊物.技术特刊

立即下载

《 物联网在线》推出的免费电子刊物《无线通讯术特刊》收集了当今最新MEMS技术,产品资讯,它们可使你能在更短的时间内了解业内最先进的无线通讯技术信息。

今天就让您的系统设计更上层楼!敬请马上立即下载该免费的《无线通讯特刊》。
   
无线通讯特刊     M2M技术特刊 下载  

MEMS技术特刊 下载



Sierra Wireless白皮书

LTE和M2M 融合之路  
促使 LTE 应用在 M2M 设备上的市场推动力 ; 打破阻碍 LTE 进入 M2M 市场的技术壁垒

立即下载.






 现在播报
电梯PLC控制系统的组态模拟设计
基于LONWORKS现场总线水轮机组状态监测系统
面向对象的技术来设计一种嵌入式软件IDE
基于传感网的嵌入式远程测控平台设计
基于嵌入式Internet技术的通用型RTU-Webit-GRTU
如何提高RF测量技巧并完整发挥RF设备的效能
基于B/S 架构的嵌入式机房远程监测系统
实时数据库和关系数据库的设计特点
图解实战两线制、三线制、四线制
基于CAN总线的DNC集成制造系统设计
基于化学处理法工艺的水处理过程智能控制系统
罗克韦尔集成架构系统十大创新
全球暖化的趋势日益明显 高效能源管理呼之欲出
工业以太网EtherNet/IP性能分析
模块化/KSK 线束自动化设计

 最新Tag
周鸿祎 数据采集 LinkIt One 压力传感器 mate8 BCM20737S 红外线传感器 SM351LT 小米5 VR LiteOS TinyOS MSP430 DA14580 CC2650 STM32 CC2564 MSP432 PLC STM32L0538 STM32F103 智能家居 人工智能 机器人 iphone7 能量采集 MCU 能源计量 ZIGBEE 传感器 工业物联网 智能手表 TZ1000 无人机 ATmega2560 无线传感器 Android 智能电视 i.MX NFC 信号采集 MEMS WIFI IOT LTE 伺服电机 无刷直流电机 智能照明 智能插座 无线充电 CC430 智能电网 Nest Edison ADT7320 ADIS16229 英特尔 家庭医疗 数字隔离器 智能集成 工业4.0 iPhone 7 虚拟现实 可穿戴设备 CC2538 CC2540 CC2541 CC3000 杨旭 麒麟950 华为mate8 阅读器 蓝牙 Linux AllJoyn 树莓派 Windows10 Windows 10 Zephyr RTOS 智能硬件 Qualcomm CC3200 温湿度传感器 5G 可穿戴技术 工业以太网 Arduino CSR8670 VMware 大数据 ITS 蓝牙智能 PIC32MZ 运动传感器 SmartBond 车联网 ADAS V2X 语音控制

返回页首


TopeWay Business Media


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

网站导航|帮助| 关于我们|隐私政策|联系我们|安全承诺

Copyright © 2011 Iot-online.com. 本网站所有内容均受版权保护。
未经版权所有人明确的书面许可,不得以任何方式或媒体翻印或转载本网站的部分或全部内容。


粤ICP备10057207号