资源描述
天 津 大 学 网 络 教 育 学 院本科毕业设计(论文)题目:基于单片机温度控制系统的设计完成期限:2016年1月8日 至 2016年5月10日学习中心:选择一项。专业名称:选择一项。 学生姓名:学生学号:指导教师:摘 要无论是在现代化的城市生活中,还是在落后的乡镇生活中,温度都扮演着极其重要的角色,我们几乎所有的日常生活都与温度息息相关。自18世纪工业革命发展以来,工业的发展与人类掌握对温度的控制有着密切的联系,都离不开对温度的掌握。随着单片机技术的飞速发展,单片机的一系列优点越发惹人注目,其工作稳定可靠等优点已经被很多企业接受。本设计基于AT89C51单片机和温度传感器实现温度控制系统,不仅控制简便而且高效率控制,大大提高温度控制系统的灵活性,扩大基于单片机温度控制系统的适用范围。本设计在具体介绍温度控制系统整体的设计方案之后,详细介绍了温度控制系统硬件设计、温度控制系统软件设计和相关接口的电路设计,讨论基于单片机温度控制系统的相关应用,最后总结本设计的合理性和有效性。关键词:单片机; 温度传感器; 温度控制 目 录第一章 绪论11.1 温度控制系统概况11.2 国内外研究现状11.3 课题的主要工作2第二章 总体设计32.1总体设计方案32.2功能描述32.3温度控制系统硬件电路框图4第三章 温度控制系统硬件设计53.1硬件设计方案53.2单片机系统介绍53.3 温度信号采集模块的设计93.3.1温度传感器的选择93.3.2 信号放大电路103.3.3 A/D转换电路103.4键盘控制电路的设计113.5液晶显示电路的设计123.6蜂鸣器警报电路的设计133.7加热模块电路的设计14第四章 系统软件设计164.1软件设计方案164.2温度控制部分程序的设计174.3键盘部分程序的设计184.4数据采集模块程序设计184.5液晶显示部分温度程序的设计19第五章 总结与展望21参考文献22附 录23致 谢29天津大学网络教育学院本科毕业设计(论文)第一章 绪论1.1 温度控制系统概况本课题主要是基于单片机的温度控制系统的设计和研究,研究中的控制对象为温度。温度在我们的日常生活中很常见,也是很熟悉的东西,很多场所都需要控制温度来提供生产,比如火力发电厂、浴室、植物的培植室等场所的温度控制。纵观电气时代以来的人类发展史,很多温度控制都只是人工操作的,且不够重视,也因此发生了很多意外。随着电子技术的快速发展,智能化实现对温度的控制已经可以实现。本课题以芯片为核心,对温度传感器感测到的温度进行分析、数值显示和数据存储,从而有效实现单片机对温度的智能控制。1.2 国内外研究现状相对而言,国外比我国对温度控制系统的研究要早的多。国外从20世纪70年代开始,通过模拟组合的方式,采集信号并发出指令和存贮。80年代开始进行分布式控制方式的研究1。现代世界各国的温度控制系统发展的非常迅速,很多国家开始实现由半自动化向完全自动化的方向发展。我国对于温度控制系统的研究起步较晚,很大部分都只是借鉴一些发达国家的成熟技术,真正自己研究的东西并不多。整体的温度控制技术设施简单,控制因素单一。当然我国的温度控制技术正在由简单到实用化、综合性应用方向发展,虽然我国温度控制和温度测量技术远没有达到工厂化的程度,与欧美一些发达国家相比还存在很大差距,但是近几年国家开始重视自动化设备控制系统的研究,很多科研人员开始着手自动化控制设备的研究,制定很多成功的案例。但是理论研究始终停留在理论研究的层次,无法适用于工厂生产,很多研究方案,要么太过理论化、理想化,要么太过复杂,费用太过昂贵。同样,近年来温度的检测在理论上发展比较成熟,但在实际测量和控制中,如何保证快速实时地对温度进行采样,确保数据的正确传输,并能对所测温度场进行较精确的控制,仍然是目前需要解决的问题2。因此,设计一款比较实用的温度控制系统十分有必要,关于基于单片机的温度控制系统的设计和研究课题也十分有意义。1.3 课题的主要工作本研究主要是对温度的实时检测和有效控制。首先设定密闭空间温度,通过温度传感器感测密闭空间温度,由信号放大电路将温度信号放大,然后经过A/D转换电路转换将转换信号传递给芯片,假如感测器感测到密闭空间温度高于设定温度,系统立即停止加热,使温度达到密闭空间设定值温度;假如感测器感测到密闭空间温度低于设定温度,系统立即启动加热器,对密闭空间升温,使密闭空间温度升高。任意一模块不工作或工作出错,蜂鸣器会发出报警信号,从而达到智能化目的。液晶显示器可以实时显示密闭空间温度。课题研究主要包括如下一些方面:(1) 单片机的选择;(2) 温度传感器的选择及温度传感器信号处理电路的设计;(3) 液晶显示器电路的设计;(4) 蜂鸣器报警模块的设计;(5) 加热模块控制电路的设计;(6) 键盘电路的设计。第二章 总体设计课题研究主要包括六个部分:单片机、温度传感器及信号处理电路、液晶显示器电路、蜂鸣器报警模块、加热模块控制电路和键盘电路。其中,如何有效实现温度控制系统的控制,关键在于温度传感器的选择和驱动电路的设计,键盘电路可以实现对温度上限值和下限值的输入。2.1总体设计方案本研究主要包括两个方面的研究:硬件设计和软件设计。想要实现完整的功能,必须选择合适的元器件,对于整体设计的硬件部分主要包括驱动电路的设计,软件部分主要包括程序的编写。本系统采用热电偶温度自动控制系统,具体系统设计流程图如图2-1所示:图2-1 系统设计流程图2.2功能描述(1)通过温度传感器感测密闭空间温度,将感测到的温度信号经过信号处理电路,传递给单片机接口,控制系统单片机对整个控制系统进行解析;(2) 当人在键盘上输入温度设定值后,芯片接收输入信号,单片机开始控制加热模块,判断是否对系统进行加热,假如没有设定值,系统不给密闭空间加热,密闭空间温度不变化;(3) 本系统带有报警装置,假如温度控系统的任意一模块不工作,即密闭空间在控制的情况下,偏离设定值过大,系统便会发生报警;(4) 液晶显示器会显示密闭空间不同的温度值,因为键盘上的温度设置值不同,整个系统控制的密闭空间温度也不同。2.3温度控制系统硬件电路框图本研究能够实现单片机对密闭空间内温度的有效控制的功能,通过单片机对温度的智能控制,从而实现温度智能化控制的目的。系统结构框图如图2-2所示液晶显示电路AT89C51控制器信号处理电路温度信号采集蜂鸣器警报模块键盘电路加热模块控制图2-2 系统结构框图第三章 温度控制系统硬件设计3.1硬件设计方案根据设计需求构建原理图,选择合适的控制芯片,分别实现对温度传感器的选择及温度传感器信号处理电路的设计;液晶显示器电路的设计;蜂鸣器报警模块的设计;加热模块控制电路的设计;键盘电路的设计。其中主要包括电路的设计,电子器件的选择。目前在现有的设计中,温度传感器的选择及温度传感器信号处理电路的设计、液晶显示器电路的设计和加热模块控制电路的设计参考线路图样本较多,选择难度不大,而蜂鸣器报警模块的设计难度较大,如何选择误差,让大众更容易接受,比较有技术含量。3.2单片机系统介绍在整个系统的控制中,采用单片机处理芯片对课题的设计对象进行控制,主要有一下一些特性3:(1)芯片面向的控制对象为8位CPU;(2)芯片内有4KB ROM 的程序存储器;(3)芯片内有128B的片内数据存储器;(4)可寻址64KB的片外程序存储器和片外数据存储器控制电路;(5)在芯片中有2个16位的定时/计数器;(6)芯片中共有32条可以单独编程的接口,4个并行I/O接口;(7)芯片中有2个中断优先级,5个中断源;(8)在芯片中还可有掉电保护模式和低功耗的闲置;单片机除了以上一些特征外,而且物美价廉,外围电路相对而言较为简单。在实际应用中,此款单片机的工作频率比较低,但是对于整个设计系统,此工作频率足以满足整个系统的控制。单片机有32个I/O端口,这样便于整体设计,如图3-1所示为单片机控制系统。图3-1 单片机控制系统在如图3-1所示的单片机控制系统中,AT89C51单片机拥有两个外部中断、两个16位的定时器和两个可编程串行UART的单片机。因此AT89C51单片机作为中心控制模块完全满足设计需求,从而满足整个控制系统。AT89C51单片机的引脚如图3-2所示图3-2 AT89C51引脚图AT89C51单片机引脚说明:VCC:单片机电源GND:单片机接地引脚端口:端口为8位漏级开路双向I/O端口。此端口为输出端口,其中端口的每一位都能带动8个TTL逻辑电平。当端口输出信号为“1”时,表示高阻抗输入。当访问外部程序和数据存储器时,端口为低8位地址/数据复用。此种情况,端口表示内部上拉电阻。当操作时假如用flash编程,则端口也可以用来工作:在程序验证的过程中,需要上拉电阻,输出指令字节。端口:端口有内置上拉电阻,8位双向I/O端口,端口可驱动4个TTL逻辑电平。当端口输出信号为“1”时,将输出电流。并且与其它单片机不同之处是,和可以作为定时/计数器2的外部计数输入(/)和输出(/),具体情况如表3-1所示。表 3-1 和的其它功能引脚号功能特性(定时/计数器2外部计数脉冲输入),时钟输出定时/计数2捕获/重装载触发和方向控制当Flash编程和校验的过程中,端口会接收低8位地址字节。端口:端口有内置上拉电阻8位双向I/O端口,端口可驱动4个TTL逻辑电平。当端口输出信号为“1”时,由于端口被内部上拉电阻拉高,此端口便有了输入端口的功能,当此端口为输入端口时,较低的引脚将输出电流为ILL 。AT89C51单片机片内存储器售后通常处于擦除状态,即每个地址单元内容均为FFH,因此人们可随时对其编程4-5。当访问外部存储器或者通过16位的地址访问外部大量的存储设备时,端口会输出8位的地址。在此种情况下,端口会发送1,在使用8位的地址访问外部大量的存储设备时,端口会输出端口锁存器的部分内容。在Flash校验的过程中,端口会接收8位地址和一些其它的控制信号。端口:端口有内置上拉电阻8位双向I/O端口,端口可驱动4个TTL逻辑电平。当端口输出信号为“1”时,由于端口被内部上拉电阻拉高,此端口便有了输入端口的功能。当此端口为输入端口时,较低的引脚将输出电流为ILL。端口除了作为I/O接口外,还有其它功能功能,如表3-2所示。表 3-2 端口的其它功能引脚号第二功能(串行输入)(串行输出)(外部中断0)(外部中断1)(定时器0外部输入)(定时器1外部输入)(外部数据存储器写选通)(外部数据存储器读选通)当Flash编程和校验的过程中,P3端口会接收一些控制信号。:表示复位。当晶振工作,管脚会以2个机器周期高电平使单片机复位。:当访问外部存储设备时,ALE地址锁存器控制信号会锁存低8位地址输出脉冲。当Flash编程的过程中,引脚()也会使用此作为Flash编程的输入脉冲。在正常使用的过程中,输出脉冲仅为晶振的1/6,此时可用着外部定时器或者时钟,然而,需要注意的是,在访问外部存储器时,脉冲会有部分跳动。如果将的0位置设置为“1”,此时失效。此时的“1”,仅在执行指令或者时,才能正常工作。否则,会被拉高,在外部执行模式下会失效。:外部程序储存器选通信号()是外部程序存储设备的选通信号。当AT89C51单片机执行外部存储设备的代码时,在每个机器周期会被激活两次,而访问外部存储设备时,将不能激活。:访问外部程序存储器控制信号。当接口从0000HFFFFH的外部程序存储设备中读取相应的指令时,端口需要保持低电平而接地。而执行内部的程序指令时,端口需要接。当flash编程和校验的过程中,可以接12V(VPP)电压。:振荡器反相放大器及内部时钟发生器的输入端。:振荡器反相放大器的输出端。3.3 温度信号采集模块的设计3.3.1温度传感器的选择温度传感器的选择在温度控制系统的设计中占有重要地位,如今在市场上所见的温度传感器,价格低廉的温度传感器灵敏度不高,且很容易出现问题,灵敏度高的温度传感器,却价格昂贵,并不实用。因此,本设计在设计之初考虑到了这些因素的影响,根据具体的应用场合选择使用不同的温度传感器,且整体设计并不因为传感器的选择而发生变化。作为样本,本设计选择智能温度传感器6,样本温度传感器的分辨率可达到12位,识别0.0625的温度。传感器具有独立输出信号和处理信号的功能,而且只需要一位与芯片的接口,抗干扰能力强,温度测量范围为,在本设计中简单实用。采用1-总线的数据传输的温度传感器,采取总线的方式不仅可以大大降低硬件成本,同时也有利于系统的扩展设计,所以串行总线广泛应用于单片机测控中7。此采取的数字化单总线技术8,这样感测的温度信息可以从接口单线传出,指令信号也可以单线传入中,因此温度传感器与单片机的接口不像别的传感器那么复杂,只需要一条线,连接温度感测部分。温度传感器的供电方式,可以采用总线的供电方式,也可以采用外部电源供电的方式9。在传感器上有唯一的系列号,因而一条总线上可以放置多个温度传感器,这样就可以增多本设计的适用场合,比如火力发电厂、浴室、植物的培植室等众多场所。关于温度传感器的内部结构图如图3-3所示,温度传感器的引脚说明在表3-3所示。图3-3 内部结构图表3-3 的引脚说明引脚符号说明1接地2单线数据的输入/输出3可供选择的VDD两种供电方式 单片机与温度传感器结合的设计可以从通信线上得到电源10,此工作原理为:当信号线为高电平时,接上电源,给电容器充电,当信号线为低电平时,断开电源,此时电容器供电,直到信号线再为高电平时,传感器接上电源,从电容器充电,反复运行。另一种工作方法为温度传感器外接5V电源直接供电。此温度传感器与芯片的接线如图3-4所示。图3-4 图3.2 与接线方式3.3.2 信号放大电路在基于单片机的温度控制系统的设计中,信号放大的电路部分属于V-V放大,主要是对温度传感器感测空间温度信号的放大。前面温度传感器传输过来的信号经过差动放大器放大后,才能经过A/D转换器进行模拟信号、数字信号的转换,最后将数字信号送入单片机中处理,实现单片机对温度的控制。放大器的极数与单极放大器的带宽增益相关,在这里我们选用差分式斩波稳零高精度的运算放大器。其中,一级放大器可以接成双端差分的输入,单端的输出形式。将放大器连接成T型反馈网络的形式,那么此放大器的放大倍数:在实际应用中,各类元器件可以按照实际情况选定,通过电阻微调电阻实现系统需求。3.3.3 A/D转换电路A/D转化电路的功能主要是将模拟信号转换成数字信号,它是将温度传感器测量的温度信号传递给单片机的一个重要环节。如图3-5所示为芯片的引脚图。 图3-5 引脚图 图3-6 8255引脚图 A/D转换芯片主要由两个部分组成,一个为模拟芯片,另一个为数字芯片。模拟芯片由高性能的转换器和参考电压构成,数字芯片由逻辑控制电路和三态缓冲器构成。芯片有以下功能特性:芯片的分辨率:12位;芯片的非线性误差:或;芯片的转换速率:25s;模拟电压输入范围:0-10V,0-20V;电源电压:15V和5V;芯片的数据输出格式:12位/8位芯片工作模式:全速或者单一的工作模式。3.4键盘控制电路的设计本研究所设计的基于单片机的温度控制系统,因适用场合不同,根据具体情况会在设置不同的温度值,此时就需要前面所提到的键盘控制电路。在键盘控制电路的设计中,选用芯片可编程并行接口,具体引脚如图3-6所示。单片机有4个8位的并行接口,这些接口在设计中并不是完全提供给用户的,在外部扩展存储器时,只有和接口的部分口线供用户使用。因此在单片机设计的过程中也进行了接口局部拓展。芯片的接口没那么复杂,在如图3-7所示的芯片的片选信号以及A0、A1地址选择线主要由单片机的和、接口经过地址锁存器来提供。图3-7 键盘接口电路图芯片的A、B、C端口以及相应的控制端口地址分别为、和。芯片的D0D7端口与单片机中的端口到端口连接。键盘控制电路主要功能有:键1表示上升温度。键2表示下降温度。键3表示下限温度值。键4表示确定上限温度值。键5表示查询上下限的温度。根据具体的使用情况可以调节键1和键2来调节温度,当温度调到理想温度时,按下键3来确定下限值,此时调节的下限值将会保存到一个专用的寄存器中,在完成设定下限温度值后,再来调节键1和键2来调节温度,当温度调到理想温度时,按下键4来确定上限值,此时调节的上限值将会保存到一个专用的寄存器中,然后系统才能正常工作。3.5液晶显示电路的设计关于液晶显示器的功能前文已有相关介绍,液晶显示电路主要用来显示密闭空间的不同温度值。在如图3-8所示的电路图中,液晶显示模块用LED显示块来表示,它是由常规的发光二极管来显示温度。在图中的显示块中,此类显示块有两种:共阳极和共阴极。共阴极LED显示块的发光二极管公共部分接地。图3-8 显示电路原理图本研究选用的是共阴极的LED显示块,在图3-8所示的显示电路中,当二极管的阳极为高电平时,LED显示块的发光二极管点亮;LED显示块的发光二极管的引出端口(adp)与单片机的I/O口的8位线()相连接,此接口共阴极低电平有效,通过选择8位线并行的输出端口来输出不同的数据点亮对应的LED显示块的发光二极管,从而获得达到显示数字的效果。3.6蜂鸣器警报电路的设计本研究设计的蜂鸣器警报电路,主要功能是假如温度控系统的任意一模块不工作,即密闭空间在控制的情况下,偏离设定值过大,系统便会发生报警,该部分为单片机人机交互比较重要的部分,蜂鸣器警报电路如图3-9所示。图3-9 蜂鸣器警报电路在图3-9所示的电路中,采用继电器型,240AC的通断电流。直流线圈的电阻为95,三极管采用,直流线圈的输出电流为150mA,放大系数选择范围为60至1000之间,如果取200,那么在5V下Ic的电流为50mA左右,基极电流为0.25mA左右。因为单片机接口只有在高点位输出信号时,才能达到这样大的电流,而且接口属于三态的输出输入接口,因此,需要接一个上拉电阻,上拉电阻的阻值由以下公式计算: 这里通过取10电阻来让Q1在高电平时饱和导通,这样,基极电流便为。二极管D1在设计电路中有保护的功能,当Q1关断时续流之后,能够避免电感线圈断路的时候电压过高而损坏三极管。温度传感器具有存储的功能,即温度传感器自带存储器,这样温度传感器便能将设计之初,设定的温度差值存储在温度传感器的中,存储保存,每次系统启动时,系统都会从中读取设定的差值。在图3-9所示的继电器中,K1连接降温的装置,K2连接加热的装置,当实际的温度的温差值大于设定的温差值时,蜂鸣器发出提示音,表示超过设定值,加热器立即停止加热;当实际温差处于设计值之间的时候,继电器不工作。3.7加热模块电路的设计在基于单片机温度控制系统的设计中主要在于对温度的控制,一般情况下,密闭空间的温度与室外温度相差不多,那么为了满足生产生活的各类需求,需要在密闭空间中安置加热块,这样便能很方便的加热空间温度。又为了使空间温度均匀,常常将加热块均匀分布,这样温度传感器感测的温度更加准确。在现有的参考线路中,加热模块的电路很常见,对于本设计并非难点,主要在于如何使密闭空间受热均匀,温度传感器准确感测温度。第四章 系统软件设计以上主要介绍系统的硬件设计部分,但是要实现单片机控制温度的系统,还需要对系统软件进行设计。主要包括键盘部分程序的设计和温差控制部分程序的设计。4.1软件设计方案在软件的设计方案中,首先要了解实现的功能。先设定密闭空间温度,通过温度传感器感测密闭空间温度,由信号放大电路将温度信号放大,然后经过A/D转换电路转换将转换信号传递给芯片,假如感测器感测到密闭空间温度高于设定温度,系统立即停止加热,使温度达到密闭空间设定值温度;假如感测器感测到密闭空间温度低于设定温度,系统立即启动加热器,对密闭空间升温,使密闭空间温度升高。任意一模块不工作或工作出错,蜂鸣器会发出报警信号,从而达到智能化目的。液晶显示器可以实时显示密闭空间温度。系统流程图如图4-1所示。图4-1 系统主程序流程图启动温度传感器感测感测温度,将感测到的温度与设定值进行PID运算,假如,则加热,此时为高电平,在加热的过程中还要对密闭空间的温度进行检查。当时,此时为低电平,可控硅断开,关闭加热器。整个程序反复运行,直至结束。4.2温度控制部分程序的设计在此部分主要功能是将和两个采集的温度值互相比较,若蜂鸣器报警,此时将端口置为低电平,通过光耦合器打开可控硅,这样可以控制加热器加热,液晶显示器上显示888;若蜂鸣器报警,此时将端口置为高电平,通过光耦合器关闭可控硅,这样便可停止加热器加热,液晶显示器上显示888。如果,此温度在正常的范围内,液晶显示器上显示温度。温度控制部分的流程图如图4-2所示。 开始计数器换码和地址送显存蜂鸣器响、显示灯亮置端口为1,开加热器液晶显示返回计数器换码送显存 YN图4-2 温度控制部分的流程图4.3键盘部分程序的设计前面提及键盘的硬件设计部分,键盘主要是用来根据具体情况设置不同的温度值,选用的芯片在之前也有简单介绍。键盘部分的流程图如图4-3所示图4-3 键盘处理子程序流程图开始有键按下?延时20ms判别键号执行键处理子程序返回NY在选择键盘的时候,我们选择五个单键的键盘,这样更容易识别键盘值。五个键分别对应、端口,在程序执行的过程中,需要对、端口逐一进行判断高、低电平。如果端口是低电平表示按键按下去,如果端口是高电平,则表示按键并未按下。根据生活的习惯,键盘存在抖动问题,为了解决这一问题,采用键盘延时的原理,即有按键按下时,系统并不立即读入此键值,而是等待一段时间,然后判断按键的闭合,如果此时还是按键闭合,则进行按键处理,否则不进行处理。 4.4数据采集模块程序设计在数据采集模块程序设计模块,系统采用动态扫描的方式,也就是通过改变端口输出的高电平的位及端口相对应的数据段,这样便可轮流点亮液晶显示器上的数码管,数码管进行内部转换将接收的十六位进制数的BCD码转换成字形码,在液晶显示器上显示相应的数字,因此需要在RAM区建立一个显示缓冲区。显示部分流程图如图4-4所示。开始显示缓冲区指针置初值30H送R0扫描模式置初值FEH送R1R1送P2口取显示数据查表转换为段数据送P0口延时1ms显示缓冲器指针R0+1R1=0?R1左移一位返回YN图4-4 显示子程序流程图4.5液晶显示部分温度程序的设计液晶显示器会显示密闭空间不同的温度值,在液晶显示部分温度程序的设计中,数据采集是巡回检测三点的温度参数并把它们存在外部RAM指定单元,采样程序如图4-5所示。采样程序初始化各通道都采集一次?输出通道号启动转换读写数据修改通道及通道号重装定时器0常数启动返回NY图4-5 温度采样程序流程第五章 总结与展望本研究是基于单片机的温度控制系统。此系统可以根据具体的应用场合,采用不同类型的温度感测元件,通过对温度传感器感测到的温度进行分析、数值显示和数据存储,从而有效实现单片机对温度的智能控制。论文结合实际应用,具体介绍了单片机及其相应的一些优势,然后相继介绍了温度控制系统的硬件、软件的设计方法,编写温度控制系统的程序,通过软件测试,本设计完全符合最初的设计目的。随着工业的发展,设计对象的复杂程度会越加复杂,尤其在设计滞后的、时变的、非线性的复杂的系统时,其中一些参数未知或者变化缓慢,或者带有延时,或者抗干扰能力差,或者获取的数学模型非常粗糙甚至没有2,再加上现今人们对控制品质的要求日益加深,传统的PID控制的缺陷也逐渐暴露了出来。因此,设计师在应用PID控制的同时,也在不断修改,完善PID控制。本设计在研究的过程中也有很多的不足:(1)在硬件方面,驱动电路的抗干扰能力差,可以考虑采用DSP或者ARM对系统进行重新设计;(2)在软件方面,程序较为复杂,可能会发生运算错误,可以摒弃传统的软件编程模式,采用基于实时操作系统的系统软件开发;(3)在算法方面,因为常常会遇到一些参数的不清晰,可以采用模糊控制的方式。回顾基于单片机温度控制系统的设计过程,深刻的体会到自己在很多方面还有不足,通过本次毕业设计,本人深刻的感悟到理论联系实践的重要性,并在以后的工作和学习中,本人将继续加强专业知识的理解。参考文献1 黄凤娟.基于单片机的温度测控系统在温室大棚中的设计与实现D.合肥:安徽大学,2006.2 王海宁.基于单片机的温度控制系统的研究D.合肥:合肥工业大学 ,2008.3 吴禄慎, 李彧雯 基于单片机的多点温度采集系统设计J.飞机设计,2010(4):76 804 胡瑞雯.智能检测与控制系统(第1版)M.西安:西安交通大学出版社,19915 Trulove,J.LAN wiring.NEW YORK:McGraw-Hill,1997.6 张姗姗 基于单片机温度采集控制系统设计J.信息通信,2012(6):69-707 XIAO,X.,and Ni,L.“Internet QoS:A Big PICTURE”IEEE Network,March/April 1999.8 黄宇飞,吴江.单片机单总线技术J.单片机与嵌入式系统应用,2001,(l)数字化单总线技术9 Dallas Corp.,DS18B20 Programmable Resolution One-wire DigitalThermometerZ.200010 夏志华.基于单片机的温度控制系统的研究与实现J.煤炭技术,2013(2):191-192.附 录123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include #include #include #include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longdoublepv,sv,ei,ex,ey,K,Ti,Td,q0,q1,q2,op,x,ux,tv;uint Ts;voidmain(void)/ 主程序ex=0;ey=0;sv=80;/设定值K=1;Ti=10;Td=0;Ts=100;LTC1446(0,0);RCAP2H=0x4C;/100ms计时RCAP2L=0x00;TR2=1;ET2=1;EA=1;while(1);timer2 () interrupt 5staticuchar t;TF2=0;t+;if(t=2)t=0;pv=ADC7366();/AI1通道采集ei=sv-20*pv;q0=K*(ei-ex);if(Ti=0)q1=0;elseq1=K*0.001*Ts*ei/Ti;q2=1000*K*Td*(ei-2*ex+ey)/Ts;ey=ex;ex=ei;op=op+q0+q1+q2;if(op4.5)op=4.5;if(op0;j-)/DA1输出 if(a&i) DA_DIN=1; else DA_DIN=0; DA_CLK=0; DA_CLK=1; a=a0;j-)/DA0输出 if(b&i) DA_DIN=1; else DA_DIN=0; DA_CLK=0; DA_CLK=1; b=b1; DA_CS=1;#endif123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141/* 十二位ADC转换(AD7366)驱动程序 */#include#define uchar unsigned char#define uint unsigned int#define ulong unsigned long sbit cs=P36; sbit addr=P11; sbit busy=P31; sbit sclk=P35; sbit outa=P14; sbit outb=P30; sbit cnvst=P34; sbit rang0=P12; sbit rang1=P13; sbit refsel=P37; uint data1=0x0000,data2=0x0000; uint data3=0x0000,data4=0x0000; floatout1,out2;/*初始化*voidst0(void) refsel=1;/内部参考电压 rang0=0;/输入范围-10V到+10V rang1=0; addr=0;/通道选择 cnvst=1; sclk=1; cs=1;/*启动AD转换*voidst1(void) cs=1; addr=0; sclk=1; cnvst=0;/*启动转换输出*st3(uint *Hdata1,uint *Hdata2) uchar i; uint j; *Hdata1=0; *Hdata2=0; j=0x0800; cnvst=1; cs=0; for(i=0;i12;i+) sclk=1; if(ii); else *Hdata1=*Hdata1; if(outb) *Hdata2=*Hdata2|(ji); else *Hdata2=*Hdata2; sclk=0;/*Hdata2=0x0802;/*等待转换结束*voidst2(void) while(busy=1); st3(&data1,&data2);/*转换结束*voidst4(void) cs=1; cnvst=1;/*ADC7366函数调用*doubleADC7366(void) uchar i; uint symbol_1=0x0000,symbol_2=0x0000; st0(); st1(); for(i=0;i5;i+); st2(); st4();/*通道1转换成电压值 symbol_1=data1&0x0800; if(symbol_1!=0) data3=data1&0x07ff; data3=(data3-1); data3=data3&0x07ff; out1=-(data3/204.8); else data3 = data1&0x07ff; out1=data3/204.8;/*通道2转换成电压值 symbol_2=data2&0x0800; if(symbol_2!=0) data4=data2&0x07ff; data4=(data4-1); data4=data4&0x07ff; out2=-(data4/204.8); else data4 = data2&0x07ff; out2=data4/204.8; return(out1);致 谢本文是在我的导师老师的悉心指导下完成的。老师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。同时,对我的论文工作也提出了许多宝贵的意见,在此表示衷心的感谢!另外,也感谢我的家人和朋友,他们的理解与支持使我能够顺利完成了我的学业!29
展开阅读全文