基于单片机的棚内温度控制系统的设计和仿真.doc_第1页
基于单片机的棚内温度控制系统的设计和仿真.doc_第2页
基于单片机的棚内温度控制系统的设计和仿真.doc_第3页
基于单片机的棚内温度控制系统的设计和仿真.doc_第4页
基于单片机的棚内温度控制系统的设计和仿真.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1 基基于于单单片片机机的的棚棚内内温温度度控控制制系系统统的的设设计计与与仿仿真真 独独 创创 性性 声声 明明 本人郑重声明:所呈交的毕业论文(设计)是本人在指导老师指导下取得的研究成 果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或 撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中 作了明确的说明并表示了谢意。 签名: 年 月 日 授授 权权 声声 明明 本人完全了解许昌学院有关保留、使用本科生毕业论文(设计)的规定,即:有权 保留并向国家有关部门或机构送交毕业论文(设计)的复印件和磁盘,允许毕业论文 (设计)被查阅和借阅。本人授权许昌学院可以将毕业论文(设计)的全部或部分内容 编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设 2 计) 。 本人论文(设计)中有原创性数据需要保密的部分为: 签名: 年 月 日 指导教师签名: 年 月 日 基基于于单单片片机机的的棚棚内内温温度度控控制制系系统统的的设设计计与与仿仿真真 摘摘 要要 植物的生长与温度息息相关,对于棚内的植物来说,最重要的一个管理因素是温度 控制。温度太高或太低,则停止生长或者生长速度减慢,所以要将温度始终控制在适合 植物生长的范围内。如果仅靠人工控制既耗人力,又容易发生差错。该系统以 at89c51 单片机为基础,通过对系统的硬件部分和软件部分的设计达到检测、报警和自动控温的 要求。硬件部分包括温度传感器模块、输入模块、显示模块、报警模块和控温模块的设 计;软件部分主要根据系统的设计思想设计出了系统的程序流程图,并通过 c 语言实现 控制。通过实践证明,系统性能优良、操作方便,实现了棚内温度的显示、调节和报警 功能。 关键词: at89c51;温度传感器;显示器;控制与报警 2 the design of temperature control system based on mcu abstract the growth of plants is closely related to temperature. one of the most important management factors is the temperature control. if temperature is too high or too low, the plants will grow slowly. even worse they will stop growing. so it will be necessary to control temperature in suitable temperature range. it would be very easy to make mistakes, if we control the temperature only via manual labour. the system combines system hardware with software design basing on at89c51 and it can achieve to many functions, such as detecting, alarming and controlling temperature automatically. the hardware part includes the temperature sensor module, input module, display module, alarm module and temperature control module design. 2 we will design the system procedure mainly based on the systems design ideaand the system will be controlled based the c language. practice proves that the system performs excellently and is easy to operate, and it can display the temperature, adjust the temperature and give an alarm. key words:at89c51; temperature sensors; display; control and alarm 目目 录录 1 绪论.1 1.1 本设计的背景和意义.1 1.2 国内外研究状况.2 1.3 本设计的主要内容.2 2 系统设计方案.3 2.1 本系统的设计要求.3 2.2 各模块电路的方案选择及论证.3 2.3 本设计系统的最终方案.5 2.4 本设计的工作原理.5 3 棚内温度控制系统的硬件电路设计.7 3.1 at89c51 单片机7 3.2 振荡电路和复位电路.7 3.3 温度采集电路8 2 3.4 键盘电路.8 3.5 显示电路9 3.6 升温电路和降温电路10 3.7 报警电路11 3.8 系统总体电路12 4 软件设计与仿真.13 4.1 设计思想13 4.2 程序流程图13 4.3 程序调试16 4.4 温度超过设定上限的仿真.17 4.5 温度低于设定下限的仿真.17 5 总结.19 参考文献.20 附 录.21 致 谢.28 基于单片机的棚内温度控制系统的设计与仿真 1 绪论 1.1 本设计的背景和意义 目前,在我国北方地区,农村大部分温室大棚仍就采用手动调控,这种调控既费时 又费力,而且产量不高还容易出现差错。随着时代的发展,人们对温室大棚内种植作物 种类要求有所增加,由单一的植物慢慢地向多种植物发展,对温室大棚内的温度控制也 有了的新的要求。仅仅通过手动调控棚内的温度情况已经渐渐地无法满足人们的需求, 因此需要设计一种系统,来替代手动调控,以满足人们对生产的要求。我国当今常见的 智能温室控制系统大多采用的是工控机或者 plc,费用较高,大部分的农村用户无法承 受的起。因此,在设计系统的过程中,有对使用者的经济情况进行考虑,尽可能降低设 计中的各个部分的成本,这对温室大棚的发展具有很高的现实意义。 蔬菜的生长与温度息息相关,对于蔬菜大棚来说,最重要的一个管理因素是温度控 制。温度太低,蔬菜就会被冻死或着停止生长,所以要将温度始终控制在适合蔬菜生长 的范围内。如果仅靠人工控制既费时费力,又容易发生差错。 2 因此,本设计设计的大棚温度自动控制系统,就是利用价格便宜的一般电子器件设 计的一个参数精度高 ,控制操作方便 ,性价比高的,可应用于农村温室大棚测控系统。 本设计可以根据棚内植物生长的需要,人为的调节温度的范围,自动地采集大棚内的温 度变化情况,并通过单片机驱动控制电路,控制升降温设备对棚内的温度进行调控,是 棚内的温度保持在设定的范围内,以便适应大棚内蔬菜生长的需要。 1.2 国内外研究状况 1.2.1 国外棚内温度测控技术研究状况 西方国家在现代温室测控技术上起步比较早,欧美等国家在 30 年代就相继建立了人 工气候室,温室测控技术至今已有几十年的发展历程。初期主要是使用仪表对温室中的 光照、温度和湿度等参数进行测量,再用手动或电动执行幕帘、通风等调节机构进行简 单的控制。随着传感技术、仪表及执行器件技术的进步,温湿度控制逐步发展为对温度、 湿度、光照等温室内环境参数分别进行的自动控制。 随着智能控制理论的发展和计算机技术的进步,温室作为设施农业的重要组成部分 之一,其控制水平和管理技术得以不断的提高,在世界各地都得到了迅速的发展。二十 世纪 70 年代,随着电子技术的迅猛发展、微机日新月异的进步和硬件元件价格的大幅度 下降,农业对温室温湿度的测控要求进一步提高,之后,以微型计算机为核心的温室综 合环境控制系统在欧美等发达地区得到了广泛的应用,并逐步迈入网络化和智能化阶段。 目前,国外现代化温室的内部设施已经比较完备,并形成了一定的标准。温室内的 各环境因子大多由计算机集中控制,检测传感器也较为齐全,温室内的温度和湿度由传 感器的检测基本上可以实现对各个执行机构的自动控制,如以天窗通风、湿帘与风扇配 套降温系统以及以热水锅炉、热风机等组成的加温系统。计算机对系统的控制已经实现 基于环境模型上的监督控制,以及基于专家系统的人工智能控制,而不仅仅是简单、独 立和静态的直接数字控制,一些国家在实现自动化基础上,正一步步向着完全自动化、 无人化的方向发展。 1.2.2 国内棚内温度测控技术研究状况 我国在温度控制技术方面的研究起步较晚,大概起于 1980 年左右。我国的研究人员 在探究发达国家温度控制技术的基础上,慢慢地学会了使用微机控制温室大棚内的温度、 二氧化碳等状况,但是这项技术只适用于控制温室大棚内的单个环境因素。我国在温度 调控设施方面应用,正一步步地消化吸收国外的技术、从简单的应用方面向实用方面发 展、并向综合性应用方面过渡和发展。从技术方面,采用单片机控制的单回路设计较多, 2 并且大部分还是针对单个参数进行控制,还没有真正意义上的多参数综合控制系统,与 发达国家相比,还有较大差距。我国在温度调控方面的现状,正在试着向工厂化方向发 展,但是有很大的困难。在生产过程中依旧有许多问题没有解决,一方面是设备的配套 方面,存在着装备配套能力差,环境因素控制能力落后,软件和硬件资源兼容性差等缺 点。 目前,国内有些厂家仍就采用传统继电器调温电路,这种电路简单并且实用 ,但是 由于继电器动作频繁,可能会因触点不良而影响正常工作。在控制领域国内大量采用传 统的 pid 控制方式,但 pid 控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不 便仍是普遍存在的问题。 1.2.3 棚内温度环境控制技术的发展趋势 随着计算机技术、传感器技术和自动控制技术的不断发展,温室大棚内的环境控制 系统的应用将由简单的以数据采集处理和检测为主,逐步转向以知识处理和应用为主。 因此软件系统的研究和开发将不断深入完善,其中以专家系统为主的智能管理系统已取 得了不少研究成果,而且应用前景非常广阔。近几年,神经网络、遗传算法、模糊控制 等人工智能技术在温室栽培中得到了不同程度的发展和应用。由此可见,温室环境测控 技术必将向着智能化、网络化、分布式发展。 1.3 本设计的主要内容 本系统用 atmel 公司生产的 at89c51 单片机作为主控机,通过对棚内温度的分析, 实现数据处理、数据传输、外设控制以及安全报警等功能。详细地说,由种植人员按植 物生长所需温度范围进行设定,通过温度传感器 ds18b20 对温室内的温度进行测量,然 后经 at89c51 单片机对采集到的数据进行分析和处理,用 lcd1602 显示出当前环境的 温度状况,并根据温度状况启动升温装置或降温装置,使温室内的温度保持在设定的范 围内。 3 2 系统设计方案 本设计是一个大棚温度自动控制系统。系统温度可以在一定范围内由人工设定,并 能在环境温度降低时实现自动通风降温,在环境温度升高时实现自动加温,以保持在设 定的温度范围内。 2.1 本系统的设计要求 本设计是基于 at89c51 单片机的棚内温度控制器,用于温度的自动控制。具体要求 如下: (1)棚内的温度控制在 15-28之间,并且可以通过人工调节其上下限。 (2)控制三相电阻炉作为加热设备。 (3)采用单相通风机作为通风散热设备。 (4)易于操作,方便人机对话。 2.2 各模块电路的方案选择及论证 2.2.1 控制模块的选择 控制模块的选择是根据设计的内容而定的,并不是用什么单片机都可以。一方面要 考虑选用的单片机能否在不加外扩的情况下达到要实现的功能。比如:单片机的存储器 空间的大小、单片机的 i/o 口数等。另一方面还要考虑单片机的性价比,是否容易买到 等一些外部因素。 由于实现该系统功能的程序不会超过 4k,而 at89c51单片机内部有 4k 的 flash 程序存储器和 2k 的数据存储器,因而不需要外扩程序存储器和数据存储器。并且该型 号单片机程序下载方便、价格便宜的优点,因而被广泛的应用。 2.2.2 键盘模块的选择 选择一:采用 4*4 矩阵型按键,在键盘中按键数量较多时,为了减少 i/o 口的占用, 通常将按键排列成矩阵形式。矩阵按键对应独立按键,可以节约数据线,但需要特定的 键盘扫描程序,占用空间较大。通常在按键大于 6 个的时候是用矩阵式按键。 选择二:采用独立按键,接线简单,易于理解,不需要特定的键盘扫描程序,占用 空间比较少。 在本设计中用到了 4 个按键,所以选用独立按键比较合适。 2.2.3 温度测量模块的选择 选择一:利用热电阻传感器作为感温元件,热电阻随温度变化而变化,用仪表测量 4 出热电阻的阻值变化,从而得到与电阻值相应的温度值。最常用的是铂电阻传感器,铂 电阻在氧化介质中,甚至在高温的条件下其物理,化学性质不变。由铂电阻阻值的变化 经小信号变送器 xtr101 将铂电阻随温度变化的转换为 420ma 线性变化电路,再将电 流信号转化为电压信号,送到 a/d 转换器,即将模拟信号转换为数字信号。电路结构复 杂,误差较大。 选择二:采用数字温度传感器 ds18b20。采用数字温度传感器 ds18b20,测温范围- 55125,其内部集成了 a/d 转换器,使得电路结构更加简单,而且减少了温度测量 转换时的精度损失,使得测量温度更加精确。数字温度传感器 ds18b20 只用一个引脚即 可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于 ds18b20 芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字 温度传感器 ds18b20 做成探头,探入到狭小的地方,增加了实用性。 ds18b20 与传统的热敏电阻相比,它可以直接测量当前环境的温度,并且可按照自 己的需求采用编程实现数字读取。另外从数字温度传感器 ds18b20 读出的数据或写入的 数据只要一根线就可以完成,因而使用 ds18b20 可使设计的硬件电路结构更加简单,可 靠性更高。 所以此设计中选用 ds18b20 温度传感器,既节省了 a/d 转换器,又节省了 i/o 输出 口,同时误差小,测量准确。 2.2.4 显示电路模块的选择 选择一:采用 12864 液晶模块显示测得的数据。该显示模块可以显示较多组的数据, 字体较大,读数清晰,但 12864 液晶模块价格昂贵,接线复杂。 选择二:采用 lm016l 液晶模块显示所测数据。lm016l 液晶接线简单方便,也能满 足显示需求,而且价格远低于 12864 液晶。 综上所述,显示模块选择选择二。 2.2.5 升温降温模块的选择 根据题目,可以使用电热炉进行加热,控制电热炉的功率即可以控制加热的速度。 当温度过高时,关掉电热炉打开通风机进行降温处理。当需要加热时开启电炉关闭通风 机。由于电热炉和通风机的功率较大,考虑到简化电路的设计,我们直接采用 220v 电源。 对升温降温模块有以下两种选择: 选择一:采用继电器控制。使用继电器可以很容易实现地通过较高的电压和电流, 在正常条件下,工作十分可靠。继电器无需外加光耦,自身即可实现电气隔离。这种电 5 路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将 造成影响。 选择二:应用了光电耦合器,光电耦合器是以光为媒介传输电信号的一种电一光一 电转换器件。它由发光源和受光器两部分组成。把发光源和受光器组装在同一密闭的壳 体内,彼此间用透明绝缘体隔离。发光源的引脚为输入端,受光器的引脚为输出端。其 工作时,在光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小, 此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引 出,这样就可以实现电一光一电的转换,从而把输入和输出的独立开来。由于光电耦合 器把输入和输出相互隔离,使传输的电信号只能单向传导,因而可以很好实现电路的抗 干扰功能和绝缘功能。另外,为了达到高强的共模抑制功能,在光电耦合器的输入端加 入了电流型的低阻元件。所以,在使用到长线传输信息的系统中把它作为一种终端的隔 离元件,可以有效的提高系统的信噪比。在计算机用到数字通信部分和实时控制部分时, 将其作为一种信号隔离的接口部件,可以有效地提高计算机在工作时的可靠性 通过比较,我们选择选择二。 2.2.6 报警模块的选择 按照设计要求,当温度低于下限或高于上限时,应具有报警功能。这样就可以用一 只蜂鸣器作为三极管 vt1 的集电极负载,当 vt1 导通时,蜂鸣器发出鸣叫声;vt1 截止时,蜂鸣器不发声。 2.3 本设计系统的最终方案 根据以上分析,结合器件和设备等因素,确定如下方案: 1. 采用 at89c51 单片机作为控制器,分别对温度采集、lcd 显示、温度设定、升 温降温等控制。 2. 温度测量模块采用数字温度传感器 ds18b20。 3. 电热炉和通风机控制采用光耦合器控制。 4. 显示用 lcd1602 显示实时温度值。 2.4 本设计的工作原理 棚内温度控制系统能完成数据采集、数据处理、数据显示、参数设定和过限报警等 多种功能,由数据采集部分、数据处理部分、显示部分、过限报警部分和温度调控部分 等 5 个大的部分组成。该系统具有实时采集(检测温室内的温度) 、实时处理(使所检测 的温度值与设定值进行比较分析,决定下一步操作) 、实时报警(根据处理的结果发出控 6 制指令,驱动或不驱动报警器工作)和温度调控(根据处理的结果发出控制指令,驱动 或不驱动调温设备工作)的功能。主要硬件包括温度传感器、单片机、键盘、lcd 显示 器和报警器、调温设备等。其原理结构图如下图 2-1 所示。 at 89c51 单片机 显示器模块 降温模块 升温模块 报警模块 复位和晶振模块 温度采集模块 上下限设定模块 图 2-1 温度自动控制主要组成部分 由图 2-1 所示,本系统的核心部分是 at89c51,此芯片是该电路的枢纽。由它先控 制着温度传感器对温度采集,将采集到的温度转换数字,采集到的温度由 lcd 液晶显示 屏显示。再将采集到的温度与人工设置的哪个范围比较,从而控制继电器动作,继而控 制加热设备和通风散热设备作出相应的动作,达到对棚内温度的自动控制。 7 3 棚内温度控制系统的硬件电路设计 本系统的硬件电路设计主要包括单片机 at89c51、振荡和复位电路、温度采集电路、 键盘电路、显示电路,升降温电路与报警电路,下面将一一介绍。 3.1 at89c51 单片机 本系统采用 at89c51 单片机,它是美国 atmel 公司生产的低电压、高性能 cmos8 位单片机,片内含 4kb 的 eprom 和 128b 的 ram,器件采用 atmel 公司的 高密度、非易失性存储技术生产,兼容标准 mcs-51 指令系统,片内置通用 8 位 cpu 和 flash 存储单元,功能强大,可灵活应用于多种控制领域,为很多嵌入式控制系统提供 了一种灵活性高且价廉的方案。 3.2 振荡电路和复位电路 at89c51 的 xtal1 和 xtal2 引脚分别为单片机内反相放大器的输入和输出端,其 频率上限为 23mhz。这个内部反相器与外部元件组成皮尔斯振荡器,c1、c2 是 30pf 的 电容,x1 没有严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡工作的 稳定性、起振的难易程度,通常选择在 1030pf 之间。 在任何情况下,振荡器都会始终驱动内部时钟发生器向主机提供时钟信号。时钟发 生器的输入是一个二分频触发器,对外部的振荡信号脉冲没有特殊要求,但必须要保证 高低电平的最小宽度。在外接晶振 11.0592mhz 时,一个机器周期为 1 微秒,一个振荡周 期为 1/12 微秒。 简单的复位电路包括上电复位和手动复位两种,无论哪一种复位电路都必须要保证 在 rst 引脚上供应 10ms 以上稳定的高电平。复位电路包括芯片内和芯片外两部分,外 部电路产生的复位信号送至斯密特触发器,再经片内复位电路在每个机器周期的 s5p2 时 刻对斯密特触发器的输出进行采样,之后得到内部复位操作需要的信号。本设计中的复 位电路,由 c3、r5、r6 和按键组成的电平复位,复位端经电阻与 vcc 电源接通。其连 接电路如图 3-1 所示。 8 图 3-1 振荡电路和复位电路 3.3 温度采集电路 温度采集电路采用美国 dallas 半导体公司生产的 ds18b20 型单线智能温度传感 器, 属于新一代适配微处理器的智能传感器。该传感器适应电压范围宽,可实现高精度测 温,检测速度快,测量结果直接以数字温度信号输出,具有极强的抗干扰纠错能力、传 输距离长、分辨率强等优点。 ds18b20 在使用时,只需将其信号线与单片机的 1 位 i/o 线相连,且单片机的 1 位 i/o 线可挂多个 ds18b20,可以实现单点或多点温度检测。ds18b20 的 i/o 口属于漏极开 路输出,外接上拉电阻后常态下呈高电平。该器件内含寄生电源,其供电方式可以选择 寄生电源供电,也可以选用外部电源供电。为方便起见,本系统采用外部电源供电。本 设计 ds18b20 的 dq 与单片机的 p2.7 端口连接,其连接电路如图 3-2 所示。 图 3-2 温度检测电路 3.4 键盘电路 基于单片机的温度控制系统工作时应具备以下功能:一、可以切换显示实时温度和 温度上下限的值。二、可以调节温度上下限。要实现这些功能,可以通过按键输入电路。 9 键盘结构可分为独立式键盘和行列式键盘(矩阵式)两类,由于本系统只采用 4 个 按键,因此可选用独立式按键。如图 3-3 所示,电路有四个按键组成,按键采用轻触开关。 图 3-3 键盘与 at89c51 单片机的连接 各个按键的功能为: s1:上限上调键(按此键则显示的报警上限增 1) s2:上限下调键(按此键则显示的报警上限减 1.) s3:下限上调键(按此键则显示的报警上限增 1.) s4:下限下调键(按此键则显示的报警上限减 1) 3.5 显示电路 显示电路部分采用 lcd 为液晶显示器,由于 lcd 的控制必须使用专用的驱动电路, 且 lcd 面板的接线需要采用特殊技巧,再加上 lcd 面板十分脆弱,因此一般不会单独 使用,而是将 lcd 面板、驱动与控制电路组合成 lcm 模块一起使用。该系统采用数字 式的 lm016l 显示器,显示器通过电压对其显示区域进行控制。其接口简单,操作方便。 显示器与单片机连接图如图 3-4 所示。 lm016l 引脚功能如表 3-1 所示。 表 3-1 lm016l 引脚功能表 引脚号功能或接法 1接地 2接 5v 正电源 3对比度调整端 4寄存器选择 5读写信号线,高电平时会进行读操作 6使能端,低电平时液晶模块会执行命令 71488 位双向数据线 10 图 3-4 显示器与 at89c51 的连接图 p0 口接上拉电阻时应注意的几点:p0 口作为 i/o 口输出的时候,输出低电平位 0,输出高电平为高阻态(并非 5v,相当于悬空状态) 。也就是说 p0 口不能真正的输出 高电平给所接的负载提供电流。 3.6 升温电路和降温电路 本设计采用了光电耦合器控制三极管,再进一步控制继电器线圈,这样做的好处: 信号单向传输,输入端与输出端完全实现了电气隔离,输出信号对输入端无影响,抗干 扰能力强,工作稳定,无触点,使用寿命长,传输效率高。如图所示 3-5 所示。 11 图 3-5 升降温电路 单片机的 p3.6 和 p3.7 口控制两个光电隔离的输出口,当单片机输出低电平是发光二 极管发光,三极管导通,然后驱动下一个三极管使之导通,线圈导通后继电器触点接通 从而接通通风机或电热炉。 3.7 报警电路 报警器是一种为了防止或预防某事件发生造成的后果,以声、光、气压等形式来提 醒或者警示操作人员采取某种措施的电子产品。随着当今科技的发展,机械式报警器正 逐渐被先进的电子报警器取代。报警器常应用于系统故障、交通运输、应急救灾、感应 检测等领域,与社会生产密不可分。在微型计算机控制系统中,为了安全生产,对一些 重要的参数,都会设置紧急状况报警系统,以提醒操作人员注意采取紧急措施。一般方 法是通过微型计算机处理采集到的数据,并与所设定参数上下限值进行比较,如果高于 上限值或低于下限值,系统将进行报警,否则会作为采样的正常值显示。 本设计采用蜂鸣音报警电路。连接图如图 3-6 所示,当输出高电平“1”时,晶体三 极管导通,压电蜂鸣器两端获得约+5v 电压而鸣叫;当输出低电平“0”时,三极管截止, 蜂鸣器停止发声。 图 3-6 三极管驱动的蜂鸣音报警电路 报警电路与单片机的 p1.7 口相连,当单片机输出一个低电平时,蜂鸣器就会发出报 警信号,说明温度已经超过规定的上下限值,外部输出设备应该启动进行相应的措施。 只用在人按下复位按钮或温度在允许的范围内报警电路就不会触动。 3.8 系统总体电路 系统的总体电路如图 3-7 所示,该电路图主要由 proteus7 软件辅助设计,proteus7 软 12 件有丰富的操作菜单和工具,内置元件库元件丰富,可以满足此论文的硬件设计要求。 由 ds18b20 温度传感器对信号进行采集,温度信号传输给 at89c51 单片机,在 lcd 显 示器上显示数值,如果超过所设定温度范围,蜂鸣器报警器、马达和灯泡将随光电耦合 器和继电器的动作,继而作出相应动作。 图 3-9 系统总体电路 13 4 软件设计与仿真 本设计运用单片机开发,除上述所说的必要的硬件以外,还需要运用软件。目前 keil 软件是 c51 系列单片机常用的开发软件,它提供了包括 c 编译器、宏汇编、连接器、库 管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (uvision)将这些部份组合在一起。 4.1 设计思想 该棚内温度控制系统的软件采用模块化方法设计,根据实际需要,单片机软件主程 序由若干模块组成,包括初始化模块、lcd 显示模块、数据发送/接受中断服务程序模块、 数据采集模块、数据处理模块。其中有些模块还包含有子模块,使用时下一级模块被高 一级模块调用,各部分既相互独立又相互联系。 主程序进行扫描,单片机根据扫描信息对传感器、显示器、报警器、马达等进行控 制。调用温度检测程序时,单片机首先对温度传感器 ds18b20 进行初始化,成功则读字 节,再写入字节,读取温度数据送到 lcd 显示。 4.2 程序流程图 主程序主要完成子程序的调用,主程序流程图如图 4-1 所示: 开始 初始化 温度采集程序 按键扫描 温度显示子程序 温度控制子程序 结束 图 4-1 系统软件流程图 14 4.2.1 温度采集子程序 温度采集就是把温度传感器采集到的数据传输给单片机,供显示器显示和温度控制 部分的判定。程序的流程图如图 4-2 所示。 开始 初始化ds18b20 向总线发复位脉冲 发读rom指令 读入数据并保存 发跳过rom指令 温度转换完毕 复位ds18b20 发跳过rom指令 读取温度值 结束 n y 图 4-2 温度采集子程序 4.2.2 按键扫描子程序 按键扫描就是通过按键调节设定温度的上下限的值和控制单片机的复位。按键 扫描程序如图 4-3 所示。 15 开始 功能键按下? s1按下s2按下s3按下s4按下s按下 上限值+1上限-1下限值+1下限值-1初始化 结束 y n 图 4-3 按键扫描子程序 4.2.3 温度控制子程序 温度控制就是通过采集到的温度预设定的温度比较,当温度高于设定的温度上限时, 并通过光电耦合器和继电器的动作,继而启动通风散热设备,使棚内的温度降低;当温 度低于设定的温度下限时,并通过光电耦合器和继电器的动作,继而启动加热设备,是 棚内的温度升高。温度控制程序如图 4-4 所示。 开始 温度设定上限值? 启动通风 散热设备 温度 #include #define uchar unsigned char #define uint unsigned int sbit leden=p22; sbit ledrs=p20; sbit ds=p27; sbit led0=p36;/加热端口 sbit fan=p37; /风扇端口 sbit key1=p10;/按一下,温度上限加 1 sbit key2=p12; /按一下,温度上限减 1 sbit key3=p14; /按一下,温度下限加 1 sbit key4=p16; /按一下,温度下限减 1 sbit tru=p17; uint temp; float f_temp; uchar tflag; uint num=280; /温度上限 uint num2=150; /温度下限 unsigned char disdata4; void delay(uint z) /延时 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void delayms(uint xms) /延时 uint i,j; for(i=xms;i0;i-) for(j=10;j0;j-); void write_com(uchar com) /lcd1602 写指令 ledrs=0; p0=com; delay(5); leden=1; 22 delay(5); leden=0; void write_date(uchar date) /lcd1602 写数据 ledrs=1; p0=date; delay(5); leden=1; delay(5); leden=0; void init() /lcd1602 初始化 leden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); void dsreset(void) /ds18b20 初始化 uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-; bit tempreadbit(void) /ds18b20 读字节 uint i; bit dat; ds=0;i+; ds=1;i+; i+; dat=ds; i=8; while(i0)i-; return(dat); 23 uchar tempread(void) /ds18b20 读字 uchar i,j,dat; dat=0; for(i=1;i1); return(dat); void tempwritebyte(uchar dat) /ds18b20 写字 uint i; uchar j; bit testb; for(j=1;j1; if(testb) ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0; i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0x44); /ds18b20 温度转换指令 24 uint get_temp() /ds18b20 温度转换 uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); b=tempread(); temp=b; tempnum)|(tnum) motor(); else fan=0; if(tnum2) warn(); else led0=0; void keyscan() /按键扫描 if(key1=0) delayms(1); if(key1=0) num=num+10; while(!key1); if(key2=0) delayms(1); if(key2=0) num=num-10; while(!key2); if(key3=0) delayms(1); if(key3=0) num2=num2+10; while(!key3); if(key4=0) delayms(1); if(key4=0) 26 num

温馨提示

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

评论

0/150

提交评论