基于labview的温度采集系统 - 图文

更新时间:2024-05-28 07:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南师范大学本科毕业论文(设计)

目 录

1 绪 论 ............................................................................................................................................................ 1

1.1 课题背景 ............................................................................................................................................... 1 1.2 虚拟仪器简介........................................................................................................................................ 2 1.3 图形化编程语言LabVIEW的简介 ..................................................................................................... 3 1.4 本论文任务 ........................................................................................................................................... 3 2 温度控制设计方案......................................................................................................................................... 5

2.1 硬件及软件的选择 ............................................................................................................................... 5

2.1.1硬件的选择 ................................................................................................................................ 5 2.1.2软件的选择 .................................................................................................................................. 6 2.2 硬件及软件设计方案 ........................................................................................................................... 7

2.2.1硬件设计方案 ............................................................................................................................ 7 2.2.2软件设计方案 ............................................................................................................................ 7

3 LabVIEW 开发环境以及PID和模糊控制模块简介 ................................................................................... 11

3.1 LabVIEW前台显示面板与后台控制面板 .......................................................................................... 11

3.1.1 LabVIEW前台显示面板 .......................................................................................................... 11 3.1.2 LabVIEW后台控制面板 .......................................................................................................... 11 3.2 LabVIEW程序执行流程 ...................................................................................................................... 11 3.3 LabVIEW中的仪器控制和驱动 .......................................................................................................... 11

3.3.1常用的仪器通信方式 .............................................................................................................. 12 3.3.2 LabVIEW支持的GPIB、VXI、标准串口I/O仪器的驱动 ................................................... 12 3.3.3 VISA简介 ................................................................................................................................ 12 3.4 PID控制模块简介 .............................................................................................................................. 13 3.5 模糊控制模块简介 ............................................................................................................................. 15 4 以单片机为核心的下位机的设计 ................................................................................................................. 17

4.1 下位机设计方案................................................................................................................................. 17 4.2下位机的硬件设计 .............................................................................................................................. 17

4.2.1主控部分.................................................................................................................................. 17 4.2.2 DS18B20测温部分 .................................................................................................................. 17 4.2.3通信部分.................................................................................................................................. 18 4.2.4程序下载部分 .......................................................................................................................... 18 4.3 下位机的软件设计 ............................................................................................................................. 18

4.3.1DS18B20工作原理及应用 ........................................................................................................ 19 4.3.2单片机串口通信部分 ................................................................................................................ 20 4.3.3单片机PWM功率控制部分 .................................................................................................... 20

5 基于PC的上位机编程设计 ......................................................................................................................... 23

5.1 方案设计与选择.................................................................................................................................. 23 5.2 上位机各模块设计 .............................................................................................................................. 23

5.2.1串口通信模块设计 .................................................................................................................... 23 5.2.2数据处理部分设计 .................................................................................................................... 23 5.2.3 PID控制部分设计 .................................................................................................................... 24

6 总结 ................................................................................................................................................................ 25 参考文献 ............................................................................................................................................................ 26 谢 辞 .................................................................................................................................................................. 27 附 录 .................................................................................................................................................................. 28

河南师范大学本科毕业论文(设计)

1 绪 论

现代计算机技术和信息技术的迅猛发展,冲击着国民经济的各个领域,也引起了测量仪器和测试技术的巨大变革。人们曾为测量仪器从模拟化、数字化到智能化的进步而欣喜,也为自动测试技术的日新月异的发展所鼓舞,当今虚拟仪器技术的出现又使得测量仪器进步入了高科技的殿堂。

与传统的仪器不同,虚拟仪器(virtual instrument)是基于计算机和标准总线技术的模块化系统,通常它是由控制模块、仪器模块和软件组成,在虚拟仪器中软件是至关重要的,仪器的功能都要通过它来实现,因此软件是虚拟仪器的核心,“软件就是仪器”,从本质上反映了虚拟仪器的特征。

从构成方式上讲,虚拟仪器可分为四大类:GPIB体系结构、PC-DAQ体系结构、VXI体系结构和PXI体系结构。

GPIB体系结构是通过GPIB总线将具有GPIB接口的计算机和仪器集成的测试系统。组建方便灵活、操作简单。

VXI体系结构综合了。pib和vem总线的优点,它集成的系统硬件集成度高、数据传输率快、便携性好,是当今倍受业界关注的体系结构。

PXI体系结构是以PCI总线为基础的体系结构,由于其总线吞吐率高、硬件的价格较低被业内人士认为是符合国情的一种体系结构。

虚拟仪器应用程序的开发环境主要有两种。一种是基于传统的文本语言的软件开发环境,常用的有lab windows/cvi、.visual basidc=vc++等:一种是基于图形化语言的软件开发环境,常用的有LabVIEW和hp vee。其中图形化软件开发系统是用工程人员所熟悉的术语和图形化符号代替常规的文本语言编程,界面友好,操作简便,可大大缩短系统开发周期,深受专业人员的青睐。 1.1 课题背景

随着世界经济的发展,工业的迅速扩张,政府和企业家们花在设备上的投入越来越多,这笔巨大的开销,极大地限制了企业的资金,从而制约着企业的发展。而虚拟仪器技术凭借着其开发容易、开发成本低、开发周期短等明显的优点,渐渐地在工业测控领域崭露头角。

它的出现使企业家们看到了降低成本的希望。本设计将就虚拟仪器怎样用在工业测控中进行一番简单的探讨。

1

河南师范大学本科毕业论文(设计)

1.2 虚拟仪器简介

随着微电子技术、计算机技术、软件技术、网络技术和现代测量技术的迅速发展,一种新型的先进仪器——虚拟仪器成为当前系统研究的热点。

虚拟仪器通过软件开发平台将计算机硬件资源与仪器硬件有机地融为一体,把计算机强大的数据处理能力和仪器硬件的测量、控制能力结合在一起,通过软件实现对数据的显示、存储及分析处理。

在对大规模、集成化、智能化及数字电子仪器需求愈加迫切的形势下,计算机技术、仪器技术和通信技术相结合,产生了具有里程碑意义的新一代仪器——虚拟仪器。虚拟仪器的出现开辟了仪器技术的新纪元,它是多门技术与计算机技术结合的产物,其基本思想逐步代替仪器完成某些功能,如数据的采集、分析、显示和存储等,最终达到取代传统电子仪器的目的。

虚拟仪器是计算机硬件资源、仪器硬件、数据分析处理、软件、通信软件极图形用户界面的又效结合,具有传统仪器所具备的信号采集、信号处理分析、信号输出等功能。其基本构成包括计算机、虚拟仪器软件、硬件接口和测试仪器等。

虚拟仪器以透明的方式把计算与传统仪器一样。虚拟仪器同样划分为数据采集与控制、数据分析与处理、结果表达三大功机资源和仪器硬件的测试能力结合起来,实现了仪器功能的运作。虚拟仪器的功能模块如图1-1所示。

图1-1 虚拟仪器的功能模块

串口仪器 GPIB仪器 统计 VXI仪器 分析 PXI仪器 图形用户接口 文件I/O PC—DAQ采集器 信号处理 网络传输 磁盘复制 数字滤波 虚拟仪器用各种图标或控件来虚拟传统仪器面板上的各种器件。由各种开关图标实现仪器电源的通断;由各种按钮图标来设置被测信号的“放大倍数”、“通道”等参数;由各种显示控件以数值或波形的方式显示测量或分析结果;由计算机的鼠标和键盘操作来模拟传统仪器面板上的实际操作;以对图形化软件流程图的编程来实现各种信号测量和数据分析功能。如下是虚拟仪器与传统仪器的比较表,直观的反应了传统仪器和虚拟仪器各自的性能

2

河南师范大学本科毕业论文(设计)

特点。

传统仪器和虚拟仪器的比较 传统仪器 仪器厂商定义 硬件是关键 仪器的功能、规模均已固定 封闭的系统,与其它设备连接受限制 价格昂贵 技术更新慢 开发和维护费用高 多为实验室拥有 虚拟仪器 用户自己定义 软件是关键 系统功能和规模可通过软件修改和增减 基于计算机的开放系统,可方便地同外设、网络及其它相应设备连接 价格低,可重复利用 技术更新快 软件结构可大大节省开发和维护费用 个人可拥有一个实验室 1.3 图形化编程语言LabVIEW的简介

LabVIEW(laboratory virtual instrument engineering workbench)是一种图形化的编程语言和开发环境,它广泛地被工业界、学术界和研究实验室所接收,被公认为是标准的数据采集和仪器控制软件。

LabVIEW不仅提供了与遵从GPIB,VXI,RS-232和RS-485协议的硬件及数据采集卡通信的全部功能,还布置了支持TCP/IP,ActiveX等软件标准的库函数,而且图形化的编程界面使编程过程变得生动有趣。LabVIEW是一个功能强大且灵活的软件,利用他可以方便的建立自己的虚拟仪器。

以LabVIEW为代表的图形化编程语言,又称为“G”语言。使用这种语编程时,基本上不需要编写程序代码,而是“绘制”程序流程图。LabVIEW尽可能利用工程技术人员所熟悉的术语、图标和概念,因而它是一种面向最终用户的开发工具,可以增强工程人员构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。

利用LabVIEW,可产生独立运行的可执行文件。LabVIEW是真正的32位编译器。像其他软件一样,LabVIEW提供了Windows,UNIX,Linux和Macintosh等多种版本。 1.4 本论文任务

(1)设计一个由微控制器控制的温度采集装置,使其能够准确地采集环境温度。 (2)通过某种通信协议,将采集到的温度送往上位机进行显示和处理。

(3)用LabVIEW编写上位机的程序,使其能够接受下位机发送来的温度信息数据,并作出处理想,同时显示在PC屏幕上。

(4)使用LabVIEW编写PID控制程序,能实现对温度的比较准确的控制。 (5)使用LabVIEW编写模糊控制程序,能实现对温度的控制。

3

河南师范大学本科毕业论文(设计)

图1.2 上位机界面

图1.2 硬件实物图

4

河南师范大学本科毕业论文(设计)

2 温度控制设计方案

本设计采用LabVIEW和AVR单片机组成系统的主要模块。由下位机把单线式温度传感器DS18B20测量到的温度,通过串口发送到的由LabVIEW构建的上位机去。然后在上位机中进行处理和显示,通过PID或者模糊算法,计算出要输出的控制量,再由串口将数据发送到下位机,交由下位机处理。下位机根据一定的关系,输出一定的信号来控制固态继电器的通断。固态继电器的交流端就会因为通断而控制水泥电阻工作与否,以此达到控制温度的目的。

2.1 硬件及软件的选择 2.1.1硬件的选择

系统的硬件设计主要分为四个部分:主控部分、DS18B20测温部分、通信部分、程序下载部分。

在下位机控制器上,由于需要采用PWM技术对加热装置进行控制,而传统的51系列单片由于其内部并不具有专门的PWM模块,当从上位机发送控制数据时,就必须采取中断才能执行这个过程。由于AVR系列单片机内部均有现成的PWM模块,可以在进行采集温度的同时,进行PWM控制。所以,本设计选择Atmel公司生产的ATMega16八位高性能微处理器。AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域,它与51单片机、PIC单片机相比具有一系列的优点:

(1)在相同的系统时钟下AVR运行速度最快; (2)芯片内部的Flsah、EEPROM、SRAM容量较大;

(3)所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP); (4)多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;

(5)每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;

(6)内部资源丰富,一般都集成AD、DA模数器、PWM、SPI、USART、TWI、I2C通信口、丰富的中断源等。

目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。其中C编译器主要有CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、 运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。

测温部分,本设计采用美国DALLAS公司生产的一线式温度传感器DS18B20(如图2-1)。数字式温度传感器DS18B20是美国DALLAS公司推出的一种可组网数字式温度传感器,采用1-wire总线接口,测温范围为-55℃—+125℃,精度可达0.067 5℃ ,最大转换时间为200ms 。DS18B20能够直接读取被测物体的温度值,体积小,电压适用范围宽(3V~5V),

5

河南师范大学本科毕业论文(设计)

用户还可以通过编程实现9--12位的温度读数,即具有可调的温度分辨率。DS18B20与单片机的接口简单,只需将信号线与单片机的一位双向端口相连即可 。

系统中DS18B20采用外接电源方式,VDD端用3V~5.5V电源供电。由于其测温分辨率较高(12位),因此对时序及电特性参数要求较高,必须严格按照时序要求操作。其数据的读写是由主机读写特定时间片来完成的,包括初始化、读时间片和写时间片。 DS18B20的主要特征: ??全数字温度转换及输出。 ??先进的单总线数据通信。

??最高12位分辨率,精度可达土0.5摄氏度。 ??12位分辨率时的最大工作周期为750毫秒。 ??可选择寄生工作方式。

??检测温度范围为–55°C ~+125°C ??内置EEPROM,限温报警功能。 DS18B20引脚功能:

·GND 电压地 ·DQ 单数据总线 ·VDD 电源电压 图2-1 DS18B20

功率控制部分,本设计采用无锡天豪公司生产的GTJ24-2A固态继电器。电气参数为:输入控制电压3-14VDC(自动限流),关断电压1.2VDC,开启电流5mA,控制电流<25mA,工作电压24-240VAC。该固态继电器为过零型继电器,在电流过零时导通,过零时关断。相对于随机型的固态继电器,使用过零型的固态继电器可以使本设计比较方便地控制固态继电器中双向晶闸管的导通周期数,从而控制加热元件的工作时间。

通信部分,由于温度变化并不是一个很快的过程,所以并不需要很高的数据采集和发送速度。而且,计算机的各种通信方式中,尤以串口通信方式最为简单,因此本设计采用传统的RS-232串口通信。由于单片机的工作电平TTL电平,它要与计算机上的串口进行通信,就必须转换成相应的计算机串口电平,也就是RS-232电平。在本设计中采用美国MAXIM公司生产的MAX232进行电平转换。 2.1.2软件的选择

软件选择包括下位机程序的编译软件和上位机的编程软件。

下位机的编译软件,通常有ICC AVR、WinAVR(也就是通常所说的GCC)、IAR AVR、CodeVision AVR、ATman AVR,在这里使用ICC AVR和AVR Studio的组合。这是因为市面上(大陆)的教科书使用ICC AVR作为例程的较多,集成代码生成向导,虽然它的各方面性能均不是特别突出,但使用较为方便;而AVR Studio集软硬件仿真、调试、下载编程于一体,有效弥补了ICC AVR仿真能力的不足,同时还可以有效地对程序进行调试。

上位机方面,本设计采用目前NI最新的LabVIEW 8.6进行编程。结合上NI为工业控制而开发的PID和模糊逻辑控制包,可以轻松地实现PID或模糊控制。

6

河南师范大学本科毕业论文(设计)

2.2 硬件及软件设计方案 2.2.1硬件设计方案

下图给出系统硬件组成框图,由计算机、单片机、测温电路及温度控制电路组成。该系统集计算机、强大的图形化编程软件和模块化硬件于一体,建立灵活且以计算机为基础的测量及控制方案,构建出满足需要的系统。利用传感器获取温度信号,再由单片机组成的小系统对温度信号进行采集、处理和转换,然后通过RS-232串口将数据送给计算机.并通过计算机运行的LabVIEW程序来分析处理输入数据.最终由计算机显示结果。

同时,通过计算机串口采样输入信号,利用LabVIEW中的PID控制算法,求出系统输出信号的大小,再由串口将输出信号传输至外部温度控制电路,以实现温度控制。(如图2-2)

温度测控对象 温度测量电路 温度控制电路 单片机 计算机

图2-2 系统组成框图

2.2.2软件设计方案 (1)PID控制

PID(Proportional Integral Derivative比例微分积分)控制是控制工程中技术成熟,应用广泛的一种控制策略,它经过长期工程实践,已形成了一套完整的控制方法和典型的结构。

PID控制器结构简单、稳定性好、工作可靠、调整方便(如图2-3)。当被控对象的结构和参数不能完全被掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。因此当不能完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,就是PID的用武之地。

期望值 反馈 测量装置 PID控制器 执行机构 被控对象 输出

图2-3 PID控制系统

7

河南师范大学本科毕业论文(设计)

PID顾名思义,就是根据系统误差利用比例,微分,积分计算出控制量进行控制。比例,积分,微分这三个环节又相互独立,有各自不同的作用,在现场也可以根据实际情况来选择使用。 P控制(比例控制)

如果控制器的输出仅仅与误差成正比关系,即u(t)= Kpε(t),便构成了一个比例控制器(如图2-4),可见比例控制器实际上是一个增益可调的放大器。比例控制器通过改变比例放大系数Kp调节输出,对误差的反应很快,但是其输出与期望值之间总是存在一个稳态误差,必须使用手动复位来消除,在实际运用中很不方便。提高Kp值可以增加系统的开环增益,使稳态误差减小,还能够增加系统的快速性;但容易使系统的稳定程度变差,振荡变多。而当Kp值小时,又会使系统动作变得缓慢,所以校正系统很少单独使用P控制。

ε(t)

误差 u(t)Kp

图2-4 比例控制

I控制(积分控制)

由于P控制存在稳态误差需要手动复位,人们发现可以通过引入一个积分项来消除稳

1t?(t)d(t)态误差。积分控制器的输出与误差信号的积分成正比,即 ,所以PI控制Ti?01t??器的输出有: u(t)?Kp??(t)???(t)d(t)?Ti0?? tKpt?Kp?(t)??(t)dt?Kp?(t)?Ki?(t)dt??00 Ti积分项对误差进行积分,随着时间的增加积分项增大,只要误差还存在,就会不断输出。这样,即便误差很小,积分项也会随着时间的增加而加大,推动控制器的输出增大使稳态误差进一步减小,直到等于零,以达到消除稳态误差的目的。因此,PI控制器,可以使系统在进入稳态后无稳态误差。但是对时间的积分必将影响系统的快速动态性能,对于一些系统会出现超调过大的现象,严重的甚至引起系统崩溃。 D控制(微分控制)

积分控制的动态性能不好,而微分项恰好可以弥补这点。微分控制器的输出和误差信号的微分成正比,即,所以PD控制器的输出有:

dd??u(t)?Kp??(t)?Td?(t)??Kp?(t)?KpTd?(t)dtdt??

d?Kp?(t)?Kd?(t) dt微分作用反映的是误差信号的变化率,所以对系统控制具有预见性,能预见误差的变

8

河南师范大学本科毕业论文(设计)

化趋势,因此能产生超前的控制作用。甚至在误差形成之前,可能已被微分调节作用消除。所以如果微分时间选择合适,可以减少超调和系统调节时间,使系统的动态性能大大提高。微分控制在实际运用中经常用来抵消积分控制产生的不稳定趋势,但因其反应的是误差的变化率,所以仅对动态过程作用,通常不单独使用。而且微分控制对噪声干扰有放大作用,过强地调节微分项对系统抗干扰能力不利。 PID控制

PID控制即比例控制、积分控制、微分控制的组合,综合了3种控制器的优点。 实际运用中,有时也不需要用到全部的三个部分,只有比例控制单元是必不可少的。对于PID控制器,输出为:

1tdKptd?? u(t)?Kp??(t)???(t)dt?Td?(t)??Kp?(t)??(t)dt?KpTd?(t)?00TidtTidt?? td?Kp?(t)?Ki??(t)dt?Kd?(t) 0dtPID控制实际就是根据经验,对Kp,Ti,Td这3个参数进行整定,以得到合适的输出值对系统进行控制。具体如何整定,根据不同的现场有所不同。

目前PID不仅应用广泛,发展也很快,已研究出很多对这3个参数进行自整定的智能控制器。在和计算机这样的数字控制器结合后,还出现了数字PID的设计方法,不过具体原理还是遵循于传统。 (2)模糊控制

模糊控制是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制。通常是一类缺乏精确数学模型的被控过程,采用模糊集合的理论,总结人们对系统的操作和控制经验。

用模糊条件语句写出控制规律,再用算法语言来编写程序,按此程序对生产过程进行自动控制。模糊控制同常规的控制方案相比,主要特点有:

①模糊控制只要求掌握现场操作人员或有关专家的经验、知识或操作数据, 不需要建立过程的数学模型,所以适用于不易获得精确数学模型的被控过程,或其结构参数不很清楚等场合。

②模糊控制是一种语言变量控制器,其控制规律只用语言变量的形式定性地表达,不用传递函数与状态方程,只要对人们的控制经验加以总结,进而从中提炼出规则,直接给出语言变量,再应用推理方程进行观察与控制。

③系统的鲁棒性强,尤其适用于时变、非线性、时延系统的控制。

④从不同的观点出发,可以设计不同的目标函数,其语言控制规则分别是独立的,但是整个系统的设计可得到总体的协调控制。

模糊控制的理论基础是模糊集合理论,模糊集合是一种介于严格变量与定性间的数学表达形式,例如变量的数值分为正大(PL)、正中(PM)、正小(PS)、零(O)、负小(NS)、负中(NM)、负大(NB)等。其中P=Posive,B=Big,M=Medium,S=Small,O=Zero,N=Negative。模糊集合理论的核心是对复杂的系统或过程建立一种语言分析的数学模式,提供一个严格

9

河南师范大学本科毕业论文(设计)

的数学框架,使日常生活中的自然语言能直接转化为计算机所能接受的算法语言。

模糊集合理论的一个基本概念是函数或称隶属度。表示某一个元素ui与模糊子集 A?iA?A(ui)表示。所有隶属度均满足下列要求,即 的关系(即隶属度),并用 或

0??A(ui)?1A。 ?A(u ?A(ui)?0ui隶属于Aui不属于 ; ,则表示 i)?1,表示

模糊子集可表示成

A??1Au1??2Au2???mAum??i?1m?iAui(ui?U)其中的U为论域(指被考虑过程的所有元素的全体)。式中的“+”号表示列举,并不是加号;作用每项中的分式也不表示相除,分母表示元素名称,分子表示该元素的隶属度。

?A(ui)来描述,也可用模糊向量(即隶属度向量)来表示,模糊子集 A不仅可用隶属度

A?[?1A,?2A,,?mA]即

下图2-5为模糊控制系统原理框图。 期望值

图2-5 模糊控制系统

—测量装置 模糊控制器 执行机构 被控对象 输出 10

河南师范大学本科毕业论文(设计)

3 LabVIEW 开发环境以及PID和模糊控制模块简介

使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。设计程序主要是在以下两个窗口中进行的:

前面板设计窗口:它是与用户直接接触的图形用户界面,即VI的虚拟仪器面板。 后面板编辑窗口:它是用户为完成特定功能而编写的程序,即VI的图形化源代码。 3.1 LabVIEW前台显示面板与后台控制面板 3.1.1 LabVIEW前台显示面板

程序前面板是图形用户界面,这一界面上有用户输入控制和输出显示两类对象,用于模拟真实仪表的前面板。控制和显示是用各种各样的图标形式出现在前面板,具体表现为旋钮、开关、图形、图标以及其他的控制(Control)和显示(Indicator)对象等,这使得用户界面更加直观易懂。 3.1.2 LabVIEW后台控制面板

后面板即是程序编辑窗口。流程图提供VI的图形化源程序,可以理解为传统程序的源代码。在流程图中队VI进行编程,以实现程序的输入和输出功能 流程图由端口、节点、图框和连线构成。

LabVIEW有三类端口:前面板对象端口、全局变量与局部变量端口和常量端口。对象端口被用来与程序前面板上的控制件或显示件传递数据;常量端口只能在程序中作为数据流起点;全局变量和局部变量端口是LabVIEW用力啊传递数据的工具。

节点类似于文本语言的函数或子程序,LabVIEW有两种节点类型:功能函数节点或子VI节点,二者的区别在于功能函数节点是LabVIEW本身提供给用户使用的,不可以对它进行修改;子VI则是用户可以进入并根据实际需要对其加以修改。

图框被用来实现结构化控制命令,例如循环控制、顺序控制以及条件分支等;此外还有MATLAB脚本、HiQ脚本以及调用C语言编程的CIN节点等。

连线用于代表程序执行过程中的数据流,它类似于文本程序的变量,数据是单向流动的。这些都是编程必须有的东西。 3.2 LabVIEW程序执行流程

宏观上讲,LabVIEW的运行机制已经不是传统上的冯·诺依曼式计算机体系结构的执行方式了。传统计算机语言(如C语言)中的顺序执行结构在LabVIEW中被并行机制所代替。而且,对于那些数学和逻辑运算过程较复杂的程序,用花可以选择使用VC或者Matlab等开发工具将数学分析和处理过程编写为专用的动态链接库,LabVIEW提供了专门的接口函数可以调用之。这样,可以结合图形语言和文本语言各自优点,更为灵活、高效、易用。 3.3 LabVIEW中的仪器控制和驱动

虚拟仪器是仪器的未来,但在工作台上还有很多非虚拟仪器,毫无疑问需要用LabVIEW控制他们。对仪器的驱动是虚拟仪器实现对真实物理信号采集的基础,当仪器驱动后,才能由软件进行数据的分析处理进而实现某种测温功能,并求取测量结果。并且,有时使用

11

河南师范大学本科毕业论文(设计)

外部仪器也是可以的。 3.3.1常用的仪器通信方式

GPIB:通用接口总线(General Purpose Interface Bus)。有时候成为HP-IB(Hewlett-Packard Interface Bus)和IEEE 488.2总线(Institute of Electronic Engineer standard 488.2),它几乎是任何仪器与计算机通信的世界标准。

IVI:可交换虚拟仪器(Interchangeable Virtual Instrument)。可以与许多不同的仪器协调工作的仪器驱动程序(用来控制外部仪器的软件)标准。

LXI:LAN在仪器领域的扩展(LAN eXtension for Instrumentation)。LXI协会给予工业标准以太网技术,为小型和中型系统提供模块化、灵活性和性能的仪器平台建议标准。 RS-232:232号推荐标准(Recommended Standard #232)。美国仪器协会为串行通信提出的建议标准。可以与术语“串行通信”互换使用,尽管串行通信一般指的是一次传输一位。也许还会看到其他一些标准如RS-485、RS-422和RS-432。

SCPI:可编程仪器标准命令(Standard Commands for Programmable Instrumentation)。SCPI协会的一个建议标准,该标准使用简单、直观的ASCII命令为仪器通信制定了结构和语法。

USB:通用串行总线(Universal Serial Bus),大多数PC与外部设备互联的标准总线。

VISA:虚拟仪器标准体系结构(Virtual Instrument Standard Architecture),NI公司研发的一种驱动软件体系结构。其目的是尽量统一一起软件标准,不论仪器使用GPIB、PXI、VXI,还是串行接口(RS-232/422/485)。

3.3.2 LabVIEW支持的GPIB、VXI、标准串口I/O仪器的驱动

通常LabVIEW有两张安装光盘,其中一张就是设备驱动盘,它包含了一个仪器驱动库,该库为NI生产的各种程控仪器(GPIB仪器、VXI仪器和串行仪器等)提供仪器驱动程序,例如HP34401A数字万用表的仪器驱动程序。仪器驱动程序在功能模块~Instrument I/O—Instrument Drivers子模板中。对于非NI公司生产的上述I/O接口仪器设备,可用Instrument I/O子模板上提供的VISA图标来进行驱动。利用这些仪器驱动器,用户可以很容易地控制各种仪器,并将主要精力放在仪器功能的实现上,而不必关心具体的编程细节,这一点是LabVIEW强大功能的体现。 3.3.3 VISA简介

VISA是NI公司发布的为统一软件标准的驱动软件体系结构。它是与驱动软件通信的LabVIEW 仪器驱动VI 中的底层函数。 VISA 本身不提供仪器编程功能。 VISA 是一个调用低层驱动程序的高层API。 VISA 能够控制VXI、GPIB、串口或者基于计算机的仪器,并能根据所用仪器的类型来调用合适的驱动程序。下表给出了本系统用到的几个通信模块的基本属性的描述。

12

河南师范大学本科毕业论文(设计) VI名称 VISA Configure Serial Port VISA Write VISA Read VI功能 初始化VISA resource name指定的串口通讯参数 将输出缓冲区中的数据发送到VISA resource name指定的串口 将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中 VISA Serial Break VISA Bytes at Serial Port VISA Close VISA Set I/O Buffer Size VISA Flush I/O Buffer 向VISA resource name指定的串口发送一个暂停信号 查询VISA resource name指定的串口接收缓冲区中的数据字节数 结束与VISA resource name指定的串口资源之间的会话 设置VISA resource name指定的串口的输入输出缓冲区大小 清空VISA resource name指定的串口的输入输出缓冲区 3.4 PID控制模块简介

NI提供了在LabVIEW中使用的PID控制工具包,可帮助工程师结合NI数据采集设备快速有效地搭建一个数字PID控制器,精确可靠地完成系统需求。

安装NI光盘Tookit Software中的LabVIEW PID Control Tookit,即可在LabVIEW中生成该工具包。安装完成后打开一个新的VI,右击程序框图,在“函数”面板上选择“控制设计与仿真”,即可看到PID工具包,该工具包由10个VI组成(如图3-1)。

图3-1 PID工具包

利用PID.vi即可搭建一个简单的PID控制器,在该vi的输入端给入PID的3个参数值(PID gains),系统反馈值(process variable),实际期望值(setpoint)以及微分时间(dt),便能得到需要的输出值(output)。该vi还能控制输出值的范围(如图3-2)。

图3-2 PID的使用范例

13

河南师范大学本科毕业论文(设计)

PID Advanced.vi是为专家PID设计的vi,增加了一些高级的功能,如可以设定期望值的范围(setpoint range),手动控制(manual control),线性化(linearity)等功能。PID Autotuning.vi(如图3-3)是为需要自整定的PID系统设计的,在给出一些基本要求后,具有自整定的功能。

图3-3 PID Autotuning.vi

PID Lead/Lag.vi可以对PID控制器(如图3-4)前端由系统反馈来的输入信号做动态补偿。PID Setpoint Profile.vi可以在期望值间断性变化时使其变得平滑。PID Control Input Filter.vi是一个五阶的低通滤波器,放在PID控制器的process variable前端,可以滤去小于采样率十分之一的输入值。PID Gain Schedule.vi可以写入几组增益参数,并给出条件,执行时当输入信号达到条件,便使用对应的一组参数给入到PID控制器的PID Gains上。PID Output Limiter.vi对PID控制器输出信号的变化速率进行控制,以保证外部接受控制信号部件的安全。PID EGU to %.vi和PID % to EGU.vi负责对实际数值和其在设定工程单元范围内占的百分比进行转换。

图3-4构建PID控制系统

14

河南师范大学本科毕业论文(设计)

3.5 模糊控制模块简介

安装NI光盘Tookit Software中的LabVIEW PID Control Tookit,即可在LabVIEW中生成该工具包。安装完成后打开一个新的VI,右击程序框图,在Functions Palette上选择Control Design&Simulation,即可看到Fuzzy Logic工具包,该工具包由3个VI组成(图3-5)。安装工具包后,可以使用LabVIEW创建.fc格式的文件。.fc文件是NI自定义的一种文件格式,用于仿真模糊控制器推理机中的知识库。

图3-5 Fuzzy Logic工具包

创建一个.fc文件步骤如下:打开一个新的VI,在任务栏依次点击Tools——Control Design and Simulation——Fuzzy Logic Controller Design?,接着在弹出的 Fuzzy Logic Controller Design(如图3-6)对话框的状态栏上点击File——New,即打开了一个新的.fc文件。

图3-6 Fuzzy Logic Controller Design

接着弹出一个Fuzzy Set Editor对话框,这是仿真模糊推理器中的数据库。工程师可根据专家经验绘制出输入和输出量的隶属函数图,绘制完成后点击Quit;接着弹出 Rulebase Editor对话框(图3-7),这是仿真模糊推理器的规则库。工程师根据实际情况将制定好的规则写入,完成后点击Quit;最后点击File——Save,给出保存位置和文件名,一个.fc文件就创建完成了。

15

河南师范大学本科毕业论文(设计)

图3-7 Fuzzy Set Editor

图3-8 Rulebase Editor

.fc文件使用工具包Fuzzy Logic中的Load Fuzzy Controller.vi加载,该VI加载后将数据传送到Fuzzy Controller.vi中。Fuzzy Controller.vi接收输入信号(最多可接受4维输入),根据.fc文件进行模糊推理,并计算出合适的输出信号值(图3-8)。工具包中的另一个VI是Test Fuzzy Controller.vi,它可以通过手动输入算出输出响应值,已到达调试.fc文件中规则和隶属度函数的目的。

16

河南师范大学本科毕业论文(设计)

4 以单片机为核心的下位机的设计

4.1 下位机设计方案

下位机上,本设计采用Atmega16控制DS18B20采集温度,并将采集到的温度通过串口发送到上位机,以便处理。在上位机发回控制信息后,单片机将收到的信息按照一定的规则处理后,将其送入功率控制设备。此功率设备为过零型固态继电器,在电流过零处导通或关断,易于实现PWM的控制。 4.2下位机的硬件设计

硬件部分分为四个部分:主控部分、DS18B20测温部分、通信部分、程序下载部分。 4.2.1主控部分

由于需要进行串口通信,所以单片机的晶体振荡器我们选择用的比较多的7.3728MHz的外部晶振(如图4-1)。

图4-1 主控部分

4.2.2 DS18B20测温部分

本来在DS18B20的数据脚上应该接一个4.7K的上拉电阻(如图4-2),可是由于Atmega16中的数据脚上已经有了内部的上拉电阻,我们就不需要在外部再加。这样不仅降低了成本,最大程度利用了Atmega16的强大功能,而且降低了电路的复杂性,使布线更加方便。

图4-2 测温部分

17

河南师范大学本科毕业论文(设计)

4.2.3通信部分 硬件电路如图4-3

图4-3 串口通信部分

4.2.4程序下载部分 硬件电路如图4-4

图4-4 程序下载部分

4.3 下位机的软件设计

系统模型如下图4-5. 温度 PID/模糊 加热执行设温度 输入 控制器 备 输出 图4-5 下位机系统模型

18

河南师范大学本科毕业论文(设计)

4.3.1DS18B20工作原理及应用

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。

在讲解其工作流程之前有必要了解DS18B20的内部存储器资源。DS18B20共有三种形态的存储器资源,它们分别是:

ROM 只读存储器,用于存放DS18B20ID编码,其前8是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。

RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。

EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。

控制器对18B20操作流程:

(1)复位:首先必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。

(2)存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与DS18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

(3)控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。

19

河南师范大学本科毕业论文(设计)

(4)控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

(5)执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。

若要读出当前的温度数据需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。如图4-6为 DS18B20相关程序设计流程。

4.3.2单片机串口通信部分

串口通信首先要对串口进行初始化设置。初始化内容包括首先选择同步发送还是异步发送,如果是异步发送的话,选择是正常发送模式还是倍速发送模式,在本设计中采用异步正常模式发送。然后设置开启发送和接收中断使能,并且设置帧格式,通常选择8位数据位,1位停止位。初始化的最后一步是设置通信的波特率。波特率我们选择计算机串口通信用的比较多的9600bps,根据异步正常模式的波特率计算公式 BAUD ? UBRR ,16(? 1)可以算出UBRR=47,所以在设置波特率寄存器的时候,设置UBRRH=0x00,UBRRL=0x2F。

在串口初始化函数完成之后,即可编写发送和接受函数。串口发送和接受函数比较简单,本设计不再赘述。图4-7为串口通信流程图: 4.3.3单片机PWM功率控制部分

Atmega16有16种PWM模式,在本设计中我们选用模式15——快速PWM。PWM的初始化比较简单,在这里我们不予赘述。比较重要的是PID控制器输出的控制量与PWM占空比的关系。此关系的测量需要进行硬件调试才可以达到较为理想的值。

fosc20

河南师范大学本科毕业论文(设计)

开始 复位 延时 N 复位成功? Y 写ROM命令0xCC(跳过ROM匹配) 写ROM命令0x44(启动温度转换) 复位 延时 N 复位成功? Y 写ROM命令0xCC 写ROM命令0xBE(发送温度命令) 读RAM中的0、1字节 结束 图4-6 DS18B20操作流程 21

河南师范大学本科毕业论文(设计)

开始 串口初始化 i=0 i<=9 Y 发送数据 i++ 接受数据 图4-7 串口通信流程图

N 22

河南师范大学本科毕业论文(设计)

5 基于PC的上位机编程设计

对于上位机的设计,本设计选择和下位机一样,采取分模块设计的思想。这样有助于的编程和介绍。 5.1 方案设计与选择

上位机的串口通信流程图如下:

串口是否打开? Y 讲读到的数据转换后送至显示控件 串口初始化 开始

图5-1 上位机串口通信流程图

5.2 上位机各模块设计 5.2.1串口通信模块设计 如图

图5-2 基本的串口通信流程

5.2.2数据处理部分设计

由于串口发送和接受的数据都是字符串的形式。而LabVIEW中显示控件支持的数据类型只有数值型数据。所以在将采集到的数据送往显示控件之前,必须将串口发送上来的采集数据转换成显示控件可以接受的数值型数据。要做到这点在其他的编程语言中可能可能会

23

河南师范大学本科毕业论文(设计)

比较麻烦,但在LabVIEW中确实一件相当轻松且有趣的事情。只要在LabVIEW中后面板的“编程”下面的“字符串”子面板中找到“十进制字符串至数值转换”这个子VI就完全可以轻松地实现这个功能。这个子VI及说明如图所示。

图5-3 十进制数字符串至数值转换子VI

在上位机往下位机发送数据时,则需将PID控制算法或者模糊控制算法计算得的数值型数据转换成串口通信中的字符串。和前面一样,这个转换在LabVIEW中的实现也是相当简单。方法如前,在相应的路径下找到“数值至十进制字符串转换”,放在程序中相应的位置即可。此子VI及说明如图所示。

图5-4 数值至十进制数字符串转换

5.2.3 PID控制部分设计

针对于本系统设计,本设计使用最简单的PID.VI即可搭建一个简单的PID控制器,在该VI的输入端给入PID的3个参数值(PIDgains),系统反馈值(process variable),实际期望值(setpoint)以及微分时间(dt),便能得到需要的输出值(output)。

图5-5 PID模块

24

河南师范大学本科毕业论文(设计)

6 总结

在明白了以上的设计任务、要求和方案之后,确定设计方案之后,写好程序并在仿真软件Proteus中仿真,达到设计要求时,就需要开始着手系统硬件的制作和调试了。

在本次设计的过程中,我发现很多的问题,看似很简单的电路,要动手把它给设计出来,也是一件不太简单事,主要原因是我们没有经常动手设计过电路,还有资料的查找也是一大难题,因为手头的资源有限,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从书本中学到的知识和实际的电路联系起来,这不论是对我们以后的就业还是学习,都会起到很大的促进和帮助,我相信,通过这次的设计,在以后的工作和学习中我会更加努力。同时,通过本次设计,巩固了我们学习过的专业知识,也使我们把理论与实践从真正意义上相结合了起来;考验了我们借助互联网络搜集、查阅相关文献资料,和组织材料的综合能力;从中可以自我测验,认识到自己哪方面有欠缺、不足,以便于在日后的学习中得以改进、提高;效率。

由于本人的知识有限,文中有错误和疏漏的地方,敬请各位老师指正! 本设计主要成果如下:

(1)实现了用AVR通过DS18B20测量周围环境的温度并将其通过串口发送到上位机。 (2)学会了LabVIEW的初级使用方法。

(3)用LabVIEW编写了一串口通信程序,并可以将上位机发送上来的温度数据送往显示控件显示。

(4)使用NI提供的用于LabVIEW的PID控制模块,编写PID控制程序,用于控制下位机加热装置的温度。

(5)设计了下位机的功率控制方案。

25

河南师范大学本科毕业论文(设计)

参考文献

[1] 王磊,陶梅.精通LabVIEW8.0[M].北京:电子工业出版社2007.1

[2] Jeffrey Travis,Jim Kring.LabVIEW大学实用教程(第三版)[M].北京:电子工业出版社 2008.6 [3] Robert H.Bishop.LabVIEW 8实用教程[M].北京:电子工业出版社 2008.4

[4] 程学庆,房晓溪等.LabVIEW图形化编程与实例应用[M].北京:中国铁道出版社 2005.3 [5] 吴双力,崔剑等. AVR-GCC与AVR单片机C语言开发[M]. 北京:北京航空航天学出版社2004 [6] 杜树春. 单片机C语言和汇编语言混合编程实践[M].北京:北京航空航天大学出版社 2008 [7] 张军,宋涛. AVR单片机C语言程序设计实例精粹[M].北京:电子工业出版社 2009 [8] 朱飞,杨平. AVR单片机C语言开发入门与典型实例[M].北京:人民邮电出版社 2009 [9] 沈文等. AVR单片机C语言开发入门指导[M].北京:清华大学出版社 2003

[10] 海涛等. ATmega系列单片机原理及应用:C语言教程[M].北京:机械工业出版社 2008 [11] 张伟,刘红丽. 基于LabVIEW的温度测控系统设计[J].西安:国外电子元器件 2009 [12] 胡寿松.自动控制原理[M].北京:科学出版社 2001

[13] 邵玉森.过程控制与仪表[M].上海:上海交通大学出版社 1995.7 [14] 董景新等.控制工程基础[M].北京:清华大学出版社 2003.8 [15] 谢瑞和.串行技术大全[M]. 北京:清华大学出版社 2003 [16] 董方武. 微机接口技术[M]. 北京:中国水利水电出版社 2001

[17] 李恩林 陈斌生. 微机接口技术300例[M]. 北京:机械工业出版社2003 [18] 康华光.电子技术基础[M].北京:高等教育出版社 2006.1

[19] 黄贤武 郑筱霞.传感器原理与应用[M].北京:高等教育出版社 2004.3 [20] A.V. Oppenheim, A. S. Willsky. Signal and System[M]. Printice-Hall, Inc. 1983

[21] D W Hart.Foundation and application of microcontroller[M].beijing:Higher Education Press,2004. [22] Intel.MCS-51 Family of Single Chip Microcomputer User’s Manual,1990.

26

河南师范大学本科毕业论文(设计)

谢 辞

本研究及学位论文是在指导老师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,老师都始终给予我细心的指导和不懈的支持。两年多来,老师不仅在学业上给我们以精心指导,同时还在思想、生活上给我们以无微不至的关怀,在此谨向老师致以诚挚的谢意和崇高的敬意。

几个月的查资料、整理材料、论文写作、制作样机,今天终于顺利的完成论文。思考了许久,写下这一段谢词。时光匆匆飞逝,四年多的努力与付出,随着毕业设计的完成,给我的大学四年划下一个完美的句号。

毕业设计的顺利完成,离不开其它各位老师、同学的关心和帮助。在整个的设计中,各位老师、同学积极的帮助我查资料和提供有利于论文写作的建议和意见。另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。最后要感谢的就是我的父母、朋友,对于他们我更是有千言万语,还是汇聚成一句话:感谢你们一直都伴随着我。

现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!

乔建玉

2014年5月于河南师范大学

27

河南师范大学本科毕业论文(设计)

附 录

附录一 电路原理图

28

河南师范大学本科毕业论文(设计)

附录二 PCB图

29

河南师范大学本科毕业论文(设计)

附录三 元器件清单 名称 型号 备注 数量 在原理图上的标号 AVR单片机 Atmega16 1 固态继电器 GTJ24-2A 1 温度传感器 DS18B20 1 晶体振荡器 7.3728MHz 1 瓷片电容 30pF 2 电解电容 25V/10uF 4 排插 2x5 2 排插底座 2x5 1 插针底座 1x3 1 排线 1x3 1 插针 1x2 1 音频头 1 接线柱 1x2 2 铜柱 8 排线 1排6根 1 串口头 DB9 公头 1 水泥电阻 8W2K2 3 铜板 万用板 1

30

河南师范大学本科毕业论文(设计)

附录四 单片机程序

下位机程序 主程序

#include

/*包含相关头文件*/

#include #include #include \#include \#include \#include \#define OCR OCR1A

//全局变量声明

unsigned char Temp_H,Temp_L; //主函数 void main(void) {

float temp,a,b,c=0;

int middle,j,k,l; unsigned char f_to_p;

unsigned int i;

unsigned char t[6]; unsigned char *p; unsigned char tmp=0; Temp_H = 0;

Temp_L = 0; port_init(); pwm_init(); OCR=0;

port_1820(); Uart_Init();

//温度高位,低位,复位成功标志 //用于暂存读回的16位温度值 //用于存温度数值及单位 //端口初始化 //pwm初始化 //DS18B20对应单片机端口初始化 //波特率9600 初始化串口

31

河南师范大学本科毕业论文(设计)

while (1) {

for(k=0;k<=9;k++) {

ds1820_reset(); ds1820_start(); longdelay(); longdelay();

//读取温度数值,读得的温度值为16位

//复位D18B20 //启动一次转换

//等待转换结束

i = ds1820_read_temp(); //用于调试的原始温度数据

//i=0x07d0; //当温度为125oC时的i值

//i=0xff5e; //负10.125度 //i=0xfebe; //负20.125度 //i=0x0191; //正25.0625度 //i=0x0550; //正85度

if(i&0x8000) //判断温度正负 {

/温度为负时

//一个字长的温度值转换成两个字节,分別放在Temp_L,Temp_H中

Temp_L=(char)(i&0x00ff); //取i中的低8位 Temp_H=(char)((i&0xff00)>>8); //取i中的高8位

i=Temp_H; //高8位放回i中 i=(i<<8)|Temp_L; //低8位放回i中 temp=(float)(i*0.0625);

32

Temp_H = ~Temp_H; //负温度。取反加1 Temp_L = ~Temp_L;

asm(\ //清零进位位标志 Temp_L++; //温度低字节加1 if((SREG&0x01)!=0x01) //有进位吗? {

Temp_H++; //有进位,则温度高字节加1 }

河南师范大学本科毕业论文(设计)

middle=(int)(temp*100); //取整数带小数点后两位

t[0]=middle/10000+0x30; t[1]=(middle000)/1000+0x30; t[2]=(middle00)/100+0x30;

t[3]=0x2e; //value_1[3]为小数点存放单元 t[4]=(middle0)/10+0x30; t[5]=(middle)+0x30;

Uart_Transmit(0x2d); for(j=0;j<=5;j++) {

Uart_Transmit(t[j]); }

Uart_Transmit(0x0d); }

else {

//溫度為正 temp=(float)(i*0.0625);

middle=(int)(temp*100); t[0]=middle/10000+0x30; t[1]=(middle000)/1000+0x30; t[2]=(middle00)/100+0x30;

t[3]=0x2e; t[4]=(middle0)/10+0x30; t[5]=(middle)+0x30;

Uart_Transmit(0x2b); for(j=0;j<=5;j++) {

Uart_Transmit(t[j]); }

Uart_Transmit(0x0d);

}

//取整数带小数点后两位 //value_1[3]为小数点存放单元 33

河南师范大学本科毕业论文(设计)

} }

DS18B20函数 #include #include

#define DQ_IN DDRA &= ~(1 << PA7) #define DQ_OUT #define DQ_CLR

DDRA |= (1 << PA7)

/*设置输入*/ /*设置输出*/ /*置高电平*/

Uart_Transmit(0x24); //和上位机握手 for(l=0;l<=4;l++) {

Uart_Receive(); a=UDR-0x30; b=a*pow(10,l-2); c+=b; }

OCR=(20*c); //根据PID输出的控制调节占空比

}

PORTA &= ~(1 << PA7) /*置低电平*/

/*读了电平*/ /*中断标志缓存*/

#define DQ_SET PORTA |= (1 << PA7) #define DQ_R PINA & (1 << PA7)

unsigned char flag;

/*DS18B20复位函数*/

unsigned char ds1820_reset(void) {

unsigned char i; flag = SREG; CLI(); DQ_OUT;

/*中断保护*/ /*关中断*/

34

河南师范大学本科毕业论文(设计)

DQ_CLR; delayUs(255);

/*延时500uS(480-960)*/

delayUs(255); delayUs(128); DQ_SET; DQ_IN; delayUs(100);

/*延时80uS*/

i = DQ_R; delayUs(255);

/*延时500uS(保持>480uS)*/

delayUs(255); delayUs(128); if (flag & 0x80) {

/*恢复中断状态*/

SEI(); }

if (i) {

return 0x00; }

else {

return 0x01;

}

}

/*DS18B20字节读取函数*/

unsigned char ds1820_read_byte(void) { unsigned char i; unsigned char value = 0; flag = SREG; /*中断保护*/ CLI();

/*关中断*/

for (i = 8; i != 0; i--) {

value >>= 1; DQ_OUT; DQ_CLR; delayUs(2); /*延时4uS*/

NOP();

NOP();

35

河南师范大学本科毕业论文(设计)

NOP(); NOP(); NOP(); DQ_SET; DQ_IN; delayUs(4);

/*延时10uS*/

delayUs(4); if (DQ_R) { value|=0x80;

}

delayUs(35);

/*延时60uS*/ delayUs(35); }

if (flag & 0x80) {

/*恢复中断状态*/

SEI();

}

return(value);

}

/*DS18B20字节写入函数*/

void ds1820_write_byte(unsigned char value) { unsigned char i; flag = SREG; /*中断保护*/ CLI();

/*关中断*/

for (i = 8; i != 0; i--) {

DQ_OUT; DQ_CLR; delayUs(2); /*延时4uS*/

NOP(); NOP(); NOP(); NOP(); NOP();

if (value & 0x01) {

DQ_SET;

36

河南师范大学本科毕业论文(设计)

}

delayUs(100); /*延时80uS*/ DQ_SET;

/*位结束*/

value >>= 1;

}

if (flag & 0x80) {

/*恢复中断状态*/

SEI();

}

}

/*启动ds1820转换*/ void ds1820_start(void) { ds1820_reset();

ds1820_write_byte(0xCC); /*勿略地址*/ ds1820_write_byte(0x44);

/*启动转换*/

}

/*DS8B20读取温度信息*/

unsigned int ds1820_read_temp(void) { unsigned int i; unsigned char buf[9]; ds1820_reset();

ds1820_write_byte(0xCC); /*勿略地址*/ ds1820_write_byte(0xBE); /*读取温度*/

for (i = 0; i < 9; i++) { buf[i] = ds1820_read_byte();

}

i = buf[1]; i <<= 8; i |= buf[0]; return i;

}

37

河南师范大学本科毕业论文(设计)

//DS18B20用数据位端口初始化 void port_1820(void) {

DDRA=0x00; PORTA=0x80; //DS18B20的数据位接口上拉

}

串口通信函数 #include \#include /*串口初始化函数*/ void Uart_Init(void) { UCSRA = 0x00;

UCSRB = 0x18; /*允许接收和发送*/ UCSRC = 0x06; /*8位数据*/ UBRRH = 0x00; UBRRL = 47;

/*9600*/

}

/*数据发送,查询方式*/

void Uart_Transmit(unsigned char i) { while (!(UCSRA & (1<

UDR = i;

/* 发送数据*/

}

/*数据接收,查询方式*/

unsigned char Uart_Receive( void ) { while (!(UCSRA & (1<

return UDR;

/* 获取并返回数据*/

}

PWM函数 #include #include #define OCR OCR1A

38

河南师范大学本科毕业论文(设计)

int OcrReg = 1024; //OCR1A初始值

int Icr1Reg = 0x7ff; //PWM的计数顶部值 Icr1Reg = 2047 void pwm_init(void) {

//比较匹配时清零,计数到最大时置位OC1A TCCR1A |= (1<

//11位分辨率,快速PWM模式,使用系统时钟作为计数时钟 TCCR1B |= (1<

} 延时函数

#include\#include

/********************************************************************** functionName: void delayUs(BYTE temp) description :延时函数 晶振频率:7.3728MHZ delayUs(1); //2.71us delayUs(2); //3.53us delayUs(4); //5.15us delayUs(8); //8.41us delayUs(16); //14.92us delayUs(32); //27.94us delayUs(64); //53.98us delayUs(128); //106.07us delayUs(255); //209.42us delayUs(18); //16.55us delayUs(34); //29.57us delayUs(35); //30.38us delayUs(100); //83.28 _NOP(); //0.14us

**********************************************************************/

void delayUs(unsigned int temp) {

39

本文来源:https://www.bwwdw.com/article/ud67.html

Top