基于单片机的温度智能控制系统的软件设计.docx_第1页
基于单片机的温度智能控制系统的软件设计.docx_第2页
基于单片机的温度智能控制系统的软件设计.docx_第3页
基于单片机的温度智能控制系统的软件设计.docx_第4页
基于单片机的温度智能控制系统的软件设计.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的温度智能控制系统的软件设计摘要课题是基于单片机的温度智能控制系统的设计,本设计具体到对蔬菜大棚的温度进行控制。蔬菜的生长与温度息息相关,对于蔬菜大棚来说,最重要的一个管理因素是温度控制。温度不合适,蔬菜则停止生长或者生长速度减慢,从而造成不可估量的损失。为此,在现代化的蔬菜大棚管理中通常有温度控制系统,以控制蔬菜大棚温度,适应生产需要。单片机具有体积小、集成度高、性能稳定、控制功能强、易扩展、低功耗、价格便宜等特点,所以单片机市场前景广阔。本设计是通过单片机控制,来实现对蔬菜大棚温度进行控制。系统以at89c52单片机为基础,通过数字及模拟式对温度进行采集并检测,通过显示屏显示当前温度。当采集到的温度高于系统设定值,马达将带动风扇的转动,从而降低大棚内温度,实现自动控制大棚里的温度。以此为思路设计总体电路原理图,进行软件设计。本设计总体上实现了对大棚温度的控制,有优点但也有不足之处,具有一定的扩展性。【关键词】温度控制 软件设计 温度采集 降温处理abstractsubject is intelligent temperature control system design based on single chip microcomputer, this design specific to temperature automatic control o -f the vegetable greenhouse.the growth of vegetables and temperature are c -losely related, for vegetable shed, one of the most important management f -actor is the temperature control. temperature not appropriate, then stop th -e vegetable growth or growth slowed, causing the immeasurable loss. there -fore, in modern management of vegetable shed, usually with temperature a -utomatic control system, to control the vegetables canopy temperature, to adapt to the requirements of production.single chip microcomputer with small size, high level of integration, stable performance, easy to control function expansion, low power consum -ption, price cheap and so on, so the single chip microcomputer wide prosp -ect of market.this design is through the single-chip microcomputer control, to realize the canopy temperature vegetables for automatic control. system based on single chip microcomputer at89c52, through the digital and anal -og temperature in acquisition and detection, through the screen shows the current temperature. when the collected temperature higher than system set -ting, motors will drive the rotation of the fan to reduce the temperature in greenhouses, and realize the automatic control the temperature of the shelte -r. train of thought to design the overall circuit principle diagram, carries on the software design.this design implements the overall control of the greenhouse temperatu -re, there are advantages but also have shortcomings, has certain extensibilit -y.【key words】temperature control software design temperature data collection cooling process目 录摘要abstract第1章绪 论11.1 课题研究背景和意义11.2 国内外温度控制系统的发展状况11.2.1 国外温度控制系统的发展状况11.2.2 国内温度控制系统的发展状况21.3 课题研究的主要内容3第2章 系统理论基础及构建42.1 at89c52的工作原理42.1.1 cpu的结构42.1.2 cpu的i/o口结构42.1.3 程序和数据存储器52.1.4 定时器52.1.5 中断系统52.2 ds18b20检测电路62.2.1 ds18b20简单介绍62.2.2 ds18b20的性能特点62.2.3 ds18b20的测温原理72.3 lcd1602液晶显示器82.3.1 lcd1602简介82.3.2 lcd1602的指令说明及时序82.4 直流马达92.4.1 马达工作的原理92.4.2 马达的基本构造10第3章 系统软件设计113.1 系统电路原理图113.2 主程序设计113.3 温度检测133.3.1 温度采集系统设计133.3.2 温度数据处理设计153.4 马达的控制173.5 液晶显示器lcd1602显示设计18第4章 总结22参考文献23致谢24第1章 绪 论我国南方温度严热而漫长,只有大力推广大棚蔬菜的种植来满足人们日常生活对蔬菜的需要。随着人们生活水平的日益增长,对蔬菜的要求也较高,对大棚蔬菜的温度控制就是一个重要因素。温度过高,蔬菜就会停止生长或者糜烂,所以要将温度始终控制在适合蔬菜生长的范围内。如果仅靠人工控制既耗人力,又容易造成误差。因此,要对大棚温度进行智能控制,以适应生产需要。1.1 课题研究背景和意义随着社会经济的发展,设施农业作为农业可持续发展的一个重要途径,已经越来越受到世界各国的重视。而设施农业中温室工程的建设与发展是都市型现代农业发展的重要组成部分,是设施农业发展的高级阶段。温室的出现突破了传统农业的生产模式,降低了农作物种植受地域、自然环境、气候等诸因素的限制,对农业的发展具有重要意义。近些年来,研究现代化温室技术已经成为我国农业工程技术人员的一个重要课题。应用自动控制和电子计算机实现农业生产和管理的自动化,是农业现代化的重要标志之一。近年来电子技术和信息技术的飞速发展,带来了温室控制与管理技术方面的一场革命,随着“设施农业”、“虚拟农业”等新名称的出现。温度计算机控制与管理系统正在不断吸收自动控制和信息管理领域的理论和方法,结合温室作物种植的特点,不断创新,逐步完善,从而使温室种植业实现真正意义上的现代化,产业化。1.2 国内外温度控制系统的发展状况温度是表征物体冷热程度的物理量,是工农业生产和日常生活中经常测量的物理量,也是人类研究最早测量方法最多的物理量之一。因此,温度控制系统应用领域广,使用数量多。1.2.1 国外温度控制系统的发展状况国外温度控制技术的发展最早可以追溯到上个世纪的40年代,但将计算机用于环境控制则开始于20世纪60年代。20世纪80年代初诞生了第一批温室控制计算机,此后温度计算机控制及管理技术便首先在发达国家得到广泛应用,后来各发展中国家也都纷纷引进,开发出适合自己的系统。这在给各国带来了巨大的经济效益的同时,也极大地推动了各国农业的现代化进程。国外对温度控制技术研究较早,先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制;后来出现了分布式控制系统;目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着智能化的方向发展。设施农业是世界各国用以提供新鲜农产品、弥补季节性农产品短缺的主要技术措施。目前,荷兰、以色列、美国、日本等设施农业发达的国家,在设施农业环境调控、肥水管理、品种选育等方面进行了全面深入的研究,具有技术成套、设施设备完善、生产比较规范,产量稳定、质量保证性强等特点,可以根据动植物生长的最适宜生态条件,在现代化设施农业内进行四季恒定的环境自动控制,而不受气候条件的影响,实现了周年生产、均衡上市,并向高度自动化、智能化和网络化方向发展,形成较为完整的摆脱自然的全新设施农业技术体系。荷兰玻璃温室在世界上数量最多,设施也最先进,集成化工业技术在设施农业中被广泛应用,计算机可对设施内温、光、水、气、肥等环境因子进行全面自动监测与调控。以色列在温室设备材料、种植技术及养殖品种方面堪称世界一流,在设施灌溉技术方面居世界领先地位。美国的温室多为连栋温室,其高压雾化降温、加湿系统及湿帘降温系统世界领先。日本是世界上果树设施栽培面积最大、技术最先进的国家,也是世界上最先采用工业成套设备从事鱼类养殖的国家之一,其先进的温室配套设施和综合环境调控技术居世界先进行列,通过计算机可将温度、湿度、二氧化碳浓度、肥料等控制在最适合植物生长发育的水平上,产后清选、分级、包装、预冷等作业自动化或半自动化程度较高。国外设施农业以高投入、高产出、高效益及可持续发展为特征,且以传统农业前所未有的高生产率创造高的经济效益。 目前,发达国家研究的总体趋势是实现设施内部环境因素(如温度、湿度、光照、二氧化碳浓度等)的调控由过去单因素控制向利用环境计算机进行多因子动态控制的发展;温室环境控制和作物栽培管理向智能化、网络化方向发展,而且温室产业向节约能源、低成本的地区转移,节能技术成为研究的重点。1.2.2 国内温度控制系统的发展状况我国对于温度测控技术的研究较晚,始于20世纪80年代。我国工程技术人员在吸收发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。自20世纪70年代以来,我国温室生产已经有了很大的进步,但这些温室都是在充分利用高产栽培技术和屏障技术的基础上发展起来的,其经济效益很难再有大的提高。要改变这种状况,将现代单片机技术引入农业温室,实现农业温室的自动控制,是最有效的途径之一。温室自动化主要体现在温室内环境的监控上,环境控制是农业现代化的重要标志,因此对温室环境进行自动检测进而实现自动控制是非常必要的。完整的环境控制系统包括控制器(控制软件)、传感器、和执行机构。温室可以不受地点和气候的影响,设置在气候恶劣的各种地区。它能有效地改善农业生态、生产条件,促进农业资源的合理开发利用,提高土地利用率、作业精度、劳动生产率和社会、经济效益。因此,自动控制温室在世界范围内得到了广泛的、迅速的应用和发展。目前国内虽然对温室控制和温室管理进行了一定的研究和实验,但真正适合我国的温室控制系统却很少。因此如何在消化吸收国外先进技术的基础上,结合我国的不同地区、不同气候的特点,进行再创造,开发出适合国情、面向整套温室栽培环境、价格低廉的微机或单片机控制系统,是我国当今温室生产与控制中一项亟待解决的问题。1.3 课题研究的主要内容课题是基于单片机的温度智能控制系统的设计,本设计根据目前国内外温度智能控制系统的发展状况对蔬菜大棚的温度控制进行研究。系统以at89c52单片机为基础,首先采用数字温度传感器对温度进行采集,经过处理将温度数据传输给单片机并且通过lcd显示屏显示当前温度值。当采集到的温度高于系统设定值,马达将带动风扇的转动,从而降低大棚内温度,实现自动控制大棚里的温度。根据整个构思设计出系统电路原理图,然后进行系统主程序及模块子程序的编写,以此实现各个功能,进而达到控制温度的效果。第2章 系统理论基础及构建本系统通过单片机at89c52控制,用ds18b20数字温度传感器采集温度。通过lcd1602液晶显示屏显示当前温度,当检测到温度高于系统设定温度值,马达将带动风扇的转动,实现自动控制降大棚里的温度。本系统由以下几个部分组成:at89c52单片机最小系统,温度检测电路,显示电路,马达。组成图如图2-1。温度检测装置at89c52显示设备马达控制复位电路电源电路图 2-1 温度自动控制主要组成部分 at89c52单片机:它是系统的中央处理器,担负着系统的控制和运算。温度检测装置:ds18b20数字温度计对大棚内温度进行采集,将温度转换成数字。显示设备:主要是用于显示检测到的大棚温度。马达:主要用于带动风扇的转动。按键电路:设置系统时间和参考温度值。ds18b20定义端口为p1.7, p0口控制液晶lcd1602的显示,马达控制端口定义为p3.7口。首先对温度采集,将采集到的温度转换为数字信号,输送到单片机进行处理,经处理后的信号由lcd液晶显示屏显示,同时与系统设定温度值进行比较,从而控制p3.7口的电平输出。2.1 at89c52的工作原理2.1.1 cpu的结构cpu是单片机内部的核心部分,是单片机的指挥和执行机构,它决定了单片机的主要功能特性。从功能上看,cpu包括两个基本部分:控制器和运算器1。2.1.2 cpu的i/o口结构at89c52单片机有4个8位并行i/o接口,记作p0、p1、p2和p3,每个端口都是8位准双向口,共占32根引脚。每一条i/o线都能独立地用作输入或输出。每个端口都包括一个锁存器,一个输出驱动器和输入缓冲器,作输出时数据可以锁存,作输入时数据可以缓冲,但是这四个通道的功能完全不同。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向i/o端口使用,在具有片外扩展存储器系统中,p2口送出高8位地址,p0口为双向总线,分时送出低8位地址和数据的输入/输出。2.1.3 程序和数据存储器程序存储器用于存放编好的程序和表格常数,通常该区域具有不同的保护措施,以防止该区域的内容被破坏。程序存储器通过16位程序计数器寻址,寻址能力为64k字节。这似的能在6k地址空间内任意寻址,但没有指令使程序能控制从程序存储器空间转移到数据存储空间。对at89c52芯片来说,片内有4k字节rom/eprom,片外可扩展60k字节eprom,片内和片外程序存储器统一编址。数据存储器用于存放运算的中间结果、数据暂存和缓冲以及标志位等。at89c52数据存储器空间也分为内片和外片两大部分,即片内数据存储器ram和片外数据存储器ram。片内数据存储器最大可以寻址256个单元,片外最大可扩展64k字节ram,并且片内使用的是mov指令,片外64k rom空间专门为movx指令所用。2.1.4 定时器at89c52单片机的内部有两个16位可变成定时器0和定时器1,它们都有定时或是事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。它们具有计数和定时两种工作方式以及四种工作模式。两个特殊功能寄存器用于确定定时器/计数器的功能和操作方式。定时器t0的核心是一个加1计数器,它由8位寄存器th0和th1组成,可被变成为13位、16位、两个分开的8位等不同的结构。计数器的输入脉冲源可以是外部脉冲源或系统时钟震荡器,计数器对着两个输入脉冲之一进行递增计数。定时器t0具有方式0、方式1、方式2和方式3四种工作方式。t1具有方式0、方式1和方式2三种工作方式。不管是定时工作方式还是计数方式,定时器t0和t1在对内部时钟或对外部时间计数时,不占用cpu时间,除非定时器/计数器溢出,才可能中断cpu的当前操作。由此可见,定时器是单片机中效率最高而且工作灵活的部件。2.1.5 中断系统中断是指中央cpu正在处理某事情的时候,外部发生了某一事件,请求cpu迅速去处理,于是,cpu暂时中断当前的工作,转入处理所发生的事件;中断服务处理完成以后,再回到原来被中断的工作,这样的过程称为中断2。at89c52单片机有五个中断请求源。其中,两个外部中断源;两个片内定时器/计数器的溢出中断源te0和tf1;一个片内串行口接受或发送中断源ri或ti。这些中断请求分别由单片机的特殊功能寄存器tcon和scon的相应位锁存。当几个中断源同时向cpu请求中断,要求cpu提供服务的时候,就存在cpu优先响应哪一个中断请求,于是一些微处理器和单片机规定了每个中断源的优先级别。2.2 ds18b20检测电路由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用dallas公司的数字温度传感器ds18b20作为测温元件。2.2.1 ds18b20简单介绍dallas 最新单线数字温度传感器ds18b20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。dallas 半导体公司的数字化温度传感器ds18b20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在eeprom 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个ds18b20可以并联到3 根或2 根线上,cpu只需一根端口线就能与诸多ds18b20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便3。2.2.2 ds18b20的性能特点独特的单线接口方式,ds18b20在与微处理器连接时仅需要一条口线即可实现微处理器与ds18b20的双向通讯。ds18b20支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现组网多点测温。ds18b20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。适应电压范围更宽,电压范围:3.05.5v,在寄生电源方式下可由数据线供电。温范围55125,在-10+85时精度为0.5。零待机功耗。可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。用户可定义报警设置。报警搜索命令识别并标志超过程序限定温度的器件。测量结果直接输出数字温度信号,以一线总线串行传送给cpu,同时可传送crc校验码,具有极强的抗干扰纠错能力。负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。以上特点使ds18b20非常适用与多点、远距离温度检测系统。ds18b20内部结构主要由四部分组成:64位光刻rom、温度传感器、非挥发的温度报警触发器th和tl、配置寄存器。dq 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;gnd为地信号;vdd为可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。 2.2.3 ds18b20的测温原理ds18b20的测温原理,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,还隐含着计数门,当计数门打开时,ds18b20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值4。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是ds18b20的测温原理。另外,由于ds18b20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对ds18b20的各种操作必须按协议进行。操作协议为:初始化ds18b20发rom功能命令发存储器操作命令处理数据5。2.3 lcd1602液晶显示器2.3.1 lcd1602简介字符型lcd1602通常有14条引脚线或16条引脚线的lcd,多出来的2条线是背光电源线vcc(15脚)和地线gnd(16脚),其控制原理与14脚的lcd完全一样。第1脚:vss为地电源。第2脚:vdd接5v正电源。第3脚:vl为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度。第4脚:rs为寄存器选择,高电平时选数据寄存器、低电平时选择指令寄存器。第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和r/w共同为低电平时可以写入指令或者显示地址,当rs为低电平r/w为高电平时可以读忙信号,当rs为高电平r/w为低电平时可以写入数据。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。2.3.2 lcd1602的指令说明及时序 1602液晶模块内部的控制器共有11条控制指令6,lcd1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。1为高电平、0为低电平。指令1:清显示,指令码01h,光标复位到地址00h位置。指令2:光标复位,光标返回到地址00h。指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 dl:高电平时为4位总线,低电平时为8位总线 n:低电平时为单行显示,高电平时双行显示 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器ram地址设置。指令8:ddram地址设置。指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。lcd读写时序如表2-1所示。表2-1 lcd1602读写时序表读状态输入rs=l,r/w=h,e=h输出d0d7=状态字写指令输入rs=l,r/w=l,d0d7=指令码,e=高脉冲输出无读数据输入rs=h,r/w=h,e=h输出d0d7=数据写数据输入rs=h,r/w=l,d0d7=数据,e=高脉冲输出无2.4 直流马达电动马达,又称为马达或电动机,是一种将电能转化成机械能,并可再使用机械能产生动能,用来驱动其他装置的电气设备。电动机种类非常繁多,但可大致分为交流电动机及直流电动机以用于不同的场合。2.4.1 马达工作的原理马达的旋转原理的依据为佛来明左手定则,当导线置放于磁场内,若导线通上电流,则导线会切割磁场线使导线产生移动。 电流进入线圈产生磁场,利用电流的磁效应,使电磁铁在固定的磁铁内连续转动的装置,可以将电能转换成力学能。 与永久磁铁或由另一组线圈所产生的磁场互相作用产生动力 直流马达的原理是定子不动,转子依相互作用所产生作用力的方向运动7。 电枢:可以绕轴心转动的软铁芯缠绕多圈线圈。场磁铁:产生磁场的强力永久磁铁或电磁铁。集电环:线圈约两端接至两片半圆形的集电环,随线圈转动,可供改变电流方向的变向器。每转动半圈,线圈上的电流方向就改变一次。电刷:通常使用碳制成,集电环接触固定位置的电刷,用以接至电源。 2.4.2 马达的基本构造电动机的种类很多,以基本结构来说,其组成主要由定子和转子所构成。定子在空间中静止不动,转子则可绕轴转动,由轴承支撑。定子与转子之间会有一定空气间隙,以确保转子能自由转动。定子与转子绕上线圈,通上电流产生磁场,就成为电磁铁,定子和转子其中之一亦可为永久磁铁8。第3章 系统软件设计3.1 系统电路原理图首先对硬件系统ds18b20定义端口为p1.7;p2.0,p2.1,p2.2和p0口控制液晶lcd1602的显示,定义端口p3.7为马达控制端口。首先对温度采集,将采集到的温度转换数字,采集到的温度由lcd液晶显示屏显示。再将采集到的温度所属软件设置的哪个范围,而控制p1.5的电平输出。系统通过单片机at89c52控制,用ds18b20数字温度传感器采集温度。通过lcd1602液晶显示屏显示当前温度,当检测到温度高于系统设定温度值,马达将带动风扇的转动,实现自动控制降大棚里的温度。系统电路原理图如图3-1所示图3-1 电路原理图3.2 主程序设计从软件的功能不同可分为几大类:一是检测软件,它是用来检测温度。二是显示部分,用来显示所检测到的温度。三是控制部分,用来控制马达。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义。系统主程序流程图如图3-2所示。大于设定值?开始初始化ds18b20温度检测lcd1602显示电机带动风扇转动图 3-2系统主程序流程图void main(void) p1=0xff; /初始化p1口,全设为1 x24c02_init(); /初始化24c08 k=x24c02_read(2); /读出保存的数据赋于kseconde=x24c02_read(4);minite=x24c02_read(6);hour=x24c02_read(8); delay_lcm(500); /延时500ms启动initlcm( ); /lcd初始化init_timer0( ); /时钟定时器0初始化 init_ds18b20( ) ; /ds18b20初始化displaylistchar(0,0,str0);displaylistchar(0,1,str1); while (1) keyscan(); /按键扫描 readtemperature(); /温度采集 switch(set) /lcd根据工作模式显示case 0:displayfun1();delay_lcm(1000);break; /正常工作显示case 1:displayfun2();delay_lcm(1000);break; /调整时显示case 2:displayfun3();delay_lcm(1000);break; /调整分显示case 3:displayfun4();delay_lcm(1000);break; /温度设定default:break; keyscan( ); /相当于延时if(on_off=1) /若温控标志位1, 控制lamp动作if(temp1=k+1)outflag=1;out=0;if(temp1k) delay_lcm(1000);if(temp1k)outflag=0;out=1; elseoutflag=0;out=1;if(write=1) /判断计时器是否计时一秒 write=0; /清零 x24c02_write(8,hour); /在24c08的地址2中写入数据hour delay_lcm(11); x24c02_write(6,minite); delay_lcm(11); x24c02_write(4,seconde); delay_lcm(11); x24c02_write(2,k); 3.3 温度检测3.3.1 温度采集系统设计ds18b20可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生电源为止。此外,还可外接5v电源,给ds18b20供电9。ds18b20采集温度的流程图如图3-3所示。ds18b20的初始化跳过读序列号的操作读取温度寄存器启动温度转换跳过读序列号的操作开 始ds18b20的初始化retlow-低八位 high-高八位图3-3 ds18b20采集温度流程图采集温度子程序的主要功能是读出ram中的9个字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。ds18b20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后,低位在前,共12位数,小数4位,整数7位,还有一位符号位。采集温度的主程序如下:void readtemperature(void)unsigned char a=0;unsigned char b=0;unsigned char t=0;init_ds18b20();writeonechar(0xcc); / 跳过读序号列号的操作writeonechar(0x44); / 启动温度转换delay_ds18b20(100); init_ds18b20();writeonechar(0xcc); /跳过读序号列号的操作writeonechar(0xbe); /读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_ds18b20(100);a=readonechar(); /读取温度值低位b=readonechar(); /读取温度值高位temp1=b4;temp2=a&0x0f; temp=(b*256+a)4); /当前采集温度值除16得实际温度值3.3.2 温度数据处理设计读出温度数据后,templ的低四位为温度的小数部分,可以精确到0.0625,templ的高四位和temph的低四位为温度的整数部分,temph的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5的话,向个位进1;小于0.5的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为ds18b20最低温度只能为-55,所以可以将整数部分的最高位换成一个“-”,表示为负数。由于ds18b20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节高5位是用来保存温度的正负,高字节低3位和低字节来保存温度值。其中低字节的低4位来保存温度的小数位。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度10。温度数据处理流程图如图3-4所示。 开始提取整数部分存入ht提取小数部分存入templtempl右移三位,将精度降低到0.5摄氏度temph +将小数部分整数化提取符号部分存入signtempl是否大于5temp=?0xf0retflag=1 temph=temph+1ynny图 3-4 温度数据处理流程温度数据处理主程序如下:str0=temph/100; /十位温度 str1=(temph%100)/10; /十位温度 str2=(temph%100)%10; /个位温度,带小数点 str3=templ; if(flag_get=1) /定时读取当前温度 temp=readtemperature(); if(temp&0x8000) str0=0x40; /负号标志 temp=temp; / 取反加1 temp +=1; else str0=0; temph=temp4; templ=temp&0x0f; templ=templ*6/10; /小数近似处理 flag_get=0;3.4 马达的控制 当被测温度低于系统设定温度值时,p3.7角的输出信号为1,马达不转动。当被测温度高于系统设定温度值时,p3.7角的输出信号为0,马达开始转动。马达控制流程图如图3-5所示。开始设定温度值t0采集温度值t1t1t0 n输出低电平驱动马达转动yret图3-5马达控制流程图if(on_off=1) /若温控标志位1, 控制lamp动作if(temp1=k+1)outflag=1;out=0;if(temp1k) delay_lcm(1000);if(temp1k)outflag=0;out=1; elseoutflag=0;out=1; 3.5 液晶显示器lcd1602显示设计 lcd1602显示函数如下11端口定义如下:#define dataport p0 /定义p0口为lcd通讯端口sbit lcm_rs=p20; /数据/命令端sbit lcm_rw=p21; /读/写选择端sbit lcm_en=p22;/*液晶显示子函数1正常显示*/void displayfun1(void)writecommandlcm(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号displaylistchar(0,0,str0);displaylistchar(0,1,str1); displayonechar(3,0,hour/10+0x30); /液晶上显示小时displayonechar(4,0,hour%10+0x30);displayonechar(6,0,minite/10+0x30); /液晶上显示分displayonechar(7,0,minite%10+0x30);displayonechar(9,0,seconde/10+0x30); /液晶上显示秒displayonechar(10,0,seconde%10+0x30);displayonechar(4,1,k/10+0x30); /液晶上显示设定的温度displayonechar(5,1,k%10+0x30); displayonechar(11,1,temp1/10+0x30);/液晶上显示测得的温度 displayonechar(12,1,temp1%10+0x30);displayonechar(14,1,temp2/10+0x30);if(on_off=0) /若温控标志为0displayonechar(14,0,0x4f); /液晶上显示不控温的标志displayonechar(15,0,0x46);elsedisplayonechar(14,0,0x4f); /液晶上显示控温的标志displayonechar(15,0,0x4e);if(outflag=1) displayonechar(0,0,0x7c); elsedisplayonechar(0,0,0xef);/*液晶显示子函数2*/void displayfun2(void)writecommandlcm(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号displaylistchar(0,0,str0);displaylistchar(0,1,str1);displayonechar(6,0,minite/10+0x30);displayonechar(7,0,minite%10+0x30);displayonechar(9,0,seconde/10+0x30);displayonechar(10,0,seconde%10+0x30);displayonechar(4,1,k/10+0x30); displayonechar(5,1,k%10+0x30); displayonechar(11,1,temp1/10+0x30); displayonechar(12,1,temp1%10+0x30);displayonechar(14,1,temp2/10+0x30); writecommandlcm(0x0f,1); /显示屏打开,光标显示,闪烁,检测忙信号 displayonechar(3,0,hour/10+0x30);displayonechar(4,0,hour%10+0x30);/*液晶显示子函数3*/void displayfun3(void)writecommandlcm(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号displaylistchar(0,0,str0);displaylistchar(0,1,

温馨提示

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

评论

0/150

提交评论