历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 以89C51单片机和PC机为核心的远程数据采集多机系统设计

2023-03-14 来源:elecfans

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


1 系统硬件电路的设计

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

1.1 89C51数据采集系统

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

以89C51单片机和PC机为核心的远程数据采集多机系统设计

该系统选用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所示。

以89C51单片机和PC机为核心的远程数据采集多机系统设计

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所示。

以89C51单片机和PC机为核心的远程数据采集多机系统设计

系统上电即执行初始化程序。当操作员按下采样键时执行数据采样模块。从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所示。

以89C51单片机和PC机为核心的远程数据采集多机系统设计

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


推荐阅读

史海拾趣

General Transistor Corp公司的发展小趣事

为了进一步巩固市场地位和提升竞争力,GTC开始实施并购整合战略。公司通过收购具有技术优势和市场潜力的企业,实现了技术、产品和市场的快速扩张。同时,GTC还积极寻求战略转型,从单一的电子元器件分销商和生产商向综合性电子解决方案提供商转变。这一战略转型为公司带来了新的增长点和发展机遇。

Data Device Corporation公司的发展小趣事

随着电子技术的不断发展,DDC也积极投入研发,寻求技术突破。在数据接口技术方面,DDC不断推陈出新,研发出了一系列高性能、高可靠性的产品。同时,DDC还拓展了业务领域,将产品应用于更广泛的领域,如地面保障、高速串行通信等。这些举措使得DDC的产品线更加丰富,市场竞争力也得到了进一步提升。

FINTEK公司的发展小趣事

进入21世纪第二个十年,FINTEK公司开始实施国际化战略,以寻求更广阔的发展空间。公司首先在亚洲市场建立了多个销售和服务中心,随后又进军欧洲和北美市场。为了更好地服务国际客户,FINTEK还加强了与国际标准组织的合作,积极参与国际标准的制定和推广。这些努力使得FINTEK的产品和服务得到了全球客户的认可和信赖,公司的国际影响力也随之显著提升。

3L Electronic Corporation公司的发展小趣事

面对日新月异的电子科技,3L Electronic Corporation始终坚持以技术创新为核心竞争力。公司投入大量研发资源,不断推出具有市场竞争力的新产品。从传统的电子零组件到智能电子设备,再到物联网解决方案,3L的产品线不断升级,满足了市场的多样化需求。

Cornerstone Sensors公司的发展小趣事

Cornerstone Sensors公司成立于电子行业的蓬勃发展时期。创立初期,公司就明确了以传感器技术为核心的发展方向。公司聚集了一批优秀的工程师和科学家,致力于研发高精度、高稳定性的传感器产品。经过数年的技术积累和产品研发,Cornerstone Sensors逐渐在传感器领域崭露头角,其产品质量和技术水平得到了行业的广泛认可。

Britool Expert公司的发展小趣事

随着技术的成熟和产品的完善,Cornerstone Sensors开始积极拓展市场。公司参加了多个国际电子展会和技术研讨会,与全球各地的潜在客户和合作伙伴建立了联系。凭借卓越的产品性能和专业的技术支持,Cornerstone Sensors赢得了众多客户的信任,并成功打入了国际市场。同时,公司还积极寻求与上下游企业的合作,共同推动传感器技术的发展和应用。

问答坊 | AI 解惑

[求助]关于在固定电话上使用无线听筒的问题

首先声明我是菜鸟一只,,基本上属于什么都不懂的。。我想做一个能在普通固定电话上使用的无线听筒,,成本大概是多少呢??还有,,除了用蓝牙还有别的更适合的无线技术吗??恳请大家不吝赐教。。不胜感激。。。。。…

查看全部问答>

高速球摄像机的云台选择

  关键字:高速球   快速云台是高速球型摄像机的核心机械部件,它的可靠性决定高速球型摄像机的稳定且不间断使用的性能。云台的机架部分因冲压件组合设计比较方便,所以现在多数产品使用这种结构方式。但另一方面,由于这种组合结构对几十种冲 ...…

查看全部问答>

关于IIR滤波器的设计心得

对于用双线性变换法来设计数字滤波器而言,由低通指标开始,其设计过程如下: 先低通模拟频率--->数字频率指标--->频率预畸变,得模拟低通指标---->进行模拟逼近,求模拟低通的传输函数---->双线性变换,求得数字低通的传输函数. 如果想了解双线性Z变换 ...…

查看全部问答>

Crosstar嵌入式学院“Minicom -- Linux下的超级终端”

 Linux下可以使用minicom通过串口对开发板进行配置,就像Windows下的超级终端一样,功能更强大。 输入minicom命令进入minicom界面, 按CTRL-A Z(同时按Ctrl和A, 然后按Z), 然后按O 选择cOnfigure Minicom进入minicom的配置界面(也可以输入minicom - ...…

查看全部问答>

SIRIUS 无线模块

SIRIUS  ISR3500介绍:…

查看全部问答>

QQ2440、GEC2440、GEC2410开发板专诚代理

QQ2440开发板(S3C2440)+4DVD嵌入式linux视频教程==650 GEC2410开发板(S3C2410)+培训教程+4DVD嵌入式linux视频教程==850 QQ2440开发板(S3C2440)+NEC3.5寸触摸屏+4DVD嵌入式linux视频教程==1050 GEC2410开发板(S3C2410)+三星3.5寸触摸屏+培训教程+ ...…

查看全部问答>

亲子鉴定多少钱亲子鉴定仪如何选择

白求恩遗传医学中心,国内权威的亲子鉴定机构。 亲子鉴定咨询电话:0371-66332918  亲子鉴定网站:www.dna110.com 白求恩遗传医学中心是经省司法厅核准的亲子鉴定机构,诚信,美誉度高,保障当事人权益。高达16-18个位点的基因检测,每份 ...…

查看全部问答>

ARM Cortex-M3中断跳转过程

ARM Cortex-M3中断跳转过程…

查看全部问答>

2553串口通信发送的数据怎么显示在液晶上

//串口通信,通信协议默认 #include #include \"LCD_12864.H\" volatile unsigned char DATE; void init_uart()                                  &n ...…

查看全部问答>

LM3033DDW-0B液晶显示器

LM3033DDW-0B液晶显示器在proteus中找不到,从哪能下到含有这个元件的元件库???…

查看全部问答>