基于虚拟仪器的温度测控系统设计.doc_第1页
基于虚拟仪器的温度测控系统设计.doc_第2页
基于虚拟仪器的温度测控系统设计.doc_第3页
基于虚拟仪器的温度测控系统设计.doc_第4页
基于虚拟仪器的温度测控系统设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

河南大学物理与电子学院本科毕业论文编号:摘 要:10 前言21虚拟仪器简介31.1虚拟仪器 (VI) 的概念31.2 LabVIEW 的概念41.3虚拟仪器的优点51.4 LabVIEW软件的简介62 RS-232串行通信协议82.1 LabVIEW串口VISA82.2 RS232串口通信原理103上位机测控系统设计113.1串口的设置及预设温度输入113.2温度的显示123.3 温度的比较与警示153.4LabVIEW前面板154 下位机测控系统设计164.1 下位机硬件设计164.2 下位机软件设计19结论23参考文献2423摘 要: 虚拟仪器(VI,Virtual Instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。虚拟仪器利用NI公司的LabVIEW软件及数据采集卡等硬件,取代以往由纯硬件构成的仪器测控系统。温度检测与控制在工农业生产、医学研究等科研工作中具有非常重要的地位。本作品由一个PC,RS-232通信协议,一个AT89C51单片机及一个DS18B20及制冷与制热系统和相关外围电路组成。PC通过LabVIEW(Laboratory Virtual Instrument Engineering Workbench)向下位机发送预设温度范围,单片机通过串口不断向PC传送温度参数,实现温度的测量。单片机把DS18B20传来的温度与上位机发来的预设范围进行比较,根据比较结果控制外围电路的制热或制冷系统,从而实现温度的控制。该系统可用于相关温度控制领域。它具有数据处理能力强,通用性强,易于网络化以实现远程控制,耗材少,成本低等优点。关键词: 虚拟仪器;串口通信;单片机;LabVIEW;温度控制Based on virtual instrument of temperature measurement and control systemLiu Ming(School of Physics and Electronics, Henan University, Henan Kaifeng 475004, China)Abstract: Virtual Instrument is a instrument which based on computer, The combination of computer and instruments is very popular nowadays . VI use LabVIEW,Data acquisition card and other hardware to replace the previous measurement and control system which just consist of pure hardware.Temperature measurement and control has a very important position in industrial and agricultural production, medical research. My works is made of a PC, an AT89C51 chip , a DS18B20 temperature sensor , cooling and heating systems and related peripheral circuit component.At first,PC send preset temperature range to MCU. then MCU transfer parameters through a serial port to PC,which complete the measurement task.Second, MCU decide whether present temperature is in the preset temperature range, and then control peripheral circuit to complete control function. The advantages of VI are data processing ability, versatility, easy to network to realize remote control, consumables less and low cost. Key words: VI ;Serial communication ;MCU ;LabVIEW;Temperature control 0 前言当前的测温控制系统大都使用传统温度测量仪器其功能大多都是由硬件或固化的软件来实现,而且只能通过厂家定义、设置,其功能和规格一般都是固定的,用户无法随意改变其结构和功能,而且型号繁多,维修不便,因而已不能适应现代化监测系统的要求。随着计算机技术的飞速发展,美国国家仪器公司(NI)率先提出了虚拟仪器的概念,彻底打破了传统仪器由厂家定义、用户无法改变的模式,使测控仪器发生了巨大变革。虚拟仪器1技术充分利用计算机的强大运算处理功能,突破传统仪器在数据处理、显示、传输、存储等方面的限制,通过交互式图形界面实现系统控制和显示测量数据,并使用框图模块指定各种功能。下位机只需要各种相应的数据采集卡,把采集到的信号交由计算机处理,省去了以往仪器各自分散的集成处理电路,把各个测控仪器简化为一个传感器及单片机和虚拟仪器软件结合的新型仪器概念。这样本作品就简化为一个单片机采用集成电路温度传感器和虚拟仪器方便地构建一个测温系统,且外围电路简单,易于实现,便于系统硬件维护、功能扩展和软件升级。利用LabVIEW2作为语言开发平台设计系统软件并利用计算机串口与下位机串行通讯,实现温度的实时测量与控制。当前,相关LabVIEW温控领域,往往是把预设温度值固化到单片机中,上位机PC只起到监测、记录、分析作用。而控制作用较少体现。本作品在使用时预设温度由上位机发出,下位机接收后才开始工作,把环境温度控制到预设温度范围内,且每次启动时可以更改温度范围。特别适用于不同时段需要不同恒温的生产或实验环境。 1虚拟仪器简介LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。1.1虚拟仪器 (VI) 的概念虚拟仪器(VI)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。 数 据 处 理数据采集卡信 号 处 理被 测 对 象虚拟仪器面板图 1-1 常见虚拟仪器方案虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国 NI 公司的 LabVIEW。 虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在 Microsoft公司的 Windows 诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0 以前的版本。对虚拟仪器和 LabVIEW 长期、系统、有效的研究开发使得该公司成为业界公认的权威。目前LabVIEW 的最新版本为 LabVIEW2009,LabVIEW 2009 为多线程功能添加了更多特性,这种特性在 1998 年的版本 5 中被初次引入。使用 LabVIEW 软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、LabVIEW Real-Time 工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。 普通的 PC 有一些不可避免的弱点。用它构建的虚拟仪器3或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI 标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的 VXI 机箱,再与计算机相连,就组成了一个测试系统。VXI 仪器价格昂贵,目前又推出了一种较为便宜的 PXI 标准仪器。1.2 LabVIEW 的概念与 C 和 BASIC 一样,LabVIEW 也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据。显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。LabVIEW是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是 LabVIEW 的程序模块。LabVIEW 提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在 LabVIEW 中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。尽可能采用了通用的硬件,各种仪器的差异主要是软件。可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。用户可以根据自己的需要定义和制造各种仪器。虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是 IEEE 488 或 GPIB协议。未来的仪器也应当是网络化的。LabVIEW是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足 GPIB、VXI、RS-2324和 RS-485 协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX 等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。 图形化的程序语言,又称为 “G” 语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW 是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。 利用 LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位/64位编译器。像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。 它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件!现在的图形化主要是上层的系统,国内现在已经开发出图形化的单片机编程系统,支持32位的嵌入式系统,并且可以扩展。1.3虚拟仪器的优点同其他技术相比,虚拟仪器技术具有四大优势5l、性能高虚拟仪器技术是在PC技术的基础上发展起来的,所以完全继承了以现成即用的PC技术为主导的最新商业技术的优点,包括功能卓越的处理器和文件I/O,使您存数据高速导入磁盘的同时就能实时地进行复杂的分析。此外,不断发展的因特网和越来越快的计算机网络使得虚拟仪器技术展现其更强大的优势。2、扩展性强NI的软硬件工具使得我们不再受限于当前的技术中。这得益于NI软件的灵活性,只需更新计算机或测量硬件,就能以最少的硬件投资和极少的、甚至无需软件上的升级即可改进整个系统。在利用最新科技的叫候,我们可以把它们集成到现有的测量设备,最终以较少的成本加速产品上市的时间。3、开发时间少在驱动和应用两个层面上,NI高效的软件构架能与计算机、仪器仪表和通讯方面的最新技术结合在一起。NI设计这软件构架的初衷就是为了方便用户的操作,同叫还提供了灵活性和强大的功能,使我们轻松地配置、刨建、发布、维护和修改高性能、低成本的测量和控制解决方案。4、无缝集成虚拟仪器技术从本质上说是一个集成的软硬件概念。随着产品在功能上不断地趋于复杂,工程师们通常需要集成多个测量设备来满足完整的测试需求,而连接和集成这些不同设备总是要耗费大量的时间。NI的虚拟仪器软件平台为所有的I/O设备提供了标准的接口,帮助我们轻松地将多个测量设备集成到单个系统,减少了任务的复杂性。1.4 LabVIEW软件的简介1.4.1 LabVIEW的操作模板LabVIEW具有多个图形化的操作模板,用于创建和运行程序。这些操作模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板共有三类,为工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。工具模板(Tools Palette):工具模板为编程者提供了各种用于创建、修改和调试VI程序的工具。控制模版(Control Palatte):用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。 功能模板(Functions Palette):功能模板是创建程序框图的工具。该模板上的每一个顶层图标都表示一个子模板。 图1-2工具选版图 1-3 控件选版 图1-4 函数选版1.4.2 简单LabVIEW VI程序实例5使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。VI包括三个部分:程序前面板、框图程序和图标/连接器。程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。在程序前面板上,输入量被称为控制,输出量被称为显示。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表等,这使这得前面板直观易懂。下面是一个温度计程序。图1-5 Thermometer VI 前面板每一个程序前面板都对应着一段框图程序。框图程序用LabVIEW图形编程语言编写,可以把它理解成传统程序的源代码。框图程序由端口、节点、图框和连线构成。其中端口被用来同程序前面板的控制和显示传递数据,节点被用来实现函数和功能调用,图框被用来实现结构化程序控制命令,而连线代表程序执行过程中的数据流,定义了框图内的数据流动方向。上述温度计程序(Thermometer VI)的框图程序如下:图 1-6 Thermometer VI 程序框图2 RS-232串行通信协议串行通信是工业现场仪器或设备常用的通信方式,它是将一条信号的各位数据按顺序逐位传送。计算机串行通信6 (简称串口)采用RS-232协议,允许一个发送设备连接到一个接收设各以传送数据,最大速率为115200bit/s。计算机串行口采用Intel8250异步串行通信组件构成,通常以COMl-COM4来表示。本文需要通过RS-232实现上位机PC与下位机89C51单片机实现通信。2.1 LabVIEW串口VISA LabVIEW中提供了已封装好的串口通信节点,它们位于函数数据通信协议串口图 2-1 VISA串口这里主要介绍程序中使用到的串口配置、串口读取、串口写入和串口关闭,其他串口相关的节点使用方法查询LabVIEW帮助。2.1.1 VISA串口配置 在进行串口通信时,首先要对串口进行初始化和配置。这可以由VISA配置串口节点来完成,串口配置节点如下图所示。图2-2 VISA配置串口使用该节点可以设置串口的VISA资源名称、波特率、数据位、校验位、超时时间、终止符以及流控制等参数。 VISA资源名称控件用于规定对VISA会话句柄开放的资源,并维持会话句柄和类。VISA会话句柄是VISA使用的唯一逻辑标识符,用于与资源进行通信。VISA会话句柄由VISA资源名称输入控件保持,用户不可见。VISA资源名称输出是VISA函数中输出的VISA资源名称的副本。通过将资源名称输出或输入函数和VI,并链接函数和VI,从而简化数据流编程。这与文件I/O函数使用的文件引用句柄输出相似。2.1.2 VISA串口写入串口写入是将写入缓冲区的数据写入VISA资源名称指定的设备或接口,可以选择同步或异步。该操作仅当传输结束后才返回。VISA写入的节点图标及端口定义如下图所示。图2-3 VISA写入其中写入缓冲区包含要写入设备的数据。返回数包含实际写入的字节数量。2.1.3串口读取 从VISA资源名称所指定的设备或接口中读取指定数量的字节,并将数据返回至读取缓冲区,可以选择同步或异步。该操作仅当传输结束后才返回。VISA读取的节点图标及端口定义如下图所示。图 2-4 VISA读取其中字节总数包含要读取的字节数量,读取缓冲区包含从设备读取的数据,返叫数包含实际读取的字节数量。2.1.4串口关闭关闭VISA资源名称指定的设备会话句柄或事件对象。VISA关闭节点的图标及端口定义如下图所示。图 2-5 VISA关闭在使用LabVIEW提供的串口节点功能时,必须安装串口驱动。2.2 RS232串口通信原理硬件结构:系统采用AT89C517作为下位机,PC机作为上位机,二者通过RS-232串口接收或发送数据,指令传输介质为二芯屏蔽电缆。RS-232信号和单片机串口信号的电平转换采用MAX232其内部具有双驱动器、双接收器的通信器接口电路,通过外接电容而进行倍压及电压极性转换,只需+5V,5mA的电源供电,串行通信原理图如下图所示:图 2-6 串行通信原理图通信协议:系统中PC机作为上位机负责系统的通信参数设定,数据接收处理及对单片机的控制,程序采用LabVIEW编写。单片机接收PC机得指令,并向PC及发送所需数据。采用RS-232异步通信方式,单片机采用串口通信的方式1,第1位起始位,8位数据位,最后一位停止位,无奇偶校验,波特率为9600bit/s。3上位机测控系统设计在主机通信程序设计中,串口通信8 9功能模块包括串口初始化模块、串口读模块以及串口写模块,通过这些模块可以实现与单片机的通信.编写LabVIEW 程序时, 首先进行串口初始化,调用VISA Configure Serial Port按照通信协议完成串口参数的设置,包括所用串口号、波特率、一帧信息中有效数据的位数、停止位、数据流量控制等。VISA resource端口号选择为计算机上的COM1。如果初始化没有问题,就可以使用这个串口进行数据收发.整个程序放在一个无限循环的while语句中。 通过一个发送按钮及一个条件结构决定PC 机是否发送数据;若发送按钮按下条件结构为真,则PC 机将写入缓冲区的数据写入VISA Write模块后按照通信协议从串口发送给单片机。若条件结构为假,则只将VISA资源名称及错误输出传递给下个节点。 属性节点通过VISA资源名称获取串口传送过来的数据的字节总数,将字节总数写入VISA Read模块,VISA Read输出所接收到的数据,通过一个条件结构确定是否清空接收缓冲的数据。数据传送过程中是以ASCII码字符串形式传送的。在串口使用结束后,使用VISA Close结束与VISA Resource Name指定的串口之间的会话。 LabVIEW 程序中还设计了一个时间和日期的小程序。利用LabVIEW 函数库中所自带的读取日期和时间的函数,在LabVIEW 的前面板创建显示时间和日期控件,目的用于显示程序运行时的系统当前时间。3.1串口的设置及预设温度输入本文实现的是温度的测量与控制。串口的设置为波特率9600bit/s,数据比特位为8位,奇偶校验位无。通过VISA Write向数据缓冲区写入两字节数据。温度的上下限。如温度下限为30,上限为35,当温度在预设范围内时“温度正常”指示灯亮,反之“温度异常”指示灯亮,上位机将输入的预设温度值通过VISA发送到串口的SBUF中,单片机读取预设温度值,根据接收到的预设温度及单片机通过DS18B20中返回的温度值进行比较,如果实际温度值低于预设温度下限,则通过单片机内程序向P2.0口发送高电平启动加热系统,如果实际温度值低于预设温度上限,则向P2.1口发送低电平启动制冷系统。如果在预设范围之内则维持低电平,加热和制冷系统都不工作。图3-1 温度预设值的写入图中VISA Write被置于一个条件结构中,当布尔控制键(图中OK键)按下时向VISA Write中写入数据,在实际操作时,预设温度下限及预设温度上限合并为一个数组,并由空间转换为字符串写入到VISA Write中,通过SBUF写入到单片机中。3.2温度的显示如下图为温度比较与显示程序框图9,当单片机接收到串口数据,预设温度上下限后,单片机开始工作,将采集的温度数据帧送往串口。图 3-2 温度比较与警示显示程序框图温度数据帧格式为“0xF9,0xFF,0x00/0xFF”。其中:0xF9为固定帧头;0xFF的最高位为符号位(0为正值,1为负值),低7位为温度整数部分的绝对值;0x00/0xFF前而值时表示小数位0.0,后而值时表示小数为0.5。单片机I/O口选用P1.0,串口波特率配置为1200,偶校验。 AT89C51的P1.0引脚与DSl8B207的数据输入输出口线I/O连接,接口如下图所示。图3-3 温度传感器与单片机接口连接图3.2.1串口温度数据的处理图3-4 完成串口读取的程序框图由于串口读写的端口定义默认为字符串类型,而串口读取的字符串要转换为字节数组才能正确地作后续处理。串口读取数据为字符串类型,需要转换控件把字符串转换为字符数组,以为温度数据为16位的,运用LabVIEW中函数选版中,编程数组数组子集,因为实际传来的数据为三字节,其中第一字节为0xF9,为帧头标志,其余两个字节表示温度。因此生成的数组有三个元素,所以把数组子集的参数设置为:索引值1,长度为2。即从元素1开始索取长度为2字节的数据,这就是表示只取数据的后两个元素,也就是实际需要的温度数据。在新生成的数组中,再用LabVIEW中,编程数组索引数组,我们可以把数据的两个字节分开处理,第一字节为温度的整数部分及符号位(最高位为符号位),在实际比较中我们把它当做无符号位的数据,通过与128比较,高于128的为负数,通过条件结构判断,并得出它与128的差值,再乘以正负号。第二字节为小数部分,DS18B20的精度为0.5度。通过与0比较,产生一个布尔数,作为条件结构的判断参数。如果与0相等,则说明温度值为整数,在后续加法器中加0。如果与0不相等,则说明温度值为单精度,在后续加法器中加0.5。3.2.2串口温度数据的显示从串口中读取的字符串转换为三个字节,其中第一个字节为0xF9,为帧头标志,其余两个字节表示温度。前面介绍过表示温度的数据有两个字节,第一个字节的最高位表示温度的正负,后七位表示温度的整数值,第二个字节表示温度的后一个小数,0x00时表示0.0,0xFF表示0.5。这两个字节共同表示实际的温度。将温度送入数值中的温度及控件,即可显示温度传感器的温度,通过前面板空间,仪表与温度计显示,具体程序框图如下。 图3-5 温度测量模块程序框图3.3 温度的比较与警示温度数据被读取显示后,需要判断其是否在所设置的范围之内,图中将读取的温度值与与预设值进行比较,产生两个布尔数,这两个布尔数做与运算,只有当两个布尔数同时为真时,即相与为真时,温度正常指示灯才会亮。否则温度异常指示灯会亮。程序框图中有定时器,每一秒向上位机发送一次数据。VISA Write 向下位机写入数据后,只有VISA Read工作,不断地读取数据显示数据。本作品中只在系统开启时写入数据以控制温度的范围,因为单纯的上位机手动控制是没有实际意义的且较为繁琐,所以温度控制过程交由的单片机自动控制。上位机在发送指令后,只作为监测设备,负责记录,分析,报警,传送数据给有关单位。注:开始使用本系统前必须首先设置预设温度上下限,否则程序中while循环无法进行。 3.4LabVIEW前面板图 3-6 智能温度测控系统前面板4 下位机测控系统设计本文采用的是,AT89C51单片机最小系统和MAX232电平转换电路、DS18B20数字温度传感器、两个虚拟的由电阻代替的制冷和制热系统构成的硬件系统。硬件原理图如下图: 图 4-1下位机硬件原理图4.1 下位机硬件设计本设计硬件电路,硬件电路10所用元件较少,也是体现了虚拟仪器的优点,一切显示及分析功能的实现都交由PC去处理,节省了硬件成本,而且交由PC后便于实现远程通信,实现远程的实时监控。4.1.1 温度传感器DS18B20DSl8820是美国DALLAS公司生产的单线数字温度传感器,可把温度信号直接转换成串行数字信号供微机处理,从DSl8B20读出的信息或写入的信息,只需要一根口线与MCU连接。引脚线中除了一根数据输入输出口线外,另二根为电源和地线。数据线可完成:数据的读写,温度转换控制,寄生电源的提供(用数据线供电无需额外电源)。检测系统无需任何外围硬件。DS18B20是DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。图 4-2 DS18B20封装与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总 线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、 传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。 图4-3 DS18B20内部结构DS18B20特性:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围: 3.0-5.5 V。(4)测温范围:-55-125 。固有测温分辨率为0.5 。(5)通过编程可实现9-12位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。4.1.2 MAX23211与串口串口的电气特性:1)RS-232串口通信最远距离是50英尺2)RS-232可做到双向传输,全双工通讯,最高传输速率20kbps3)RS-232C上传送的数字量采用负逻辑,且与地对称逻辑1:-3 -15V 逻辑0:+3+15V 所以与单片机连接时常常需要加入电平转换芯片:串口通信参数:1)波特率:RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200bit。2)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位);扩展的ASCII码是0255(8位)。3)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。图 4-4串口与电平转换MAX232连接图4)奇偶校验位:在串口通信中一种简单的检错方式。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。串行通信中,线路空闲时,线路的TTL电平总是高,经反向RS-232的电平总是低。一个数据的开始RS-232线路为高电平,结束时RS-232为低电平。数据总从低位向高位一位一位的传输。示波器读数时,左边是数据的高位。4.2 下位机软件设计4.2.1 下位机流程图下位机利用Keil C进行编写,Proteus进行仿真通过。单片机程序包括三个主要功能:一、RS-232串口通信的初始化设置。二、DS18B20温度数据的读取。三、与上位机发来的的数据进行比较,从而进一步控制制热或制冷系统的启动。开始系统初始化读取DS18B20数据并发送至串口供上位机处理上位机输入温度上下限是在温度范围否?否否在预设温度范围之上?置P2.1置高电平,即启动制热系统是把P2.0置高电平,即启动制冷系统图4-5 系统流程图4.2.2 下位机C语言源程序(主要程序)单片机与PC串口通信晶 振 频 率:11.0592M#include sbit DQ=P13;/DS18B20数据接口sbit JDQ1=P20;sbit JDQ2=P21;void delay(unsigned int);/延时函数 void DS18B20_init(void); /DS18B20初始化unsigned int get_temper(void); /读取温度程序 void DS18B20_write(unsigned char in_data); /DS18B20写数据函数unsigned char DS18B20_read(void);/读取数据程序 unsigned int htd(unsigned int a); /进制转换函数float temp;/温度寄存器unchar settemplow; /存储预设温度下限unchar settemphigh; /存储预设温度上限bit DS18B20; / 18B20存在标志,1-存在 0-不存在 void main(void) unsigned int a,temp; TMOD=0x20; /定时器1-方式2 TL1=0xfa; TH1=0xfa; /11.0592MHZ晶振,波特率为4800 SCON=0x50; /方式1 TR1=1; /启动定时temp=get_temper();/这段程序用于避开刚上电时显示85的问题for(a=0;a200;a+) delay(500);while(1) settemplow=SBUF;/串口的第一字节数据即温度下限 settemphigh=SBUF; /串口的第二字节数据即温度上限 temp=get_temper();/测量温度 for(a=0;a8); /将温度发送给PC while(TI!=1);TI=0; SBUF=(unsigned char)temp; while(TI!=1);TI=0; if((temp) settemphigh) JDQ1=0;/继电器1动作,这里用电阻代替else JDQ1=1;/继电器1复位 if(temp) settemplow) JDQ2=0;/继电器2动作,这里用电阻代替else JDQ2=1;/继电器1复位 /DS18B20读取温度函数/unsigned int get_temper(void) unsigned char k,T_sign,T_L,T_H;DS18B20_init(); /DS18B20初始化 if(DS18B20) /判断DS1820是否存在?若DS18B20不存在则返回 DS18B20_write(0xcc); / 跳过ROM匹配 DS18B20_write(0x44); /发出温度转换命令 DS18B20_init(); /DS18B20初始化 if(DS18B20) /判断DS1820是否存在?若DS18B20不存在则返回 DS18B20_write(0xcc);/跳过ROM匹配 DS18B20_write(0xbe);/发出读温度命令T_L=DS18

温馨提示

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

评论

0/150

提交评论