使用VB实现的基于串口通信的数据采集系统毕业设计

发布时间:2013-06-15 23:34:50

基于串行口的数据采集系统的设计

摘要数据采集在日常生活中有着广泛的应用,特别是在一些对数据的准确性,实时性要求比较高的场合,需要设计专用的电路来实现系统的需求,而系统的功能的实现,与我们对元器件的选型,设计搭建的电路有直接的关系,它们直接影响着系统对外界环境的感知和响应能力,决定着系统的性能。 据采集在工业控制领域有着广泛的需求,本设计是实现基于串行口的数据采集系统,以采集周围的环境温度为采集对象,以STC89C51单片机作为下位机,以PC机作为上位机,使用9针串口来实现下位机和上位机的通讯。通过在PC机上使用VB6.0开发软件来开发实现数据接收显示控制界面。系统调试结果表明,该系统设计合理,对周边环境温度的变化反应敏感,数据采集的波特率达到9600bps.

关键字数据采集系统STC89C51单片机、串口通信、VB

中图分类号TP2


Design of Data Acquisition System Base on Serial Communication

ABSTRACT: Data collection is widely applied in daily life, especially in the place which is very high request in data accuracy, real time display. A special circuit is need to be designed to realize it. Also, it have much connection with the sensor and circuit design , they influence the system’s sensor and response ability very much , it directly determined the system’s character.

Nowadays, Data collection is widely requested in the industry control area. The system is designed to realize the data acquisition according to the serial port , collecting the temperature around the environment as collection object , use STC89C51 single-chip microcomputer as down machine , use personal computer as upper machine , use 9 pin serial port to realize the down SCM and upper PC’s communication . A display control form was made use the VB6.0 software . The experiment have done display that , the design was reasonable , it was very sensitive to the temperature’s change around the environment .The system’s data collection speed could arrived to 9600bps.

关键词data collection systemSTC89C51 single-chip microcomputerserial communicationVisual Basic

中图分类号TP2


目 次

摘要 word/media/image1.gif

ABSTRACT word/media/image2.gif

目次 word/media/image3.gif

1绪论 1

1.1研究的背景和意义 1

1.2数据采集系统的研究现状 1

1.3研究思路和方法比较 2

1.4本章小结 3

2 基于串行口的数据采集系统的总体设计与分析 4

2.1 基于串行口的数据采集系统的总体设计思想 4

2.2 设计方案与论证 4

2.3 本章小结 5

3 下位机的设计 6

3.1传感器的选择 6

3.2 TTLRS232电平的转换 7

3.3单片机电路设计 8

3.4系统总的电路设计实现 8

3.5本章小结 10

4 上位机的设计 11

4.1 Visual Basic 设计介绍 11

4.2 Visual Basic 设计实现 12

4.3 本章小结 13

5 系统结果和分析 14

5.1 实验调试与结果 14

5.2 本章小结 18

6总结 19

参考文献 20

附录(下位机实现程序代码) 21

个人简历 22

学位论文数据集 23


1 绪论

1.1 研究的背景和意义

在计算机广泛应用的今天,数据采集在很多领域有着十分重要的应用。它是实现计算机与外部设备交互的桥梁。在工业、工程、生产车间等部门,尤其是在对信息实时性能要求较高和恶劣的工作环境下更加体现了数据采集的重要性。由于这些生产场所环境条件比较恶劣,不方便在现场处理数据,但有些实际生产又需要利用实时处理后的数据支持后面的生产,并且由于数据采集系统的应用范围越来越广,对采集信号的要求也越来越高。借助计算机强大的数据处理功能来对检测到的数据进行分析,处理显得越来越重要,在这当中,信号的传输与交互就显得十分重要,为了提高系统的性价比,一般采用单片机来采集数据,再把数据传给计算机进行处理,通过通信协议来实现PC机(上位机)与单片机(下位机)的通讯,开发VB界面来实时显示和监控采集到的数据。

1.2 数据采集系统的研究现状

1.2.1 常见数据采集系统的组成

现代科学技术的发展对系统的在速度、响应能力、精度、带负载能力、功耗及抗噪声,干扰能力等方面的要求也越来越高。一个常见的数据采集系统包括如下部分:

word/media/image4.gif信号采集元件

负责从数据现场收集数据。一般地,它由传感器来感应探测信号,把需要被测量的信号转化为电流或者电压的形式,通过这种对应的转换形式,方便了我们对信号的探索与研究。

(2) 信号放大电路

由传感器感测到的信号往往很微弱,为了方便对信号的分析和研究,我们需要对信号进行放大处理,在放大信号的同时,通常也放到了那些干扰信号,所以我们在放大信号的同时,针对那些干扰信号,有时我们也要设计一些减弱噪声,减少干扰的电路还提高系统的稳定性和精度(如设计滤波电路)

(3)模数转换电路

我们通过传感器产生的信号,经过放大电路的处理,电路中流通的信号是模拟信号,而我们对信号的后续处理,往往是借助数字系统,所以我们需要通过模数转换,把模拟信号量化为相应的数字信号

(4)转换电路

通过对得到的数字信号的处理,我们可以对模拟信号进行比较细致地分析和研究,如果此时电路需要把这些信号再反馈到电路中,我们就要进行数模转换,把数字信号转化为相应的模拟信号。

1.2.2 数据采集系统的分类

常用的数据采集系统大致可分为以下几类:

word/media/image5.gifPC机实现的数据采集系统

系统主要是通过把传感器感知的信号进行放大、滤波等步骤,得到比较易于研究的信号,通过对信号的采样和A/D转换后转化成相应的数字信号,再通过接口电路送入微机内进行处理,然后显示处理结果或经过D/A转换成模拟信号输出作为其它用途。它有下几个特点:

word/media/image6.gif系统对硬件的要求比较高,往往系统的性能很好,而实际需要的要求并不是很高,所以系统的性价比不是很高

word/media/image7.gif系统可扩展能力很高,它的优秀的配置,丰富的可开发资源给设计者提供了很大的发挥余地。

word/media/image8.gif系统的响应速度比较快,性能比较好。

word/media/image9.gif单片机实现的数据采集系统

它是由单片机及其一些外围的辅助电路构成的数据采集系统,是近年来微机技术快速发展的结果,它具有如下特点:

word/media/image10.gif系统的开发要借助于专用的软件设计工具,程序烧录工具

word/media/image11.gif系统的外围电路的设计是以满足系统需求为主的,不存在无意义的电路,系统的软件也是专为实现系统功能服务的,所以它的性价比极高

word/media/image12.gif系统程序是通过专门的烧录工具烧录进去的,所以程序的稳定性,安全性极高,一般不容易受到外界因素的破坏

word/media/image13.gifVB控制下的单片机数据采集系统

Visual BasicVB可视化编程语言,具有强大功能的控件库,可视化的开发界面,能够快速地开发出简洁,直观的显示界面,功能强大的应用程序。利用VB自带的控件库,还可以实现大型的应用程序的开发,不仅开发周期短,它采用的独特的事件驱动机制,大大地减少了开发者的难度和工作量。在VB6.0的环境下,合理的应用通信控件(Mscomm)和结构化查询语言(Structured Query LanguageSQL),经过统一的接口通讯协议可以实现现场通信、实现对现场数据(如温度、转速、频率、电压等)的实时采集。

1.3 研究思路和方法比较

如前所述,本着以实现系统的需求功能,使用更少的元器件、提高系统的抗干扰能力,降低系统功耗及使系统的处理能力更加快速为目标开发基于单片机STC89C51系列的数据采集系统。STC-89C51系列单片机由于其经济、便捷、可靠,可实现同时快速采集和预处理,广泛应用于家电、仪表、机电一体化、智能终端和一般工业控制等的各个领域中。利用Visual Basic来编写串口传输的通信显示界面很容易实现,界面直观明了,由PC机收集单片机采集和预处理的结果,集中地对数据进行分析、处理和研究。这一方面弥补了由于单片机硬件条件的限制,软件系统比较简单、存储器容量有限的缺陷;另一方面由于单片机现场数据进行了预处理,使PC得到的信号更加有针对性,为更加快速地响应处理现场信号的要求减轻了负担PC机根据实施监控到的数据,发出动作命令,响应了现场的实时性的需求和快速响应的特点。

Visual BasicVB是一个简单、易学、高效的可视化软件开发平台,不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能,它所提供的Mscomm通信控件有强大的串行通信功能,易于开发人员实现数据的串口采集的界面设计

系统设计包括软件设计和硬件设计两大方面,软件方面主要以单片机和PC机通过通信协议来实现数据的传输,VB做控制和显示界面,对传过来的数据进行显示和发送对单片机的控制命令。硬件设计主要包括单片机接口电路的设计和单片机作用对象的设计。

1.4 本章小结

本章介绍了当前数据采集系统的发展情况,基本分类。通过分析各自的特点,易于得出一种性价比比较高的设计方案。

2 基于串行口的数据采集系统的总体设计和分析

2.1 基于串行口的数据采集系统的总体设计思想

基于串行口的数据采集系统主要以采集温度为采集对象,由温度传感器DS18B20感应周围的温度值,感应得到的信号交由单片机处理,单片机把接收到的数字信号转化成相应的温度值,单片机的串口负责单片机与PC机的通讯,VB数据接收界面起到控制数据的接收和显示接收到的数据的作用。系统总体设计框图如下图2.1所示

word/media/image14.gif

图2.1 系统总体结构框图

2.2 设计方案与论证

系统由DS18B20作为温度传感器,检测周围环境的温度,传感器的DQ端接单片机的P3.3引脚,通过编写初始化温度传感器,读温度传感器,把温度写入RAM中,温度转换子程序,把传感器得到的信号转化为对应的实际温度值。由于单片机输出的TTL电平,PC机使用的是RS232电平,这里,我们采用MAX232芯片来实现电平的转换,把单片机的RXD,TXD引脚与MAX232的相应引脚相连,转换输出的RXD,TXD端分别于串口的TXD,RXD相连。为了直观的显示单片机与PC机所处的状态,我们在串口的DTRData Terminal Ready引脚与GND之间接入指示LED灯来显是PC机的状态,是否准备就绪,是否处于可以数据传送状态。串口的RXDGND引脚之间接入指示灯,来显示单片机是否处于数据传送状态,也就是PC机是否处于数据采集状态。

系统以9针串口作为连接下位机(单片机)和上位机(PC机)的桥梁,来实现计算机对下位机传上来的数据的采集,在这里,单片机起到对信号的接收,处理的作用。9针串口功能丰富,在本系统中主要用到当中的几根线,来实现数据的传输,这在后面将予以详细的介绍和解释

2.3 本章小结

本章首先对数据采集系统进行了介绍,给出了系统实现的总体结构框图,接着比较详细地论证了这种设计方案是否可行,总结性地概括了实现基于串口的数据采集系统方案的原理,给出了详细的电路状态检测的连线方式,同时也介绍了系统的信号数据的流通走向,分析了电路状态的检测方法,通过判断相应的功能引脚的状态指示灯,来显示和判断计算机与单片机所处的状态,方便了系统的调试和纠错,提高了开发效率。

3 下位机的设计

3.1 传感器的选

本系统以采集温度为数据采集的对象,根据各种温度传感器的特点,我们从中选择出灵敏度要求达标的,易于实现,性价比最高的温度传感器作为我们实验中选用的对象:

word/media/image15.gif采用热敏电阻,可满足35--95的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1的温度信号是不适用的。

word/media/image16.gif采用温度传感器AD590AD590具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50-- +150,满刻度范围误差为±0.3,当电源电压在510V之间,稳定度为1﹪时,误差只有±0.01,其各方面特性都满足此系统的设计要求。

word/media/image17.gif采用温度传感器DS18B20DS18B20具有体积小,硬件开消少,最少只需一根数据线,具有安全性,稳定性高,对温度反应敏感等优点,他全数字温度转换及输出给设计者减少了很多工作。

通过分析上述各种温度传感器的特点,可以得出以下结论:

word/media/image18.gif采用热敏电阻采集的温度存在测量温度范围比较窄,误差比较大,精度比较低的缺点。

2 采用温度传感器AD590需要AD转换模块来实现电路对采集到的温度信号进行处理,从而加大了外围硬件电路的开销和加大了软件程序的复杂程度。

word/media/image19.gif采用DS18B20温度传感器,由于它采用单总线结构,只需一个I/O接口即可,而且温度信号以数字信号输出很大程度上简化了系统也减小了开销故选择DS18B20作为温度传感器。

综合上述各温度传感器的特点,系统选择DS18B20作为我们研究的温度传感器。温度传感器在电路中的连线方式如图3.1所示

图3.1 DS18B20连线方式

DS18B20有3个管脚,VCC,DQ,GND,,DQ接单片机的P3^3管脚,同时接一个1K的上拉电阻至VCC。

3.2 TTL与RS232电平的转化

单片机使用的是TTL电平,而PC机使用的RS232电平,所以连接单片机与PC机时,我们要对单片机的输出电平进行转化,为了提高系统的稳定性和可靠性,这里,采用MAXIM公司生产的MAX232芯片来实现电平的转换,具体电路图如图3.2所示:

图3.2 MAX232连线方式

MAX232主要起到电位提升的作用。通过在C1+与C1-和C2+和C2-之间接入一个0.1uf的瓷片电容来达到电位提升的目的,使输出电压与PC机使用的电压相匹配。

3.3 单片机电路设计

传感器DS18B20与单片机的P3^3管脚相连,单片机通过此管脚来读取传感器传来的数据,此数据并不就是当前温度值,要通过相应的运算把它转化成实际的温度值,由DS18B20的使用手册可知,对接收到的数字信号乘以0.0625就可以得到当前的温度值,这个过程有单片机的数据处理子程序来完成。单片机对采集到的数据进行运算处理后,通过串口通信程序,把处理好的数据传送给PC机,至此,单片机的任务也就完成了。单片机连线如图3.3所示

图3.3 单片机连线图

这个部分主要包括单片机的上电复位电路,外接晶振的连线方式,全双工串口的连线。

3.4 系统总的电路设计实现

前面介绍了下位机的各个功能模块的功能实现,通过各个模块之间的信号联系,得到完整的电路图如下图3.4所示

图3.4 下位机总体电路图

由硬件电路图可见,下位机系统电路以单片机作为接收,处理,传送数据的中心处理部件,这些功能的实现主要依靠软件设计实现,下图3.5为单片机软件设计流程图

word/media/image24.gif

图3.5 单片机软件设计流程图

3.5 本章小结

本章比较详细地介绍了基于串口的数据采集系统下位机地设计实现,包括3个部分,传感器的选择,TTLRS232的电平转换,单片机电路设计 ,对它们的实现原理作了一定的介绍,并给出了详细的功能电路图。针对下位机的硬件电路的设计,给出了系统软件实现的流程图。

4 上位机的设计

4.1 Visual Basic 设计介绍

数据通过串口传到PC机,为了方便实时观测,我们需要把数据在界面上显示出来,Visual Basic在开发串口传输软件中有独特的优势,它提供的MScomm控件使得开发人员设计串口数据显示界面变得十分容易和简便。以下是VB的显示界面。

下面就VB显示界面的制作作一些介绍:

word/media/image15.gif串口的引脚与对应的功能

数据由单片机传给PC机是由串口来实现的,串口有9针和25针两种,系统采用9针串口作为通讯端口,各个引脚有特定的功能,表4.1给出了9针串口的引脚说明

表4.1 串口引脚分布

word/media/image16.gifVB接收控制显示界面是由事件驱动机制来实现的,当发生事件时,程序就会响应事件的处理程序,以下表4.2和表4.3分别是MScomm的参数表和事件表。

表4.2 Mscomm参数表

表4.3 Mscomm事件表

4.2 Visual Basic 设计实现

1:打开VB6.0软件,新建工程,取名“串口数据传输”

2:在Form1窗体中添加Mscomm控件,设置CommPort=5;InBufferSize=1024;Settings=9600,n,8,1;

3:添加label控件,改其Text属性为“**接收区**”;

4:添加TextBox控件,改其“名称”属性为“txtRecive

5:添加两个按钮空间,改其Caption属性分别为“接收数据”(Command1),“结束”(Command2)。

6:进入代码编辑窗口,书写相应事件的代码,代码如下:

Private Sub Command1_Click()

Dim buf$

buf = Trim(MSComm1.Input)

If Len(buf) = 0 Then

txtRecive.Text = "Empty"

Else

txtRecive.Text = AscB(buf)

End If

End Sub

Private Sub Command2_Click()

MSComm1.PortOpen = False

End

End Sub

Private Sub Form_Load()

MSComm1.PortOpen = True

End Sub

4.3 本章小结

本章主要介绍了基于串口的数据采集系统上位机VB显示界面的实现,对VB的串口通信控件Mscomm控件的参数和事件作了详细的介绍,对上位机设计的实现给出了详细的步骤和相关代码。

5 系统结果和分析

5.1 系统调试与结果

word/media/image18.gif 开启计算机,连接上串口。

2 启动自己制作的VB接收控制界面,打开这个软件的同时,它内部的代码已经完成了打开串口的工作,此时我们可以看到DTRData Terminal Ready引脚的指示灯亮,如图5.1,5.2

图5.1 打开VB显示界面

图5.2 计算机准备就绪

3 给电路板接上电源,使电路板处于工作状态。我们可以在数码管上看到显示当前采集到的温度值,实验时的温度是24度,同时我们看到串口接收引脚(RXD)处于忽亮忽暗的状态,单片机正在传送数据,如图5.3

图5.3 单片机发送数据

4 在VB显示界面上点击读出字符按钮,显示读取到的当前温度值,这时我们可以看到两盏指示灯的指示情况,RXD忽亮忽暗,DTR引脚也忽亮忽暗,由于视觉残留效应,它们看上去像是一直亮着的。

图5.4 单片机发送数据,计算机接收数据

图5.5 VB显示接收到的数据

5 用手握住温度传感器,温度上升,数码管显示当前温度值,VB界面相应的采集到当前的温度值,如图5.6,5.7

图5.6 单片机发送数据,计算机接收数据

图5.7 VB显示接收到的数据

5.2 本章小结

本章主要从系统的调试过程和得到的结果现象作了比较详细的分析,通过改变环境的温度,我们在VB界面上可以采集到当前的温度值,系统对温度感知敏感,现象直观明显,达到了预期的期望与要求。

6 总结

基于串行口的数据采集系统是以采集环境温度为采集对象,通过单片机处理,通过Max232电平转换,传给PC机,在PC机上用VB设计显示界面来观测实时采集的温度。经过一次次的调试,试验,完善,该系统基本上实现设计要求的功能,对温度变化反应敏感,现象明显。

7.参考文献

[1] 陈三风,刘晓波.基于VB6.0与单片机串行通信的数据采集系统设计,2004

[2] 张崇智,基于VB的串口实时数据采集,2005

[3] 王圆妹,许劲 ,李涛 ,实现PC 机与单片机的串行通信,2006

[4] 超,基于VB实现PC机与单片机的数据采集系统设计,2009

[5] 周子琛,申振宁用VB 实现计算机与单片机的串行通信,2002

[6]  陆 剑 ,宋晓莉,A T 89S51 单片机与Visual Basic 串行通信的实现

[7] 胥保春,单片机(AT89S51)与PC机的串行通信,2005

[8] 邓洪声, 舒大文,用Visual Basic 6. 0 设计四通道串口数据采集,2004

[9] 张康康,基于串口通信数据采集系统的设计,2011

[10]杨东燕,基于单片机的数据采集系统设计,2011

[11]伊崇信,赵 颖,利用 Visual Basic 实现串行通信技术,2002

[12] 荆茂祥,李冬辉,基于VB 的主从机串行通信系统设计,2003

[13] 胡俊宏, 杨振巍,基于VB S7-200 PLC 与上位机的串行通讯及应用,2007

[14]韩利凯,用VC+ + 实现PC 与单片机串行通信方法的研究,2005

[15]贾志成,岳西凤,李永军,刘培培,基于VC++XCTD 串口实时数据采集系统的实现,2010

[16]范逸之,陈立元,利用Visual Basic 实现串并行通信技术,2001.3

[17] WANG Lu1XU Xuefeng2WANG Jian3Application of serial communication in energy monitoring system based on VB2011

[18] Zhang Bo, Yu Jie, Lian Ya-fei, Ding QianThe Communication between the PC and PLC based on VB6.0 in the ESP2011

[19] Anan Fang, Jianping Dai, Liping LuoDesign of Remote Data Acquisition and Communication Hardware Circuit System Based on Window2009

[20] Anan Fang , Ming Gong, Rong Yu, Xiaoping QiThe Realization of Distance-data Acquisition by SCM and Communication Design2009

[21] Ling Xu, Zhen Chen, Shi-Iei Zhang Research of Serial Communication System based on C8051F020 Singlechip2010

附录(下位机程序实现代码)

#include

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit DQ=P3^3;

unsigned char tempL=0;

unsigned char tempH=0;

float temperature;

void delay1(uint z) //延时子程序

{

uint i,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

void send_data(i)

{

SBUF=i; //发送

while(TI==0); //等待发送完毕

TI=0;

}

void delay(unsigned int k)

{

//for(;k>0;k--);

//return;

unsigned int n;

n=0;

while(n < k)

{n++;}

return;

}

void delay2(void)

{

int k;

for(k=0;k<400;k++);

}

void display(int k)

{

P2=0xf7;

P0=tab[k/1000];

delay2();

P2=0xfb;

P0=tab[k%1000/100];

delay2();

P2=0xfd;

P0=tab[k%100/10];

delay2();

P2=0xfe;

P0=tab[k%10];

delay2();

P2=0xff;

}

Init_DS18B20(void)

{

unsigned char x=0;

DQ=1;

delay(8);

DQ=0;

delay(85);

DQ=1;

delay(14);

}

ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat=0;

for(i=8;i>0;i--)

{

DQ=1;

delay(1);

DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat |=0x80;

delay(4);

}

return dat;

}

WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

delay(4);

}

ReadTemperature(void)

{

Init_DS18B20();

WriteOneChar(0xcc);

WriteOneChar(0x44);

delay(125);

Init_DS18B20();

WriteOneChar(0xcc);

WriteOneChar(0xbe);

tempL=ReadOneChar();

tempH=ReadOneChar();

temperature=((tempH*256)+tempL);

delay(200);

return(temperature);

}

void main(void)

{ float i,j;

EA=1;

TMOD=0x20; // T1波特率发生器

TH1=0Xfd; //波特率9600

TL1=0Xfd;

SCON=0X50; //串口方式REN=1允许接收数据

PCON=0X00; // 1 倍波特率

TR1=1;

delay1(5);

while(1)

{ i=ReadTemperature();

j=i*0.0625;

display(j);

send_data(i); // 发送数据

}

}

使用VB实现的基于串口通信的数据采集系统毕业设计

相关推荐