数据采集与处理论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于89C52的温度采集系统
摘要:本文介绍了一种基于STC89C52单片机及VB的温度数据采集系统。从硬件和软
件两个方面具体阐述了由单片机进行温度采集、处理、传送及由上位机实时显示的
过程,并且最终实现了对温度进行数据采集的功能。
关键词:单片机;温度数据采集;VB
0 引言
在实际生产、生活等各个领域中,温度是环境因素不可或缺的一部分,对温度及时精确地控制和检测就显得尤为重要。在工业生产中,常需要对温度进行检测和监控。采用微型机进行温度检测、显示、信息存储以及实时监控,对于提高生产效率、节约能源都有重要作用。利用单片机进行温度数据采集已经被广泛应用于工业、医疗、测量、自动控制等领域,因此,本文将设计一种基于80C52的单片机温度采集系统,可以很容易实现温度的采集及显示。
1系统总体方案设计
本文所述的温度数据采集系统采用上位机与下位机组成的主从式结构,上位机采用VB6.0编程,配合下位机的开发工作,下位机采用STC89C52单片机,负责对数据进行采集、读取以及和上位机的通信。下位机将采集到的数据传到上位机,上位机负责接收下位机传送来的数据,并对数据进行显示。上位机与下位机间的串行通讯用VB ActiveX控件实现。
图1 系统总体框图
2 硬件系统
本系统的硬件组成主要包括STC80C52单片机、12位串行A/D转换器TLC2543、RS—232标准串口专用单电源电平转换芯片MAX232、热电阻基本应用电路等。传感器将被测信号的物理量转换成电信号,经过信号调理、A/D转换后送到单片机进行处理。
本文所设计的测温系统具有转换精度高,电路设计简单、抗干扰性强等优点。
2.1 A/D转换器TLC2543
TLC2543为CMOS12位开关电容逐次逼近A/D转换器。它有三个控制输入端:片选(CS)、输入/输出时钟(I/O CLOCK)和数据输入(DA TA INPUT)端。它通过一个串行的三态输出端与主处理器或外围的串行口通信,可与主机高速传输数据,输出数据长度和格式可编程。TLC2543转换结果的输出数据由P1.2接收,80C52将用户的命令字通过P1.1输入到TLC2543的输入寄存器中,等待20us开始读数据,同时写入下一次的命令字。
2.2 电平转换芯片MAX232
MAX232是专为电脑的RS——232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。其主要特点是:符合所有的RS—232技术标准;只需要单一+5V电源供电;片载电荷泵具有升压、电压极性反转能力,能够产生+10V和—10V电压;功耗低,典型供电电流5mA;内部集成2个RS—232驱动器及接收器等。该芯片外围电路简单,运行可靠。
2.3 传感器电路
传感器电路是整个电路的第一环节,也是最重要的环节。本设计中的测温环节,采用的是热电阻的基本应用电路,热电阻是基于电阻的热效应进行温度测量的,即电阻体的阻值随温度的变化而变化的特性,因此,只要测量出感温热电阻的阻值变化,就可以测量出温度。目前主要有金属热电阻和半导体热敏电阻两类。本设计中采用的是半导体热敏电阻,具体电路如下图:
图2 传感器电路
3 软件系统
3.1 下位机软件系统
系统的下位机采用单片机实时检测温度传感器的输出信号,并把温度信号发送到上位机PC。计算机与单片机的数据传输采用了串行口通讯。下位机单片机汇编语言编程主要包括设置串行口的工作方式、进行波特率的设置、采集温度数据、A/D转换、发送数据并接收显示数据等。程序开始时,先进行初始化设置,然后采集温度数据并进行处理,传送并显示数据,判断是否传送结束,如果没有结束则开始下一次采集,否则结束程序。
图3 温度采集系统主程序流程图
3.2 上位机软件系统
上位机编程采用了VB软件的事件驱动方式,对单片机发送上来的数据进行接收。利用Mscomm控件实现检测硬件系统的数据通讯。测量过程中,计算机屏幕上实时显示温度测量曲线,并将采集数据实时存档。具体程序为:
选取控件,并根据通信控件的属性,设置串口初始参数。MSComm控件属性设置如下:CommPort:设置后返回通信端口,本系统中采用计算机的COM1串口,设置为1。
Settings:设置或返回波特率、奇偶校验、数据位和停止位参数,本文中设置为“2400,n,8,1”。
PortOpen:打开或关闭通信口,在读取数据之前打开通信口,传输完毕则关闭通信口。
InputLen:设置和返回Input属性从接收缓冲区中读取的字节数,设置为InputLen=2。
InputMode=comInputModeBinary,指定以二进制数据格式接收传入的数据。
在编写VB程序时,单片机实时地通过串口将温度数据传送给PC机,PC机响应OnComm
事件,并在时间的处理程序中将数据接收、处理后送文本框显示,同时保存在设定的文件中。如图4所示。
图4 温度采集系统VB界面
VB程序代码如下:
Private Sub MSComm1_OnComm()
Select Case mEvent 判断MSComm1通信事件
Case comEvReceive
sbuf = Trim(MSComm1.Input)
Text2.Text = sbuf
a = Val(Trim(Mid(sbuf, 1, 1))) 从缓冲区第一位开始取一位数据
b = Val(Trim(Mid(sbuf, 2, 1))) 从缓冲区第二位开始取一位数据
c = Val(Trim(Mid(sbuf, 3, 1))) 从缓冲区第三位开始取一位数据
d = Val(Trim(Mid(sbuf, 4, 1))) 从缓冲区第四位开始取一位数据
e = Val(Trim(Mid(sbuf, 5, 1))) 从缓冲区第五位开始取一位数据
Y = a + 10 * b + 100 * c + 1000 * d 因为数据时倒着按位传送我们将
个位数据后再转换成十进制数据。
Text1.Text = Y
'Picture1.Scale (0, 0)-(110, 1000) 定义画图范围
Picture1.Line -(20 * i, 4096 - Y) 用line方法进行实时绘图
i = i + 1
End Select
MSComm1.Output = "1" 画图区域画满后将数据清除再继续发
End Sub