基于单片机的温度采集软件系统设计说明_第1页
基于单片机的温度采集软件系统设计说明_第2页
基于单片机的温度采集软件系统设计说明_第3页
基于单片机的温度采集软件系统设计说明_第4页
基于单片机的温度采集软件系统设计说明_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE31 / NUMPAGES32目 录TOC o 1-3 h u HYPERLINK l _Toc442 1.1背景和意义 PAGEREF _Toc442 1 HYPERLINK l _Toc10247 1.2 国外现状 PAGEREF _Toc10247 2 HYPERLINK l _Toc29764 1.3目的和容 PAGEREF _Toc29764 2 HYPERLINK l _Toc10386 2主要器件介绍 PAGEREF _Toc10386 4 HYPERLINK l _Toc32067 2.1 AT89C51 简介 PAGEREF _Toc32067 4 HYPERLIN

2、K l _Toc13396 2.1.1 主要特性: PAGEREF _Toc13396 4 HYPERLINK l _Toc4583 2.1.2 AT89C51管脚说明 PAGEREF _Toc4583 5 HYPERLINK l _Toc19015 2.2.2 DS18B20引脚定义 PAGEREF _Toc19015 8 HYPERLINK l _Toc24973 3系统设计 PAGEREF _Toc24973 10 HYPERLINK l _Toc32637 3.1 功能要求 PAGEREF _Toc32637 10 HYPERLINK l _Toc19349 3.2 总体设计方案 PA

3、GEREF _Toc19349 10 HYPERLINK l _Toc16901 3.3 系统软件设计 PAGEREF _Toc16901 11 HYPERLINK l _Toc10559 3.3.1 PC与单片机串口通信 PAGEREF _Toc10559 11 HYPERLINK l _Toc17375 3.3.2上位机软件设计 PAGEREF _Toc17375 12 HYPERLINK l _Toc13125 4程序设计 PAGEREF _Toc13125 17 HYPERLINK l _Toc22194 4.1上位机程序 PAGEREF _Toc22194 17 HYPERLINK

4、l _Toc18746 5 结 论 PAGEREF _Toc18746 20 HYPERLINK l _Toc1575 附录 上位机程序 PAGEREF _Toc1575 21 HYPERLINK l _Toc20735 参考文献 PAGEREF _Toc20735 33 HYPERLINK l _Toc28174 致 PAGEREF _Toc28174 351引 言1.1背景和意义 近年来,随着大规模集成电路的发展,单片机继续炒快速、高性能方向发展,从4位、8位单片机发展到16位、32位单片机。单片机主要用于控制,它的的应用领域遍与各行各业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都

5、可以大显其能。单片机在家用电器业中应用的十分广泛:例如全自动洗衣机,智能玩具;除了上述传统领域外,汽车、电子工业在国外也是单片机应用十分广泛的一个领域,它成本低、集成度高、功耗低、控制功能多、能灵活的组装成各种智能控制装置,由它构成的智能仪表解决了长期以来测量仪器中的误差的修正、线性处理等问题11。传统靠人工控制和测量的温度、湿度、液位等信号的测压、力控系统,外围电路比较复杂,测量精度较低,分辨力不高,需进行温度校准(非线性校准、温度补偿、传感器标定等);且它们的体积较大、使用不够方便,更重要的是参数的设定需要有其它仪表的参与,外界设备多,成本高,因为越来越适应不了社会的要求。在对多类型、多通

6、道信号同时进行监测和控制中,传统的测控系统能力有限9。传统的温度测量方法有很多种:酒精温度计、水银温度计、热电偶、热电阻、热敏电阻、辐射高温计等1。酒精、煤油温度计常用与室温的测量,也用于实验室中一些液体或实验室温度的测量。水银常用于体温计,由于熔点比较高,所以不适合低温环境。热电偶测温的原理是:将两条不同的金属线的一端连接在一起并加热,在两线之间会有一个与温度成正比的热离子电压产生。但在恶劣的环境中,热电偶的质量可能会受影响;由于水是溶解物质所以也会引起问题。温度过高热电偶金属可能会熔化,从而改变成分,并且影响读数。热电阻是一种电阻与温度成正比的温度传感器。辐射高温计是非接触型温度传感器,它

7、可以探测到来自被测物得红外辐射并将辐射转换成与温度成正比的电压或电流。所以这种方式比较适合一些非接触的场合。但是如何将计算机与各种设施、设备结合,简化人工操作并实现自动控制,满足社会的需求,成为一个很迫切的问题。随着时代的发展,科技的进步,各种复杂的场合对温度的测量也是提出了不同的要求,在某些场合要求能够实时监控温度值,并且能够将大量的温度数据保存起来,并进行集中处理,计算机的出现是的大量温度数据的保存与处理成为了可能,但是传统的酒精或煤油温度计等却无法将温度数据传递给计算机,所以便出现了各自各样的电子温度传感器,而现在大量采用的是温敏电阻加AD转换的方法,采集温度虽然方便,但是精度不够,而且

8、电路复杂,并不适用与多点测温,本课题正是针对这种状况而设计的,采用了精确的温度传感器,并且能够通过单片机实时采集温度传送给电脑,用于实现温度的远程控制。而且可以利用电脑的优势存储大量的温度数据和实现对温度数据的处理。温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起着关键的作用,随着科学技术的发展,有单片机集成电路构成的温度传感器的种类越来越多,测量的精度越来越高,响应时间越来越短,因其使用方便、无需变换电路等特点已经得到了广发的应用,例如:以前常用的AD590和LM35等,一级现在得到广发应用的DS1820、DS1821和DS1620等。本次毕业设计正式为了完成

9、温度采集而设计的,而且用了前不久美国DALLAS公司生产的可租网数字式温度传感器DS1820,可以说与人们的日常生活是息息相关的,具有很大的现实意义2-3。1.2 国外现状 现在比较常用的普通测温方法就是利用一些液体的热胀原理制作的,比如说煤油温度计,酒精温度计以与水银温度计等,这些原始的测温方法成本比较低,但是测温精度也很低,不适合用于一些需要高精度测温的情况,而且通过电子装置自动采集温度不太方便,也有一些电子测温采用的时温敏电阻加AD转换的方法,采集温度虽然方便,但是精度不够,本课题正是针对这种状况而设计的,采用了精确的温度传感器,并且能够通过单片机的优势存储大量的温度数据和实现对温度数据

10、的处理13-16。1.3目的和容新型数字化、网络化传感器在工程中的应用具有极其重要的意义。这类传感器是各种参量送入计算机系统,进行智能监测、控制的最前端。随着科技的发展,数字化。网络化传感器应用日益广泛,以其传统方式不可比拟的优势渐渐成为技术的趋势和主流。本次设计的目的就是以数字传感器DS1820作为前端,采集温度经过单片机处理后,在采用串口通信,把温度显示在VB编辑的计算机界面上,实现与计算机的通信。本系统的设计主要为软件的设计,软件部分分为五大部分:读取DS180的部数据部分、单片机对温度的处理部分、PC显示部分、串口通信部分、VB界面部分。2主要器件介绍2.1 AT89C51 简介AT8

11、9C51是一种带4k字节闪烁可编程可擦除只读存储器(FPEROM FlashProgrammable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦出100次。该器件采用ATMEL高密度非易失存储器制造书制造,与工业标准的MSC-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.1.1 主要特性与MCS-51兼

12、容4k字节可编程闪烁存储器寿命:100写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位部RAM32可编程I/O线两个12位定时器/计数器5个中断源可编程串行通道低功率的闲置和掉电模式片振荡器和时钟电路2.1.2 AT89C51管脚说明图2.1 AT89C51 管脚图VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为HYPERLINK :/baike.baidu /view/1410710.htm高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的

13、第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2

14、口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能: P3.0 RXD(串行输入口) P3.1 TXD(

15、串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 /RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 /ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部

16、输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/

17、EA端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入与部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.2 DS1820简介 DALLAS最新单线HYPERLINK :/baike.baidu /view/1945329.htm数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为HYPERLINK :/baik

18、e.baidu /view/2847149.htm测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器 同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度围为 -55C+125C,在-10+85C围,精度为0.5C。DS1822的精度较差为 2C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类HYPERLINK :/baike.baidu /view/3300539.htm消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压围,使系统设计更

19、灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用围。分辨率设定,与用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20HYPERLINK :/baike.baidu /view/37.htm软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线

20、”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性与封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 2.2.1 DS18B20的部结构图2.2 DS1820部结构图DS18B20部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28

21、H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的HYPERLINK :/baike.baidu /view/575295.htm循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不一样,这样就可以实现一根总线上挂接多个DS18B20的目的。 DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 2.2.2 DS18B20引脚定义(1)DQ为数字信号输入/输出端; (2)GND为电源地; (3)VDD为外接供电电源

22、输入端(在寄生电源接线方式时接地)。 图2.3 DS1820引脚图 2.2.3 DS18B20的主要特性(1)适应电压围更宽,电压围:3.05.5V,在寄生电源方式下可由数 据线供电。 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 (4)DS18B20在使用中不需要任何外围元件,全部 传感元件与转换电路集成在形如一只三极管的集成电路。 (5)温围55+125,在-10+85时精度为0.5。 (6)可编程的分辨率为912位,对

23、应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 (7)在9位分辨率时最多在 93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快。 (8)测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 (9负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 3系统设计3.1 功能要求设计一个基于VB6.0的数据采集系统。用单片机系统接收温度传感器的温度数据,并在PC上显示当前温度值,可测温围-55-125摄氏度,精度0.1摄氏度。使用VB6.0编写上位机程序

24、,接收温度数据并储存在数据库中;接收数据时,要求能同步画出温度变化曲线;要求系统可查询历史温度信息。基于VB6.0的数据采集系统在设计时主要应该满足如下功能指标:测量温度,并在PC机上显示当前温度;可测温围-55-125摄氏度,精度0.1摄氏度;每秒给上位机接受温度数据;上位机接收温度数据,并将数据、接收数据时间以与测温批次等信息存储到数据库中;测温批次可以自动生成也可手动输入;接收温度数据时,同步画出温度变化的曲线;可按批次以与测温时间查询温度数据;将上位机软件打包,生成安装文件。3.2 总体设计方案温度计电路设计总体设计方框图如图3.1,控制器采用单片机89C51,温度传感器采用DS182

25、0,以串口传送数据实现温度显示通过串口与上位机PC通讯,把数据传送给上位机,并用VB编写的图形界面把温度的变化曲线显示出来,并通过数据库存储,可查询历史温度记录。 图3.1 温度计电路总体设计方案主控制器:单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池。温度传感器:采用DS1820温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。PC实时显示界面:显示实时温度数据变化曲线的界面,采用VB6.0编辑,在程序使用VB6.0的通用串口控件MSCOMM来对发送

26、到串口的数据进行采集处理。上位机定义好通信协议和波特率。3.3 系统软件设计3.3.1 PC与单片机串口通信目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平台。为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以与客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机的串口和PC串口之间的硬件连接实现的。线路说明,如图3.2所示,数据通信的硬件上采用三线制,将单片机和PC串口

27、的3个引脚(RXD、TXD、GND)分别连在一起,即将PC和单片机的发送数据线TXD与接收数据RXD交叉连接,两者的地线GND直接相连,而其他信号线如握手信号线均不用,采用软件握手的方式,这样既可以实现预定的任务又可以简化电路设计。但由于单片机的TTL逻辑电平和RS-232C的电气特性完全不同,RS-232C的逻辑0电平规定为+3+15V之间,逻辑1电平为315V之间,因此,在将PC和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用的是MAX232电平转换芯片。PC与单片机串口通信线路图如下图3.2所示。图3.2 PC与单片机串口通信线路3.3.2上位机软件设计上位机是应用VB进行编

28、写的。它把下位机传送上来是两字节的十六进制数据进行解码显示出来当点击采集温度时,上位机向下位机发送采集温度命令字符“1”,当下位机接受到命令时,向上位机发送数据。使用VB6.0编写上位机程序,接收温度数据并储存在数据库中;接收数据时,能同步画出温度变化的曲线,系统可查询历史温度信息。具体在上位机程序里面体现出来,下图为上位机工作流程图。图3.3 上位机工作流程图数据采集实时程序设计思路:本程序设计使用VB6.0的通用串口控件MSComm来对发送到串口的数据进行采集处理。VB6.0的MSComm通信控件提供了一系列标准通信命令接口,它允许简历串口连接,可以连接到其他通信设备,还可以发送命令,进行

29、数据交换以与监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序。一般说来,计算机都有一个或多个串行端口,它们依次为Com1、Com2、这些串口还提供了外部设备与PC进行数据传输和通信通道,这些串口在CPU和外设之间充当解释器的角色。基本属性与描述如下:Commport 设置或返回通信端口。Settings 以字符的形式设置或返回波特频率、奇偶校验、数据位和停止位。PortOpen 设置或返回通信端口的状态,也可以打开和关闭端口。Input 返回和删除接收缓冲区中的字符。Output 将字符穿写入发送缓冲区。CommEevent属性为通信事件活

30、错误返回下列值之一,在该控件的对象库中也可以找到这些常量。你只有首先要确定mscomm控件在system目录下并且该控件已经被windows注册,程序才能正常运行。 有数据向串口发过来时,程序可以将数据接收到,接收的数据是字符型的,那么数据转化为数字型的,再将这个数据的大小作为画图的某一个点的纵坐标,横坐标为数据的序号,将这些用线连起来就是一个曲线图了,这个就是图形显示基本原理。查看原来的数据的原理也是这样的,不同的地方就是,数据是从文件中来,同样的也是将多个数据分成一个一个的,然后一个数据的大小就是画图的为一个点的纵坐标,横坐标同样为数据的序号,再将这些点用线连起来就是曲线图。图形能移动的原

31、理就是我们首先改变的只是数据,图形并没有变化,但图形的形式是由这些数据来确定的,当数据发生变化后,我们通过刷新显示区来变化的。VB编写的实时显示界面如图3.4 所示,点击查询可查询历史温度信息。图3.4 实时温度曲线显示与查询图串口的波特率,串口号都采用下拉选择的方式,在使用中可根据的情况选择读串口数据的原理是,只要在有数据向串口发数据来时,计算机就会自动将其数据写到一个特定的缓冲区,我们只要写程序去读那个特定的缓冲区就可以了。此外为了保存和查询历史温度数据还要在VB中设计建立连接到Access数据库的控件,Data控件是Visual Basic6.0中的一个置数据控件,可以通过设置Data控

32、件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。建立的数据库文件和VB中创建的工程文件必须放在同一目录下。 4程序设计4.1上位机程序在上位机VB程序的编写中,最重要的是串口的初始化程序的接受触发程序的设计,本设计使用VB6.0的通用串口控件MSComm来对发送到串口的数据进行采集处理。主要方法如下:串口设置:MSComm SetSettings(“波特率,校验方式,数据位数,停止为数”)串口数据:MSComm InputMode(输入模式设定)具体程序设计如下:Private Sub Form_Load()On Error GoTo err

33、:MSComm1 mport= IMSComm1.InputMode =eomInputModeBinaryMSComm1.RThreclrold = IMSComm1.SThreshold= IMSComm1.Settings = 9600,n,8,2Call tabinitCall ScaleSysIf MSComml.PortOpen=False Then MSComml.PortOpen=True mark = TrueCmdStop.Enabled=FalseExit Suberr: Select Case err.Number Case comPortAlreadyOpen Msg

34、Box没有发现此串口或被占用,49,温度采集系统Case ElseMsgBox没有发现此串口或被占用,49,温度采集系统End Selecterr.ClearEnd Sub 在VB程序中设置为串口1,输入模式为二进制,且接收和发送一个字符就会触发MSComml的OnComm接收触发事件。波特率设置为9600,可以根据具体设计情况更改波特率的大小,但要与下位机的一致。程序中还编写了错误处理程序,当串口被占用时会转去执行err程序,出现系统报错。 接收触发事件的处理,当每发送一次指令时,就会触发OnComm事件,并返回数据串,通过计算获取温度测量值并显示出来,具体设计程序如下:Private Su

35、b MSComml_OnComm() Dim Inbyte() As Byte Dim buffer As String Dim datatemp2a, datatemp2b As String Dim datatemp2 As String Dim countAs Integer读取仪表返回数据串 Select Case MSComm l mEvent Case comEvReceive count = MSComm1.InBufferCount Inbyte = MSComml.Input If count 2 Then Exit Sub counter = counter + 1 For

36、 i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i) Next i End Select程序中,接收到的数据暂存在Inbyte()中,buffer为温度数据缓存,接收到的数据按16进制的格式放入缓冲中,便于之后的数据处理。此外程序还添加了接收温度数据的判定,接收到的温度数据应为两字节,且低位在前,当接收到的数据不是两字节时,表示接收错误,跳出此程序。为了在VB界面能够显示当前的温度值,需要将采集的两字节温度数据转化为十进制测量数据,转化程序如下: If Len(Trim(Mid(buffer, 1, 2) =

37、 1 Then datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Str(0) & Mid(buffer, 1, 2) * 0.0625Else datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Mid(buffer, 1, 2) * 0.0625End If 保存数据 Data_save (datatemp(num)此外,本VB程序还做了一定的功能扩展,能够显示历史温度的最大值和最小值以与平均值,还可通过下拉方式选择合适的波特率、串口和采样间隔时间。采集的温度数据还通过Data控件存入数据库中。在设计过程中可以用

38、虚拟串口和串口调试助手对所设计的程序进行仿真,看是否达到设计要求。整个VB界面与数据库程序的编写见附录所示。5 结 论随着科技的发展,在各个领域都要用到数据采集系统,其中就包括最普遍的温度的数据采集。传统的温度采集方法费时且精度较差,而如今各个行业对温度数据的要求越来越高,如科研实验室,因此新型的数字温度计大量出现,其中最普遍的是使用传感器和单片机组成采集电路就可以获得较高的精度要求。在这种背景下,选择基于VB6.0的数据采集系统这个课题具有很大的现实意义,用VB编写上位机程序,在PC上通过图形界面就能控制下位机即单片机采集温度数据信号,设计直观大方,使用DS18B20高灵敏度的温度传感器采集

39、温度数据,再用AT89C51处理数据,在PC界面显示当前温度,并且可以通过串口向上位机传送数据,显示实时温度曲线和把数据存入数据库中,方便查询历史温度记录。读数方便,测量围广,测温准确。硬件电路较简单,所以软件设计较复杂,DS18B20只有一个数据口,所以它的读写程序对时序有很高的要求。在整个采集系统中,包括温度采集程序串口通信程序,和上位机的程序,数据库等等儿个部分,为了避免干扰,当上位机VB界面点击“采集温度”时,向下位机发送特定字符,当下位机识别正确字符,才将温度数据传送给上位机。在设计过程中,对整个系统硬件和软件的分析,采用模块化程序设计的方法,流程图分析设计思路,将系统分成几个模块,

40、最终进行整合,从而实现了基于VB6.0的数据采集系统的设计。在毕业设计的过程中,针对所要设计的课题,我更加系统的学习了VB6.0语言和C语言,能够较熟练的运用伟福、PROTEUS和VB6.0等设计软件,使我了解了测温的原理和相关领域的知识。就个人而言,在这次毕业设计锻炼了个人意志以与在克服困难的毅力,培养了我在一定的压力下进行研究和设计的心理素质,独立处理问题的能路,提高了我查找运用各种参考资料以与与其他人沟通交流解决问题的能力。此外,整个设计过程中由于指导老师的帮助下,开拓了我的思维,提高了将所学知识学以致用的能力。附录 上位机程序X定义窗体级变量在显示、绘图、报警等过程中使用Dim dat

41、atemp(200) As Single / 用于存储温度采样值Dim num As Integera /用于存储采样值个数Dim counter As Integer /采样个数计数器 Dim mark As Boolean, /暂停标志Dim strSql As StringPrivate Sub cmd_Search_lick() strSql=select *from TblWD Where t=1 Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseClient Rs.Open strSql, Db, adOpenKeyset,

42、 adLockReadOnly If Rs, RecnrdCm,nt 200) Or (Txttimes 60) Or (Txulme Txttimes.Text一1 Then /接收个数判断Timer1 Enabled=False /接收完毕Shpstate.EiIIColor= &H80FF&Exit SubEnd If读取仪表返回数据串Select Case.MSComml mEventCase comEvReceiveCount=MSCommI.InBufferCount /接收温度数据个数,两字节,低位在前Inbyte=MSComml.Input /接收温度数据If enunt 2

43、ThenExit Sub /不是两字节,表示接收错误,跳出程序counter= counter+ 1 /基数器加1For i=LBound(lnbyte) To UBound(Inbyte) /把接收的数据安十六进制格式放入缓冲中buffer =buffer +Hex(lnbyte(i)Next iEnd Select获取十进制测量数据If Len(Trim(Mid(buffer, 1, 2)=1 Then datatemp(num) = Val(&H & Mid(buffer, 3, 3) & Str(0) & Mid(buffer 1, 2) * 0.0625Else datatemp(n

44、um) = Val(&H & Mid(buffer, 3, 3) & Mid(buffer, 1, 2) * 0.0625End If保存数据Data_save (datatemp(num)获取十六进制测量数据 If Len(Trim(Mid(buffer, 1, 2) = 1 Then datatemp2a=Str(0) &Trim(Mid(buffer, 1, 2)Else datatemp2a=Mid(buffer, 1, 2)End IfIf Len(Trim(Mid(buffer, 4, 2) = 1 Then datatemp2b=Str(0) & Trim(Mid(buffer,

45、 3, 2)Else datatemp2b=Mid(buffer, 4,2)End Ifdatatemp2 = datatemp2a & & datatemp2b显示测量温度值 If counter=num + 1 Then If datatemp(num) 0 Then不能显示零度,别的正常 Grid.Col=1: Grid.Row=num+ 1 Grid.Text=Format$(datatemp(num), 0.0) If counter 13 Then Grid.TopRow=counter-12控制滚动条的滚动 TempText=Format$(datatemp(num), 0.0)

46、 /10进制显示.保留一位小数 Num=num + 1 Call cal / 调用计算极值、平均值子程序 Call draw /调用绘曲线过程End If End Sub统计计算计算极值、平均值Sub cal() On Error GoTo err Sum =0 Max = datatemp(0): Min = Max For i=O To num-1 If daratemp(i) =Max Then Max=datatemp(i) If daratemp(i) =Min Then Min=daratemp(i) Sum =Sum + datatemp(i)Next iaver =Sum /n

47、umMaxText.Text=Format$(Max.0.0)MinText.Text=Format$(Min.0.0)AverText.Text=Format$(aver.0.0)err:End Sub温度曲线绘制绘制温度实时变化曲线Private Sub draw()Picturel.DtawWidh=2 /设置线宽Picture1 .DrawStyle = vbSolidFori=1 To num-1X1 =(i1): Y1=datatemp(i-1)X2=i: Y2=datatemp(i)Picture1.Line (XI, Yl)-(X2, Y2), QBColor(0) /绘制温度

48、曲线Next iEnd Sub重新采集数据Private Sub renew()If num = 0 Then Fxit SuhAverTexrText=:AverText.Text=MinText.Text=MaxText.Text=Grid ClearPictuel.ClsCall ScaleSysFor i =O To num-1datatemp(i) = 0Next inum=0counter=0Call tabinit /数据表格初始化End Sub数据表格初始化Public Sub tabinit()Grid.Cols=2 /两列Grid.Rows=Txttimes.Text+1

49、/Rows的值必须至少比FixedRows的值大一Grid.ColWidth(0)=650 /设置表格宽度Grid.CoIWidth(1) = 850Grid Col=0For i = 1 To Txttimes.TextGrid.Row = iGrid.Text= +Str$(i)Next iGrid.Row=0Grid.Col=0: Grid.Text=序号Grid.Col二1:Grid.Text=温度值Grid.TopRow = 1 /置在第一页Grid.LeftCol = 1End Sub定时发送采集标志每隔xms向仪表发送读数据命令串每台仪表有一个仪表号,PC机通过仪表号来识别网上的

50、多台仪表程序中仪表号(即地址代号)要与仪表设定值一致,否则不能返回数据。Private Sub Timert_Timer()Dim a as VariantA=1MSComml.0utput=a /发送开始标志End Sub卸载窗体Private Sub Cmdquit_ClickOIf MSComm1.Port0pen =True Then MSComm 1.Port0pen = False/关闭串口Unload Me /卸载窗体EndEnd Sub串口设置Sub setCom()On Error GoTo err:MSComml mport=Val(Mid(Txtcom.Text, 4,

51、1) /设置串口MSComml.Settings =TxtBaudRate.Text & ,n,8,2 /设置波特率IfMSComml.PortOpen=False Then MSComml.PortOpen=True /打开串口Timerl.Enabled=True /开定时器Shpstate.FillColor= &HFF&Exit Suberr:Select Case err.NumberCase comPortAlready0pen /如果串口已经打开,则提示MsgBox没有发现此串口或被占用,41, 温度采集系统,Case ElseMsgBox 没有发现此串口或被占用,49, N度采

52、集系统End SelectShpstate.FillColor=&H808080 /填充停止状态Timerl.Enabled=False /关闭定时器CmdStart.Caption =开始采集CmdStop.Enabled=FalsePicturel.ClsCall renew /初始化表格Call ScaleSys /建立坐标系err ClearEnd Sub建立图像坐标系Sub ScateSys() /坐标系Picturel.AutoRedraw=True /自动重绘有效Picturel.DrawWidth= 1 /线宽1个像素Picturel.ScaleMode=vbPixels /像

53、素为单位Picturel.Scale (0, 125)-(200,-50) /坐标系Picturel.DrawStyle=vbDot /点线横坐标Picwrel.Line (0, 0)-(200, 0), RGB(130, 130, 130)Picturcl.Linc (0, 25)-(200, 25), RGB(130, 130, 130)Plcturel.Line (0, 50)-(200, 50), RGB(130, 130, 190)Picturel.Line (0, 75)-(200, 75), RGB(130, 130, 130)Picturel.Line (0, 100)-(200, 100), RGB(130, 130, 130)Picturel.Line (0,-25)-(200,-25), RGB(130, 130, 130)纵坐标Plemrel.Line (25,125)-(25,-50), RGB(130 130 130)Picturel.Line (50,125)-(50,-50),RGB(130, 130, 130)Picturel.Line (7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论