为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机的室温控制系统的设计

2018-09-22 50页 doc 2MB 64阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
基于单片机的室温控制系统的设计成都理工大学工程技术学院毕业设计 PAGE 47 基于plc的四层电梯自动控制器设计 基于plc的四层电梯 自动控制器设计 作者姓名:赵晶 专业名称:电气工程及其自动化 指导教师:孙莉莉 讲师 摘要 随着科学技术的发展、近年来,我国的电梯生产技术得到了迅速发展.一些电梯厂也在不断改进设计、修改工艺。更新换代生产更新型的电梯,电梯主要分为机械系统与控制系统两大部份,随着自动控制理论与微电子技术的发展,电梯的拖动方式与控制手段均发生了很大的变化,交流调速是当前电梯拖动的主要发展方向。目前电梯控制系统主要有三种控制方式...
基于单片机的室温控制系统的设计
成都理工大学工程技术学院毕业设计 PAGE 47 基于plc的四层电梯自动控制器设计 基于plc的四层电梯 自动控制器设计 作者姓名:赵晶 专业名称:电气工程及其自动化 指导教师:孙莉莉 讲师 摘要 随着科学技术的发展、近年来,我国的电梯生产技术得到了迅速发展.一些电梯厂也在不断改进设计、修改。更新换代生产更新型的电梯,电梯主要分为机械系统与控制系统两大部份,随着自动控制理论与微电子技术的发展,电梯的拖动方式与控制手段均发生了很大的变化,交流调速是当前电梯拖动的主要发展方向。目前电梯控制系统主要有三种控制方式:继电路控制系统(“早期安装的电梯多位继电器控制系统)、PLC控制系统、微机控制系统。继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰。微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。而PLC控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,倍受人们重视等优点,已成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传统继电器控制系统的技术改造。 关键词:plc 电梯 控制系统 电梯系统运行检修和调试 目录 I摘要 IIAbstract III目录 1前言 21 绪论 21.1 选题的目的和意义 21.2 温度控制的国内外发展概况 21.2.1 温度控制的国内发展概况 31.2.2 温度控制的国外发展概况 31.3几种常见温度控制系统 52 系统论证 52.1 主控制器选择 52.2 温度采集系统的选择 72.3 热电制冷系统的选择 72.4 按键系统的选择 82.5 显示器的选择 82.6 警告及提示系统选择 92.7 风扇电机选择 103 系统硬件电路设计 103.1 硬件总体结构框图 103.2 单片机知识介绍 113.2.1 单片机的应用领域 113.2.2 单片机AT89S52介绍 143.3 温度测量系统电路设计 143.3.1 温度传感器DS1624介绍 153.3.2 DS1624的引脚及内部结构 163.3.3 DS1624的工作原理及方式 173.3.4 片内256字节存储器操作 183.3.5 DS1624的指令集 193.3.6 I2C介绍 203.3.7 DS1624的电路设计 213.4 热电制冷片驱动电路设计 213.4.1 驱动芯片MAX1968介绍 233.4.2 热电制冷片TEC介绍 243.4.3 驱动电路设计 253.5 按键电路介绍 263.6 复位与时钟电路 273.7 LED显示电路 273.8 警告及指示电路 283.9 电机驱动电路 283.10 整体电路图 314 系统软件设计 314.1 系统主程序流程图 314.2 按键控制服务程序流程图 324.3 热电制冷程序流程图 33总结 34致谢 35参考文献 36附件 程序清单 前言 温度控制被广泛地用在生产、生活、实验等领域。而在医用、水产、特种工业、工业探伤、照相等行业,都需要求有稳定而精确的温度,也就是在设定一个温度之后,系统能够自动调整到这一个数值并保持不变。本是基于单片机而设计的室内温度控制系统,通过对室内温度的检测传到单片机,与给设定值进行比较,单片机对数据进行处理,根据偏差信号来改变特定I/O口的电平,也就控制了热电系统,从而达到室内温度控制的目的。 本论文是对室内进行的温度控制。从室内温度的检测并传送到单片机,在设计过程中也遇到了困难,比如说温度测量器件的选用,是选用数字量输出还是选用模拟量输出,各有什么有特点,这些都经过了考虑才选择了这个方案。在单片机的设计中,单片机外部线路的设计,端口的分配和选用,复位和内部时钟的配合和电路的驱动等方面也遇到了不少问题,经过对各模块功能及单片机I/O的特点详细了解后都基本上解决了。加热电路本论文选择了热电制冷电路,这个电路的开关频率很高,很多空调等都选用了类似的热电制冷电路,只是根据控制要求做了适当调整。 本论文利用芯片DS1624作为室内温度的检测元件。DS1624芯片可以直接把测量的温度值变换成单片机可以读取的电压信号。单片机通过外部矩阵键盘进行温度设定,读入的温度值与设定值进行比较,根据偏差的大小,单片机执行程序对热电系统进行控制,即经过特定I/O口的电平变化,让热电系统加热或者说是制冷,从而改变了室内温度。当热电系统加热时,使室内温度升高,DS1624不断对室内温度进行温度检测,当偏差存在时单片机就继续驱动热电系统电路进行加热,直到偏差为零。此时将MAX1968的SHDN引脚置低,设置成关断置闲模式。处于制冷时也是一样的道理。 1 绪论 1.1 选题的目的和意义 随着科学技术的不断发展,温度的测量和控制在工业生产中获得了广泛的应用,在工农业生产、国防、科研以及日常生活领域占有重要的地位。温度控制系统是人类供热、取暖的主要设备的驱动来源,它的出现迄今已有两百余年的历史。期间,从低级到高级,从简单到复杂,随着生产力的发展和对温度控制精度要求的不断提高,温度控制系统的控制技术得到迅速发展。目前高效率温度控制系统广泛应用于社会生活、工业生产的各个领域,适用于家电、汽车、材料、电力电子等行业,成为发展国民经济的重要热工设备之一。在现代化建设中,能源的需求非常大,然而我国的能源利用率极低,所以实现高效率的温度控制,有着极为重要的实际意义。 1.2 温度控制的国内外发展概况 随着计算机技术及现代传感技术的发展,温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。在许多场合,及时准确获得目标的温度信息是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。近些年来,呈现出智能化、计算机化、全自动等特点。它们普遍利用温度传感器、单片机(还有PLC,DSP)和微机技术实现对温度的检测,并通过LED或LCD、加热装置、排风装置等的控制来实现对温度的数值显示和自动调节。 1.2.1 温度控制的国内发展概况 温度控制系统在国内各行各业的应用虽然已经十分广泛,但从生产的温度调节来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比有着较大差距。能适应一般温度系统控制,难于控制滞后、复杂、时变温度系统。而适应于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并在仪表控制参数的自整定方面,国外已有较多的成熟产品。但由于国外技术保密及我国开发工作的滞后,还没有开发出性能可靠的自整定软件。控制参数大多靠人工经验及现场调试确定。 近几年来,在我国以信息化带动的工业化正在蓬勃发展,温度已成为工业对象控制中一种重要的参数,特别是在冶金、化工、机械等各类工业中,广泛使用各种加热炉、热处理炉、反应炉等。对温度控制系统的要求随工艺的要求越来越高,促使温度控制系统不断向控制迅速,精度高,抗干扰能力强,高性价比方向发展。 1.2.2 温度控制的国外发展概况 国外温度控制系统发展迅速,并在智能化、自适应、参数自整定等方面取得成果。日本、美国、德国、瑞典等技术领先,都生产出来一批商品化的、性能优异的温度控制器及仪器仪表,并在各行各业广泛应用。它们主要具有如下特点: 1.适应于大惯性、大滞后等复杂温度控制系统的控制; 2.能够适应于受控系统数学模型难以建立的温度控制系统的控制; 3.能够适应于受控系统过程复杂、参数时变的温度控制系统的控制; 4.温度控制系统普遍采用自适应控制、自校正控制、模糊控制、人工智能等理论及计算机技术,运用先进算法,适应范围广; 5.是温控器普遍具有自整定功能。借助计算机软件技术,温控器具有对控制对象控制参数及特性进行自整定的功能。有的还有自学习功能,能够更具历史经验及控制对象的变化情况,知自动调整相关控制参数,以保证控制效果的最优化; 6.是具有控制精度高、抗干扰力强、鲁棒性好的特点。 目前国外温度控制系统及仪表正朝着高精度、智能化、小型化等方面快速发展。 1.3几种常见温度控制系统 下面介绍几种非常常见的温度控制系统: 1.虚拟仪器温室大棚温度测控系统,在农业应用方面虚拟仪器温室大棚温度测控系统是一种比较智能、经济的方案,该系统能够对大棚内的温度进行采集,然后再进行比较,通过比较对大棚内的温度是否超过温度限制进行分析,如果超过温度限制,温度报警系统将进行报警,来通知管理人员大棚内的温度超过限制,大棚内的温控系统出现故障,从而有利于农作物的生长,提高产量。系统最大的优点是在一台电脑上可以监测到多个大棚内的温度情况并进行控制。该系统LabVIEW虚拟仪器编程,通过对前面板的设置来显示温室大棚内的温度,越限报警来对大棚内温度进行控制。该系统有单片机,温度传感器,串口通信,和计算机组成。 2.模糊PID热水锅炉温度控制系统,模糊PID控制器是以常规PID为基础,采用模糊推理思想,根据不同的e和ec对PID参数进行在线自整定,控制器有两部分组成,即常规PID控制部分和模糊推理的参数校正部分。应用模糊集合理论建立参数kp、ki和kd与系统误差e和系统误差变化率ec之间的二元连续函数关系,并用不同e和ec在线自整定PID参数。 3.电阻炉温度控制系统,该系统的硬件主要由单片机主控、前向通道、后向通道、人机接口和接口扩展等模块组成,以内含C52兼容单片机的ADuC845为控制核心、配有640KB的非易失RAM数据存储器、外扩键盘输入、320x240点阵的图形液晶显示器进行汉字、图形、曲线和数据显示,超温报警装置等外围电路;预留微型打印机接口,打印现场结果。预留RS232接口,能和PC机联机传输现场检测数据。电阻炉的温度先由热电偶温度传感器检测并转换成微弱的电压信号,温度变换器此信号进行非线性校正及电压放大,由单片机内部A/D转换器将其转换成数字量。再经数字滤波、误差校正、标度变换、线性拟合、查表等处理后。一方面将炉温经人机面板上的LCD显示;另一方面将该温度值与被控制值(键盘设定值)比较,根据偏差值的大小,由控制算法进行运算,最后输出移相控制脉冲,放大后触发可控硅导通。达到控制电阻炉温度的目的。如果实测温度值超过了该系统所要求的范围,单片机就向报警装置发出命令,系统进行报警。 2 系统方案论证 室内温度的大小对生产、食品储存、农作物生长等的影响很大。而单片机的测温和控制装置,能对室内环境温度进行测量,并根据温度给定值给出调节量,控制执行机构,实现调节室内温度的目的。本系统要求随时监视室内的温度,在一定范围内根据用户温度设定值,迅速做出调整,以达到对室内温度的控制。 2.1 主控制器选择 控制器是整个控制系统的核心部件,它的性能关系到系统的运算处理能力、控制精度、功能的实现等等,因而主控制器的选择非常重要。 方案一:采用含有ARM内核的单片机,这类处理器的优点是:低功耗,功能强大,运算处理能力强,控制精度高,I/O口可以配置,应用灵活,广泛使用在嵌入式系统方面,已经渗透到生活的许多方面,包括现在使用的手机,就有嵌入式ARM的参与,而且功能也越来越趋于完善。由此可以看出ARM通常用于功能完善,处理功能强,控制精度高的场合。 方案二:采用Atmel公司的AT89S系列单片机,这类处理器的优点是:低功耗,高性能,有4~8K系统可编程flash存储器,与工业80C51产品指令与引脚完全兼容,在生活中的应用相当广泛,涉及到日常生活,工业控制方面等等,能满足通常的控制要求,而且取得了相当满意的效果,控制精度高。 基于以上两种方案比较,再结合本系统的控制要求,选用Atmel公司的AT89S52单片机,它有8K的系统可编程flash存储器,有32个通用I/O口,能够实现本控制系统的功能、满足要求,也不用再扩展存储器,减少了硬件延迟与误差,保证系统快速响应,而且组成系统的性价比高,资源得到了充分的利用。 2.2 温度采集系统的选择 温度采集元件也是本控制系统的另一重要部件,它是这个控制系统的基础。测量结果误差的大小关系到后级控制的难易程度,误差越大,处理就越难。在控制系统中我们学过,组成闭环控制系统的元件中,测量元件引起的误差不能消除,系统本身的误差则可以通过算法控制到最小。而组成的任何系统本身都存在一些误差,这样就使控制精度更低了,甚至不能完成控制要求而以失败告终。 方案一:采用模拟量输出温度传感器AD590,它具有线性优良、性能稳定、灵敏度高、无需补偿、热容量小、抗干扰能力强、可远距离测温且使用方便等优点。可广泛应用于各种冰箱、空调器、粮仓、冰库、工业仪器配套和各种温度的测量和控制等领域。 方案二:采用数字量输出DS1624,DS1624是美国DALLAS公司生产的集成了测量系统和存储器于一体的芯片。数字接口电路简单,与I2C总线兼容,且可以使用一片控制器控制多达8片的DS1624。测温范围宽,读数稳定,分辨率高,无须外接电路,与单片机接口简单,其数字温度输出达13位,精度为0.03125°C。DS1624可工作在最低2.7V电压下,适用于高精度、低功耗的应用系统场合。 方案三:采用热敏电阻式温度传感器,常用的热敏电阻温度传感器都是具有负温度系数的热敏电阻,它的电阻率受温度的影响很大,而且随温度的升高而减小。优点是:灵敏度较高,能检测出6°C到10°C的温度变化;工作温度范围宽;体积小,能够测量其它温度计无法测量的温度;使用方便;易加工成复杂的形状;寿命长,稳定性好、过载能力强。缺点是互换性差,非线性严重。 基于以上方案比较,方案一和方案三都要先放大后经A/D处理后才能传递给单片机处理,电源对放大和A/D转换结果有不同程度的影响,为了使误差尽可能小,则对电源的要求比较高,因而增加了硬件延迟与成本(是方案二的两倍以上),比方案二的效果也差一些。而方案二对电源没有特别要求,两线只需分别加一个上拉电阻就可以与单片机直接相连。从系统控制要求角度出发,再考虑系统的性价比,选择了方案二。 2.3 热电制冷系统的选择 热电制冷系统是整个温度控制系统的加热制冷的执行系统,包括加热制冷元件,元件的驱动电路。在允许的温度范围内,该系统让室内温度可以根据实际需要加热或制冷,以改变室内温度,为用户提供一个满意的室内温度。 方案一:采用发热电热丝制热,而制冷则用可以另选制冷的电路。优点在于采用市电,比较方便,由单片机输出PWM波来控制双向可控硅的触发相位,控制执行元件电路加热或制冷。但是用市电的制冷电路却是一个大难题,而且多为一个制冷系统,如空调的制冷系统。 方案二:采用半导体热电制冷片,半导体制冷片的工作运转是用直流电流,它既可制冷又可加热,而且只要通过改变直流电流的极性就可以在同一制冷片上实现制冷或加热,这个效果的产生就是通过热电的原理,在现代的温度控制系统中应用相当的广泛,推动了温度控制系统的跨越式发展,被称为世界“制冷”三大奇迹之一。而且有专门的驱动芯片(如MAX1968),可以改变电流的方向,效果好,低价格。 基于以上两个方案比较,方案二组成的执行系统,结构简单,功能强大,可靠性高,性价比也高,能够同时实现执行系统的加热与制冷。而方案一组成的系统结构就不及方案二灵活而有序。所以我选择方案二。 2.4 按键系统的选择 按键系统是整个温度控制系统的温度设定输入系统,按照用户的要求输入所需的室温值。当温度在允许范围内时,按键设定的温度得以执行,通过热电制冷片加热或制冷,通过风扇加速空气流动,来达到迅速调整室温的目的。 方案一:直接利用单片机接口组成矩阵式键盘,要M×N个按键,则需要用M+N个I/O接口。而按键的中断则采用与门集成芯片输出来触发单片机的外部中断,在主控制器收到中断后由中断程序迅速读取按键值,反应非常迅速,而且在I/O口充足时,就更为常用。同时编程也容易,可靠性高。 方案二:用专门的芯片扩展键盘,也是矩阵式的,当有按键按下时就会触发按键中断,在主控制器收到中断信号后就开始读相应按键值。不同的专用芯片与主控制器间的通信方式不一样,有的是并口,有的则是串口。根据主控制器的I/O口来选择用并口还是串口通信方式。 基于以上两种方案比较,结合主控制器的I/O口,方案一和方案二都行,效果都好,但是主控制器的I/O口比较充足,可以直接用并口通信,而此时如果选择方案二,则中间再用一块专用芯片,这样就会增加硬件延时,降低了控制系统的实效性,因而在实现同样功能的时侯,按键系统的性价比却明显降低了,所以我选择方案一。 2.5 显示器的选择 显示器是室温控制系统中显示系统的重要组成部件,它显示了用户设定的温度即室内最终要达到的温度(在允许的范围内0°C~40°C),让人们知道室内的温度情况,是一个可靠的人机交流平台之一。 方案一:采用四位一体的共阴数码管,接法简单,效果好。当驱动能力不够时(如单片机的P0口),可以直接加上拉电阻,或者加专门的驱动芯片。通常情况下加上拉电阻能实现既定功能就不加专门的驱动芯片,以提高性价比,减少硬件延迟。 方案二:采用液晶显示,液晶的优点在于可以显示数字,也可以显示中文诗歌等多种多样的字符。显示内容比数码管强多了,但就是价格比较昂贵(几十~几百不等),一般在要求显示内容非常丰富的场合才使用。 基于以上方案比较,本室内温度控制系统只显示数字就可以,默认为华氏温度,因而就选择非常便宜的数码管显示,就满足了系统的要求。 2.6 警告及提示系统选择 警告系统由声音与常亮红灯组成,提示系统由一个绿灯组成。警告系统提示了用户的操作得以执行与否。若合理(无声且红灯灭)自然得以执行。若不合理(亮红灯发警告声)则用户必须迅速做出调整。 方案一:声音让扬声器发出,扬声器的优点在于声音大,传播距离远,电路结构简单,需要时也可以加驱动来增大功率。常亮灯用红色发光二极管,按判断结果通电与断电。提示灯用绿色的发光二极管。 方案二:声音让蜂鸣器发出,蜂鸣器的电路简单,用两个电阻、一个电容与三极管就可以驱动,而且声音也大,效果很好,在一定范围内,电流越大声音越大而且只改变电路中的电阻即可。非常方便。红灯与提示灯同方案一。 基于以上方案比较,选择既简单又方便的方案二。 2.7 风扇电机选择 风扇保证了热气与冷气迅速流动到室内的每一个角落,满足室内温度控制的要求。而风扇要用电机来带动,所以选择一个可靠,转速可调的电机很重要。 方案一:采用直流电动机,直流电机在电压一定时(其它条件不变)转速恒定,当只改变电压时,转速也随之改变,调速性能相当好,堪称完美。而且转矩也大,应用非常广泛。 方案二:采用步进电机,步进电机是一种把电脉冲转换成角位移的电动机。每输入一个电脉冲步进电机就前进一步,其角位移与脉冲数成正比,电机转速与脉冲频率成正比,且转速和转向于各项绕组的通电方式有关。 基于以上方案比较,如果要一个稳定的转速,控制又方便的电机,则方案一明显优于方案二,但本系统要根据温度差来调节风扇快慢,温度差越大,则转动越快。才能使控制更精确,所以我选择方案二。 3 系统硬件电路设计 3.1 硬件总体结构框图 本室内温度控制系统由温度采集系统、按键控制系统、主控制器、执行系统、数码显示系统、警告及提示系统组成,具体如图3.1所示: 图3.1 硬件总体结构框图 3.2 单片机知识介绍 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括地讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可用它来做一些控制电器一类不是很复杂的工作足矣了。 可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。 单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。 3.2.1 单片机的应用领域 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可以分为以下几个范畴: 1.在智能仪器仪表上的应用,如精密测量设备(功率计,示波器,各种分析仪)。 2.在工业控制中的应用,用单片机可以构成形式多样的控制系统、数据采集系统。 3.在家用电器中的应用,从电饭褒、洗衣机、电冰箱、空调机、彩电、其它音响视频器材、再到电子秤量设备,各种各样,无所不在。 4.在计算机网络和通信领域中的应用,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。 5.单片机在医用设备领域中的应用,医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。 6.在各种大型电器中的模块化应用,如音乐集成单片机,音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。 3.2.2 单片机AT89S52介绍 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在线系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在线系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 它的主要性能有:与MCS-51单片机产品兼容;8K字节在线系统可编程Flash存储器;1000次擦写周期;全静态操作:0Hz~33Hz;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;八个中断源;全双工UART串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;看门狗定时器;双数据指针;掉电标识符。 引脚结构如图3.2所示: 图3.2 AT89S52引脚图 VCC:电源 GND:地 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和计时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2 输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。 RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可作为外部定时器或时钟使用。特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX 或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位的设置对微控制器处于外部执行模式下无效。 PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。 EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 3.3 温度测量系统电路设计 3.3.1 温度传感器DS1624介绍 在本论文中,选用的是温度测量的专用芯片DS1624是美国DALLAS公司生产的集成了测量系统和存储器于一体的芯片。数字接口电路简单,与I2C总线兼容,且可以使用一片控制器控制多达8片的DS1624。测温范围宽,读数稳定,分辨率高,无须外接电路,与单片机接口简单,其数字温度输出达13位,分辨率为0.03125°C。测量温度范围为-50°C ~+125°C,在-10°C ~+85°C范围内,精度为±0.05°C。DS1624可工作在最低2.7V电压下,支持2.7V~5.5V的电压范围,使系统设计更灵活方便。适用于高精度、低功耗应用系统。DALLAS半导体公司的数字化温度传感器DS1624是世界上第一片支持“两线串行”接口的温度传感器。两线数字接口独特而且经济的特点,使用户可轻松地组建传感器网络,抗干扰性高。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测量类消费电子产品等。I2C总线是Philips公司首先推出的一种两线制串行传输总线。它由一根数据线(SDA)和一根时钟线(SCL)组成,所有符合I2C总线的器件组合了一个片上接口,使器件之间直接通过I2C总线通讯,总线上最多可挂接128个I2C器件,通过硬件设置地址、软件寻址的方法对各个器件进行片选,大大节省了系统资源。 3.3.2 DS1624的引脚及内部结构 DS1624具有8脚DIP封装及8脚SOIC封装两种形式,其引脚功能如表3.1所示,引脚如图3.3所示。 表3.1 DS1624引脚功能 引脚 符号 功能 1 SDA 数据输入输出端 2 SCL 时钟信号输入端 3 NC 无关引脚 4 GND 接地端 5 A2 地址输入端 6 A1 地址输入端 7 A0 地址输入端 8 VDD 电源端 图3.3 DS1624引脚图 DS1624从功能上可将其分为温度测量和E2PROM两个部分,其中E2PROM具有256个字节,可以用来存储一些必要数据,如不同温度下的温度补偿系数等等。DS1624的内部结构如图3.4所示: 图3.4 DS1624内部结构图 3.3.3 DS1624的工作原理及方式 DS1624在测量温度时使用了独有的在线温度测量技术,其温度测量原理如图3.5所示: 图3.5 DS1624工作原理 在计数门开通的情况下对低温系数振荡器的脉冲个数进行计数,计数脉冲的周期由高温系数振荡器所决定,计数器和温度寄存器的预先设置值为-55°C。如果计数器在脉冲结束之前到达0,则温度寄存器增加,同时计数器预置为非线性累加器的值,并重新开始计数,如果脉冲周期在计数器到0之前还未结束,则重复上面的过程,否则停止计数。最终温度寄存器中的值即为被测温度值。 通过改变增加的每1°C内的计数器的计数,斜坡累加电路可以补偿振荡器的非线性误差,以提高精度,任意温度下计数器的值和每一斜坡累加电路的值对应的计数次数须为已知。 DS1624的温度值以0.03125°C为单位表示,DS1624内部的温度寄存器为13为(2个字节)的寄存器,该寄存器可以通过I2C总线串行读出,高位在前,低位在后。该13位寄存器的内容即为补码表示的温度值,最高位为符号位,符号为“1”表示温度值为负,为“0”表示温度值为正。将该13位数据的真值乘以0.03125,即为被测温度值。例如: 0 0 0 1 1 0 0 1 0 0 0 1 0 X X X 表示被测温度为:+802*0.03125=25.0625°C DS1624的工作方式是由片上的配置/状态寄存器来决定的,其中DONE为转换完成位,温度转换结束时置1,正在进行转换时为0;1SHOT为温度转换模式选择。1SHOT为1时为单次转换模式,DS1624在收到启动温度转换命令EEH后进行一次温度转换。1SHOT为0时为连续转换模式,此时DS1624将连续进行温度转换,并将最近一次的结果保存在温度寄存器中。该位为非易失性的。如下表所示: DONE 1 0 0 1 0 1 1SHOT 3.3.4 片内256字节存储器操作 控制器对DS1624的存储器编程有两种模式:一种是字节编程模式,另一种是页编程模式。 在字节编程模式中,主控制器发送地址和一个字节的数据到DS1624。在主器件发出开始(START)信号以后,主器件发送写控制字节即1001A2A1A00(其中R/W控制位为低电平“0”)。指示从接收器被寻址,DS1624接收后应答,再由主器件发送访问存储器指令(17H)后,DS1624接收后应答,接着由主器件发送的下一个字节字地址将被写入到DS1624的地址指针。主器件接收到来自DS1624的另一个确认信号以后,发送数据字节,并写入到寻址的存储地址。DS1624再次发出确认信号,同时主器件产生停止条件STOP,启动内部写周期。在内部写周期DS1624将不产生确认信号。 在页编程模式中,如同字节写方式,先将控制字节、访问存储器指令(17H)、字地址发送到DS1624,接着发N个数据字节,其中以8个字节为一个页面。主器件发送不多于一个页面字节的数据字节到DS1624,这些数据字节暂存在片内页面缓存器中,在主器件发送停止信号以后写入到存储器。接收每一个字节以后,低位顺序地址指针在内部加1。高位顺序字地址保持为常数。如果主器件在产生停止条件以前要发送多于一页字的数据,地址计数器将会循环,并且先接收到的数据将被覆盖。像字节写操作一样,一旦停止条件被接收到,则内部写周期将开始。 存储器的读操作在这种模式下,主器件可以从DS1624的EEPROM中读取数据。主器件在发送开始信号之后,主器件首先发送写控制字节1001A2A1A00,主器件接收到DS1624应答之后,发送访问存储器的指令(17H),收到DS1624的应答之后,接着发送字地址将被写入到DS1624的地址指针。这时DS1624发送应答信号之后,主器件并没有发送停止信号,而是重新发送START开始信号,接着又发送读控制字节1001A2A1A01,主器件接收到DS1624应答之后,开始接收DS1624送出来的数据,主器件每接收完一个字节的数据之后,都要发送一个应答信号给DS1624,直到主器件发送一个非应答信号或停止条件来结束DS1624的数据发送过程。 3.3.5 DS1624的指令集 数据和控制信息的写入读出是以I2C方式进行的。时序如图3.6所示: 在写入信息时,主器件输出从器件(即DS1624)的地址,同时R/W位置0。接收到响应位后,总线上的主器件发出一个命令地 图3.6 DS1624 I2C时序 址,DS1624接收此地址后,产生响应位,主器件就向它发送数 据。如果要对它进行读操作,主器件除了发出命令地址外,还要产生一个重复的启动条件和命令字节,此时R/W位为1,读操作开始。下面对它们的命令进行说明。 访问存储器指令[17H]:该指令是对DS1624的EEPROM进行访问,发送该指令之后,下一个字节就是被访问存储器的字地址数据。 访问设置寄存器指令[ACH]:如果R/W位置0,将写入数据到设置寄存器。发出请求后,接下来的一个字节被写入。如果R/W位置1,将读出存在寄存器中的值。 读温度值指令[AAH]:即读出最后一个测温结果。DS1624产生两个字节,即为寄存器内的结果。 开始测温指令[EEH]:此命令将开始一次温度的测量,不需再输入数据。在单次测量模式下,可在进行转换的同时使DS1624保持闲置状态。在连续模式下,将启动连续测温。 停止测温指令[22H]:该命令将停止温度的测量,不需再输入数据。此命令可用来停止连续测温模式。发出请求后,当前温度测量结束,然后DS1624保持闲置状态。直到下一个开始测温的请求发出才继续进行连续测量。 3.3.6 I2C介绍 以启动信号START来掌管总线,以停止信号STOP来释放总线; 每次通讯以START开始,以STOP结束; 启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R/W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据; 当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号; 每个数据字节在传送时都是高位(MSB)在前; 写通讯过程: 1.主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2.发送一个地址字节(包括7位地址码和一位R/W); 3.当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4.主控收到ACK后开始发送第一个数据字节; 5.被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束; 6.主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线; 读通讯过程: 1.主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线; 2.发送一个地址字节(包括7位地址码和一位R/W); 3.当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4.主控收到ACK后释放数据总线,开始接收第一个数据字节; 5.主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束; 6.主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线; 3.3.7 DS1624的电路设计 结合DS1624的硬件连接要求,图3.7是DS1624与单片机的接口电路图,其中电阻R0,R1起电平上拉作用。 图3.7 DS1624电路 3.4 热电制冷片驱动电路设计 3.4.1 驱动芯片MAX1968介绍 MAX1968是一款适用于Peltier TEC模块的开关型驱动芯片, 图3.8 MAX1968功能框图 工作于单电源,能够提供±3A双极性输出,其功能框图如图3.8所示。 MAX1968主要由两个开关型同步降压稳压器组成,100%的占空比实现了低压差操作。在两个同步降压稳压器输出端配有高效MOSFET,由LX1、LX2引出,经过LC滤波驱动TEC。两个稳压器同时工作产生一个差动电压,直接控制TEC电流,实现TEC电流的双向控制,双极性工作避免了线性驱动所存在的“死区”问题,以及轻载电流时的非线性问题,能够实现无“死区”温度控制。外部控制电路的输出电压加在TEC电流控制输入端CTL1,直接设置TEC电流。一般TEC+接OS2,TEC-接OS1,OS1和OS2不是功率输出,而是用来感测通过TEC的电流,流过TEC的电流由式(3-1)确定: (3-1) 式中:RSENSE为TEC电流的感应电阻;VCTL1为外部控制电路的输出电压;VREF为参考电压(1.5V)。 假设正向电流为加热,则VCTL1>1.5V为加热,电流的流向从OS2到OS1,OS1、OS2、CS这3个引脚的电压关系为:VOS2>VOS1>VCS,反之则制冷。 开关稳压器是按周期运作的,以把功率传输到一个输出端,这种转换方法会在基频及谐波上产生很大的噪声分量,但是在MAX1968中是相位转换并提供互补同相工作周期,所以纹波波形大大减小,抑制了纹波电流和电气噪声进入TEC模块,进而影响LD工作性能。FREQ用来设置内部振荡器的开关频率,当FREQ接地频率为500kHz,FREQ接电源频率为1MHz。 MAX1968片内带有的MOSFET驱动器,减少了外部元件,芯片工作在较高的开关频率下,可以用更小的电感和电容,从而减少PCB(印制电路板)的面积、降低成本。 为了确保电流控制环的稳定,在COMP端接一补偿电容,此电容的值可由式(3-2)确定: 式中:f为电流控制环的频率,一般不大于LX1端的滤波谐振 (3-2) 频率;gm为环的跨导,典型值为100μA/V;RTEC为TEC阻抗。 将SHDN引脚置低,MAX1968还可以工作在省电模式。 芯片还提供了一系列的保护和监测功能: 1.限制流过TEC最大的正向和反向电流,而且是独立控制的。可根据使用的TEC在REF和GND之间通过分压电阻,在引脚MAXIP和MAXIN端设置。 2.ITEC为状态输出,用以监测TEC的电流,是通过CS与OS1之间的电流感应电阻取样,此输出电压与流过TEC的电流成正比。 3.TEC电压限制功能,MAX1968为TEC提供了最大压差控制,在REF和GND之间通过分压电阻设置VMAX,VMAX在0~1.5V内变化,而通过TEC的电压为VMAX的4倍。 4.模拟控制信号直接精确地设置TEC电流,消除了TEC中的浪涌电流。 3.4.2 热电制冷片TEC介绍 热电制冷片也叫热电半导体制冷组件,帕尔贴等。因为制冷片分为两面,一面吸热,一面散热,只是起到导热作用,本身不会产生冷,所以又叫致冷片。热电制冷片原理:半导体热电偶由N型半导体和P型半导体组成。任何物质都是由原子组成,原子是由原子核和电子组成。电子以高速度绕原子核转动,受到原子核吸引,因为受到一定的限制,所以电子只能在有限的轨道上运转,不能任意离开,而各层轨道上的电子具有不同的能量(电子势能)。离原子核最远轨道上的电子,经常可以脱离原子核吸引,而在原子之间运动,叫导体。如果电子不能脱离轨道形成自由电子,故不能参加导电,叫绝缘体。半导体导电能力介于导体与绝缘体之间,叫半导体。半导体重要的特性是在一定数量的某种杂质渗入半导体之后,不但能大大加大导电能力,而且可以根据掺入杂质的种类和数量制造出不同性质、不同用途的半导体。将一种杂质掺入半导体后,会放出自由电子,这种半导体称为N型半导体。N型材料有多余的电子,有负温差电势。P型半导体,是靠“空穴”来导电。在外电场作用下“空穴”流动方向和电子流动方向相反,即“空穴”由正板流向负极,这是P型半导体原理。P型材料电子不足,有正温差电势;当电子从P型穿过结点至N型时,结点的温度降低,其能量必然增加,而且增加的能量相当于结点所消耗的能量。相反,当电子从N型流至P型材料时,结点的温度就会升高。 直接接触的热电偶电路在实际应用中是不可用的,实验证明,在温差电路中引入第三种材料(铜连接片和导线)不会改变电路的特性。这样,半导体元件可以用各种不同的连接方法来满足使用者的要求。把一个P型半导体元件和一个N型半导体元件联结成一对热电偶,接上直流电源后,在接头处就会产生温差和热量的转移。在上面的接头处,电流方向是从N至P,温度下降并且吸热,这就是冷端;而在下面的一个接头处,电流方向是从P至N,温度上升并且放热,因此是热端。 半导体温差热电片的应用范围有制冷、加热、发电,制冷和加热应用比较普遍,有以下几个方面: 1.军事方面:导弹、雷达、潜艇等方面的红外线探测、导行系统。 2.医疗方面:冷力、冷合、白内障摘除片、血液分析仪等。 3.实验室装置方面:冷阱、冷箱、冷槽、电子低温测试装置、各种恒温、高低温实验仪片。 4.专用装置方面:石油产品低温测试仪、生化产品低温测试仪、细菌培养箱、恒温显影槽、电脑等。 5.日常生活方面:空调、冷热两用箱、饮水机、电子信箱等。此外,还有其它方面的应用等等。 3.4.3 驱动电路设计 根据MAX1968改变电流方向的原理,假如正向加热,当CTL1的电压比REF端(通常为1.5V)的电压高时,电流从OS2流向OS1,此时加热;当CTL1的电压比REF端电压低时,电流从OS1流向OS2,此时制冷。所以用分压电阻R9使得REF端的电压为1.5V。而CTL1端口的电平为高电平是刚好加热,为低电平时刚好制冷,使控制变得方便。当MAX1968不工作时,在SHDN端口输入低电平,则MAX1968处于省电模式。TA与TB则是热电制冷片TEC1-12705的接线端口。在PCB中留两个焊盘即可。图3.9为TEC1-12705的驱动电路。 图3.9 TEC1-12705驱动电路 3.5 按键电路介绍 当有按键按下时就要立刻触发主控制器的外部中断,所以用一个与门电路,只要有一个键按下,四个输入端口A2,B2,C2,D2中的一个就会被拉到低电平,Y2就输出低电平,就会使主控制器外部中断触发,转向中断程序,四个电阻R3,R4,R5,R6 起上拉作用,同时也限制了灌电流。而A1,B1,C1,D1,Y1 为令一组与门电路。这里只用了一组。图3.10为按键电路明细图。 图3.10 按键及中断电路图 3.6 复位与时钟电路 单片机为高电平复位,而晶振通常为12M,电容为30PF。图3.11为单片机的复位电路和图3.12为单片机的时钟电路。 图3.11 S52复位电路 图3.12 S52时钟电路 3.7 LED显示电路 显示采用四一体的共阴数码管,由于P0口的驱动能力有限,需外接上拉电阻,因而加入排阻U3,470Ω,当P0口输出显示值时,通过A,B,C,D四个管脚是否为低电平来选择要点亮的数码管。电阻采用470Ω,以增加数码管的亮度。A管脚接单片机的P1.0口,B管脚接单片机的P1.1口,C接P1.2,D接P1.3具体电路如图3.13所示: 图3.13 数码显示电路 3.8 警告及指示电路 当为按键输入的温度值不在0°C~40°C时,警告声音长鸣,警告红灯提示则闪亮,以提示用户重新输入温度值。如在此范围则绿灯亮起,正常提示。由于单片机的I/O口能够驱动发光二极管,所以只需加一个限流电阻即可。而蜂鸣器则效果非常差,要把电流放大效果才好,所以选用PNP型9012来放大电流。图3.14为它们的具体电路图: 图3.14 警告及提示电路 3.9 电机驱动电路 由于电机在启动是有个大电流,为了不对主控制电路产生干扰,要进行隔离,这里采用TLP521-2光耦芯片。电机驱动则采用专门的电机驱动芯片L298。图3.15为具体的电路图。 图3.15 电机驱动电路 3.10 整体电路图 下面图3.16和3.17组成整个温度控制系统的总体电路图。 图3.16 系统部分电路图1 图3.17 系统部分电路图2 4 系统软件设计 4.1 系统主程序流程图 主程序主要完成端口的初始化和调用和实现子程序功能,在无外部中断时,实时监控室内温度并显示。把按键作为外部中断0,能迅速读出按键值。当有按键中断时,中断迅速读取按键值,再执行按键控制程序结束主程序。主程序流程图如图4.1所示: 图4.1 系统主程序流程图 4.2 按键控制服务程序流程图 当有按键按下时,由中断服务程序读出按键值,然后通过按键值处理后,判断其是否在允许的范围内,若不是则给出提示以告知用户重新输入温度值,该操作不被执行。若在允许范围内时,则继续执行服务程序,调用相应子程序,实现既定功能,然后返回主程序。如流程图4.2所示: 图4.2 按键控制服务流程图 4.3 热电制冷程序流程图 当设定的温度值等于室温时,P1.4输出低电平,MAX1968置闲,制冷片不工作。当设定值不等于室温又在允许范围时,则P1.4为高电平,P1.5为高电平或低电平,MAX1968驱动TEC加热或制冷直到设定值与室温相同为止。在此过程中,不断测温,数码管动态显示每次加热或制冷后的室内温度。程序流程图如图4.3所示: 图4.3 热电制冷程序流程图 总结 本设计是基于AT89S52单片机基础上的控制方案。通过DS1624测温并送到单片机处理后,由数码管实时显示当前温度;根据用户需求在允许范围(本设计设定为0°C~40°C,可以修改范围)内调整室内温度,并且以绿灯常亮提示用户设置温度成功,当用户设置的温度值不在允许范围时,则会以红灯闪烁和警告声提示用户设置越限,应马上重新设置温度值;该系统为闭环控制,工作稳定,稳定性高,控制精度高(误差通常在0.1°C左右)。而且充分利用了单片机的资源,如定时器,中断。 软件方面,采用C语言编程。由于C语言简练、紧凑,使用方便、灵活,运算符丰富,数据类型也丰富,结构化的控制语句,编程显得顺手些。而且采用模块化编程,思路清晰,使程序简洁、可移植性强。通用性强。 但是本论文也存在一些不足之处,改变温度时调节时间比较长,I/O口占用多,同时,我选用的有些元器件也不是当前最先进的电子器件;若在温度采集方面选用模拟输出,再通过A/D转换送入主控制器,再采用模糊PID控制,则效果或许会更好,显示与键盘用SPI通信的专用芯片ZLG7289扩展,从而减少主控制器的负担,可以使用I/O口少但功能强大的主控制器;采用基于ARM的LD温度控制,效果也佳。室内温度控制系统设计是一个开放性的设计,在不同的应用场合不同要求下选用不同的控制方案,不同的器件,得到想要的效果。 致谢 在本次设计中,首先诚挚地感谢我的指导老师孙莉莉老师对我的指导与帮助。在刚开始时,她建议我在那些硬件方面可以再多考虑考虑,有没有可以改善的地方等等,经过不断收集资料,发现可以提高温度传感器的测量精度,而且温度转换时间也明显比以前短,系统的可靠性也提高。老师非常关心并督促毕业设计过程与进度,当我遇到的问题时,帮我整理思路、指出不足的地方,让我的思维变得更严谨。而且多次当面指导,指出论文中存在的不足之处;她丰富的知识﹑严谨的治学态度和全面的指导,给我巨大的鼓舞,轻轻松松就把毕业设计完成了。 其次,诚挚地感谢雷永锋老师教会我使用Visio2003画图,所以设计中所有的图都是自己画的,没有从资料上截图。而且指出了学生在设计中常犯的错误,给我的设计完善指明了方向。 再次,诚挚地感谢所有帮助过我的老师,是你们丰富了我的知识,拓宽了我的认识,指引我不断完善自己、提高自己。 最后,诚挚地感谢所有帮助过我的同学,是你们带给我友情,关心和支持,让我的大学生活更加丰富多彩。 再说一次谢谢你们。 参考文献 [1] 张毅坤等编著.单片微型计算机原理及应用[M].西安电子科技大学出版社, 2007.7 [2] 杨素行主编.模拟电子技术基础简明[M].高等教育出版社, 2006.5 [3] 胡寿松.自动控制原理简明教程[M].科学出版社, 2008 [4] 王兆安, 黄俊主编.电力电子技术[M].机械工程出版社, 2000 [5] 刘海成主编.AVR单片机原理及测控工程应用[M].北京航空航天大学出版社, 2008 [6] 张广溢, 郭前岗.电机学[M].重庆大学出版社, 2006.7 [7] 汤竞南, 沈国琴编著.51单片机C语言开发与实例[M].人民邮电出版社, 2008.2 [8] 赵建领, 薛园园等编著.零基础学单片机C语言程序设计[M].机械工业出版社, 2009.4 [9] 欧伟明, 何静等编著.单片机原理与应用系统设计[M].电子工业出版社, 2009.7 [10] 王幸之, 钟爱琴等编著.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社, 2004.5 [11] 朱定华.单片机原理与接口技术[M].电子工业出版社, 2001.4. [12] 沙占友, 王彦朋, 孟志永.单片机外围电路设计[M].电子工业出版社, 2003. 附件 程序清单 #include #include unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; //数码管码段 unsigned char code dotcode[32]={0,3,6,9,12,16,19,22, 25,28,31,34,38,41,44,48, 50,53,56,59,63,66,69,72, 75,78,81,84,88,91,94,97}; //小数位 sbit P1_4=P1^4; //1968状态控制位 sbit P1_5=P1^5; //1968热电制冷控制位 sbit SDA=P1^6; //数据传送位 sbit SCL=P1^7; //时钟控制位 sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_3=P3^3; //绿灯提示控制位 sbit P3_5=P3^5; sbit P3_6=P3^6; bit secondflag=0; unsigned char displaybit; unsigned char displaybuffer[5]={0,1,2,3,4}; unsigned char temperdata[2]; unsigned char T_data[4]; unsigned char average_T[2]; unsigned char secondcount=0; unsigned char key; unsigned char s_key[2]; unsigned char y_key; unsigned char x; unsigned char s; unsigned int result; unsigned int k; unsigned int ks; unsigned int m; unsigned int n; void delay(void); void delay10ms(void); void delayts(unsigned char t); void i_start(void); void i_stop(void); void i_init(void); void i_ack(void); bit i_clock(void); bit i_send(unsigned char i_data); unsigned char i_receive(void); bit start_temperature_T(unsigned char y); bit read_temperature_T(unsigned char *p,unsigned char y); void temperconvert_T(unsigned char y); void colect_dealt_T(void); void show_T(unsigned char *p); unsigned int key_scan(void); void temper_change_T(unsigned char y); void delay(void) //延时 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } void delay10ms(void) //延时10ms { unsigned int i; for(i=0;i<1000;i++) { delay(); } } void delayts(unsigned char t) //延时ts {unsigned char j,s; for(s=0;s>3; temperconvert_T(0x92); T_data[3]=temperdata[1]; result=temperdata[0]; T_data[2]=result>>3; if((T_data[1]+T_data[3])%2) //求温度平均值 {average_T[0]=16+(T_data[0]+T_data[2])/2; } else {average_T[0]=(T_data[0]+T_data[2])/2; } average_T[1]=(T_data[1]+T_data[3])/2; m= average_T[1]; for(x=0;x<5;x++) {displaybuffer[x]=16; } x=2; result=average_T[1]; while(result/10) //数组依次存放温度低位到高位数值 {displaybuffer[x]=result%10; result=result/10; x++; } displaybuffer[x]=result; result=average_T[0]; displaybuffer[0]=(dotcode[result])%10; displaybuffer[1]=(dotcode[result])/10; } void show_T(unsigned char *p) //数码显示 { unsigned char i; for(i=3;i>=0;i--) {if(i==2) {P0=(displaycode[*(p+i)])|0x80;} //显示小数点 else {P0=displaycode[*(p+i)];} if(i==3) {displaybit=0xfe; P1=(P1&displaybit); delay(); } else {displaybit=_crol_(displaybit,1); //循环左移点亮位 if(i==2) {P1=(P1|0x01);} else if(i==1) {P1=(P1|0x02);} else {P1=(P1|0x04);} P1=(P1&displaybit); delay(); } } P1=(P1|0x0f); displaybit=(displaybit|0x0f); } unsigned int key_scan(void) //读按键值 { EX0=0; P2=0xF1; k=P2; if(k!=0xF1) { delay(); ks=P2; if(k==ks) {k=0xFD; do { P2=k; if(k!=P2) {switch(P2) {case 0xed:{return 0;break;} case 0xdd:{return 1;break;} case 0xbd:{return 2;break;} case 0x7d:{return 3;break;} case 0xeb:{return 4;break;} case 0xdb:{return 5;break;} case 0xbb:{return 6;break;} case 0x7b:{return 7;break;} case 0xe7:{return 8;break;} case 0xd7:{return 9;break;} case 0xb7:{return (key+1);break;} case 0x77:{return (key-1);break;} } } k=_crol_(k,1); //循环左移扫描 }while(k!=0xEF); } } } void temper_change_T(unsigned char y) //热电制冷 { unsigned char i; for(i=0;i<30;i++) {while(y!=m) {P1_4=1; //制冷片工作 if((y-m)>0) //设定值比室温高 {P1_5=1;n=y-m; if(n==1) {if(average_T[1]>28) {delay10ms();P1_4=0;break;}//非常接近设定值误差0.1 °C else {delayts(1);} } else {delayts(n);} } else {P1_5=0; n=m-y; //设定值比室温低 if(n==1) {delayts(1);} else {delayts(n);} } colect_dealt_T(); show_T(displaybuffer); } while(y==m) { if(average_T[1]<4) {P1_5=0;delay10ms(); //非常接近设定值误差0.1 °C P1_4=0;break; } else {P1_4=1;P1_5=0;delayts(1);} colect_dealt_T(); show_T(displaybuffer); } } } void main(void) { P0=0x00; P1=0xef; P2=0xf1; P3=0xa4; TMOD=0x01; //定时器设定为工作方式1 IT0=0; //低电平触发外部中断 ET0=1; EX0=1; EA=1; colect_dealt_T(); //温度值采集与处理 show_T(displaybuffer); //显示当前温度值 s=0; P3_3=1; s_key[0]= 25/10; s_key[1]= 25%10; while(1) {if(s==0) //没有键输入 { colect_dealt_T(); show_T(displaybuffer); temper_change_T(key); } else //有键输入 {delayts(2); //等待第二个按键输入 if(s==2) {y_key=10*s_key[0]+s_key[1];} //有第二个按键输入 else {y_key=s_key[0];} s=0; if(0
/
本文档为【基于单片机的室温控制系统的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索