智能温度控制系统设计样本_第1页
智能温度控制系统设计样本_第2页
智能温度控制系统设计样本_第3页
智能温度控制系统设计样本_第4页
智能温度控制系统设计样本_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。

毕业设计(论文)题目温度智能控制系统设计专 业 班 级自动化05学 号姓 名苗青指导教师杨述斌教授学院名称电气信息学院5温度智能控制系统设计Intelligenttemperaturecontrolsystemdesign学生姓名:苗青指导教师:杨述斌教授摘要随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。为了更好地推广单片机在实际生活和生产中的应用,本文介绍一种基于单片机AT89C51设计的温度控制系统,以实现系统能自主调节温度的功能。该温度系统采用温度传感器DS1820来获得当前温度,并以数字信号的方式传送给单片机。采集的温度与从4X2矩阵键盘输入的温度值进行比较,并经过液晶显示器LCD显示出来。如果采集温度低于设置温度,系统将经过继电器模块自动控制升温;如果采集温度高于设置温度,系统将经过继电器模块自动控制降温。文中介绍了该控制系统的硬件部分,包括:温度采集电路、温度设置电路、温度显示电路、继电器电路等。文中还着重介绍了软件设计部分。里采用模块化结构,主要模块有:温度采集模块、键盘扫描及按键处理模块、温度显示模块、温度比较模块、继电器控制模块。经实际制作表明该温度控制系统具有体积小、操作灵活、可靠性高、实用、成本低等特点,具有一定的实际意义。关键词:单片机AT89C51;温度控制;温度传感器DS1820;液晶显示器LCDAbstractWiththeelectronicproductsdevelopingtointelligentandminiaturization,singlechiphasbecomethefirstchosencontrollerwhichisusedtodevelopandexploretheelectronicproduct.Inordertopromotesinglechipapplicatinginreallifeandproduction,thepaperwillintroduceatemperaturecontrolsystemwhichisbasedonakindofsinglechipAT89C51,anditcanachievethefunctionthatthesystemcanregulatethetemperatureindependently.ThetemperaturesystemadoptsthetemperaturesensorDS1820togetthecurrenttemperature,andtransferittothemicrocontrollerwiththewayofdigitalsignal.Theacquisedtemperaturewillbecomparedwiththetemperaturewhichisputinby4X2matrixkeyboard,andwillbedisplayedbyliquidcrystaldisplay.Ifcollectedtemperaturebelowthesettemperature,thesystemwillautomaticallycontroltoheatupbytherelaymodules.Ifcollectedtemperaturehigherthanthesettemperature,thesystemwillautomaticallycontroltoreducebytherelaymodules.Thepaperintroducesthehardwarewhichispartofthecontrolsystem,including:temperatureacquisitioncircuit,temperaturesettingofthecircuit,temperaturedisplaycircuit,relaycircuitandsoon.Thepaperhasalsomainlyintroducedthedesignofsoftware.Hereusemodularconstruction,themainmodule:temperatureacquisitionmodule,keyboardscanandkeyprocessingmodule,temperaturedisplaymodule,temperaturecomparisonmodule,relaycontrolmodule.Accordingtomakeitactually,Ifindithasthesecharacteristics:smallvolume,flexibleoperation,highreliability,practical,lowcostandsoon.Ithaspracticalsignificance.IIKeywords:SingleChipAT89C51;TemperatureControl;TemperatureSensorDS1820;LiquidCrystalDisplay;II第一章绪论1.1选题背景与意义在生产过程中,温度的控制是十分常见的。国内已相继出现各种以微机为核心的温度控制系统。这种系统控制精度高、重复性好、自动化程度高。在日常生活中,人们为了拥有一个更舒适的生活环境,往往需要室内拥有一个合适的温度,而单片机的准确性高、价格低、功耗低等一系列优点,可结合升温和降温设备,有效的应用到实际生活中。单片机温度控制系统是单片机控制的一项简单应用。近几年来单片机因其独特的,方便,快捷的优势被广泛的应用于各个领域之中。1.2选题简介课题名称:温度智能控制系统设计主要任务:将温度控制在设定的温度值,设定范围为0-99度,针对在生产和日常生活中温度智能化控制系统的实现。开发环境:本环境温度控制系统的软件部分是经过KEIL进行编译,Proteus7Professional进行仿真测试,开发板作为实际测试。技术指标:(1)以AT89C52系列单片机为核心部件(2)以数字电路和模拟电路为硬件基础(3)以C语言为软件实现语言功能概述:在该环境温度控制系统中,单片机作为核心部件进行检测控制,增强了设计的通用性,适时性。在该环境温度控制系统中温度检测采用DS18B20温度传感器,它不但具有较高的精度,而且适用电压宽。同时采用了4X2矩阵扫描键盘输入,显示设备等外围扩展芯片。温度控制分为升温和降温控制,升温控制和降温控制分别采用继电器来控制外部的升温和降温设备。软件部分采用流程图来表示。第二章系统总体设计方案本设计是一个数字温度测量及控制系统,能测柜内的温度,并能在超限的情况下进行控制、调整,并报警。保证环境保持在限定的温度中。2.1系统工作原理温度控制系统采用单片机作为微处理单元进行控制。采用温度传感器将温度采集到单片机,采用键盘按键把设定温度的值存入单片机的数据存储器。经过显示器将2者温度显示出来,然后再将两者温度进行比较。如果采集温度比设定温度要低,则加热指示灯亮起,继电器电路中的直流电机开始转动加热;如果采集温度比设定温度要高,则降温指示灯亮起,继电器电路中的风冷器开始运转降温。系统原理图如图2-1所示:单片机单片机AT89C51温度采集模块键盘模块复位电路继电器控制模块显示模块图2-1系统总体设计框图根据系统的设计要求,选择DS18B20温度传感器作为采集模块,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、等功能,选择LCD液晶显示器作为显示模块。2.2单片机简介随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机[1]。2.2.11.具有优异的性能价格比2.集成度高、体积小、可靠性高、控制功能强3.低电压、低功耗2.2.微处理器是本系统的核心,其性能的好坏直接影响系统的稳定,鉴于本系统为实时控制系统,系统运行时需要进行大量的运算,因此单片机采用INTEL公司的高效微控制器AT89C51[2]。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术,与工业标准的MCS-5指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51外形及引脚如图2-1-2图2-21.主要特性:·与MCS-51兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:·全静态工作:0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路2.管教说明·VCC:供电电压。·GND:接地。·P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它能够被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。·P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。·P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写”1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址”1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。·P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入”1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口[3]。如表2-1-3所示:引脚作用P3.0RXDP3.1TXDP3.2/INT0P3.3/INT1P3.4T0P3.5T1P3.6/WRP3.7/RD串行输入口串行输出口外部中断0外部中断1记时器0外部输入记时器1外部输入外部数据存储器写选通外部数据存储器读选通表2-1-3·RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。·/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。·/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不论是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间为内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。·XTAL2:来自反向振荡器的输出。3.振荡特性·/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不论是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)·XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。·XTAL2:来自反向振荡器的输出。4.芯片擦除整个PEROM阵列和三个锁定位的电擦除可经过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写”1”且在任何非空存储字节被重复编程以前,该操作必须被执行。另外,AT89C51设有稳态逻辑,能够在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容而且冻结振荡器,禁止所用其它芯片功能,直到下一个硬件复位为止。5.串口通讯SBUF数据缓冲寄存器这是一个能够直接寻址的串行口专用寄存器。有朋友这样问起过”为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样能够避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字sfr定义为一个变量就能够对其进行读写操作了,如sfrSBUF=0x99;当然你也能够用其它的名称。一般在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就能够了。SCON串行口控制寄存器一般在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个能够位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口能够工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义为:SM0SM1SM2RENTB8RB8TIRI。·SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。·REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么能够在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。大家也能够用上面的实际源码加入REM=0来进行实验。·RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。·TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,因此这时必须用软件对其清零。·RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常见的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。6.中断系统8051单片机的中断系统简单实用,其基本特点是:有5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的编程。5个中断源的符号、名称及产生的条件如下:·INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。·INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。·T0:定时器/计数器0中断,由T0计满回零引起。·T1:定时器/计数器l中断,由T1计满回零引起。·TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。第三章硬件模块3.1温度采集模块温度采集模块硬件图如图3-1所示图3-1温度采集模块3.1传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足40℃至90℃测量范围,但热敏电阻可靠性差,测量温度准确率低,对小于1℃的温度信号不适合,还得经过专门接口电路转换成数字信号才能由微处理器进行处理[5]。DS18B20数字式温度传感器,与传统的热敏电阻有所不同的是,使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度。同时,它能够直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,这就缩短开发的周期。3.·采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络。·测量温度范围宽,测量精度高。DS18B20的测量范围为-55℃~+125℃;在-10~+85℃范围内,精度为±0.5℃。·在使用中不需要任何外围元器件即可实现测温。·多点组网功能。多个DS18B20能够并联在惟一的三线上,实现多点测温。·供电方式灵活。DS18B20能够经过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,能够不接外电源,从而使系统结构更趋简单,可靠性更高。·测量参数可配置。DS18B20的测量分辨率可经过程序设定9~12位。·负压特性。电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。·掉电保护功能。DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值[9]。3.DS18B20实物图与管脚图如图3-1-3所示,DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端,电源供电3.0~5.5V(寄生电源接线方式时接地)。图3-3.DS18B20的内部结构如图3-1-4所示,主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它能够看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(地址:28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,而且每个DS18B20的序列号都不相同,因此它能够看作是该DS18B20的地址序列码;最后8位则是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。由于每一个DS18B20的ROM数据都各不相同,因此微控制器就能够经过单总线对多个DS18B20进行寻址,从而实现一根总线上挂接多个DS18B20的目的64位ROM64位ROM和单总线接口存储器与控制逻辑高速缓存温度传感器哦高温触发器低温触发器配置存储器8位CRC发生器电源检测GNDCVDDVD1I/OVD2内部VDD图3-64位ROM的位结构如表3-1-5所示。开始8位是产品类型的编号;接着是每个器件的唯一的序号,共有48位;最后8位是前面56位的CRC检验码,这也是多个DS18B20能够采用单线进行通信的原因。非易失性温度报警触发器TH和TL,可经过软件写入用户报警上下限数据。8位检验CRC8位检验CRC48位序列号8位工厂代码(10H)MSBLSBMSBLSBMSBLSB图3-1-564位ROM的位结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM。高速暂存RAM的结构为9字节的存储器,结构如图3-1-7所示。前2字节包含测得的温度信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图3-1-6所示,其中,低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率。R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750图3-TMR1R0111111图3-1由表可见,DS18B20温度转换的时间比较长,而且设置的分辨率越高,所需温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节是前面8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存RAM的第1、2字节中。单片机能够经过单线接口读出该数据[11]。读数据时,低位在先,高位在后,数据格式以0.0625°C/LSB形式表示。温度值格式如图232221202-12-22-32-4SSSSS262524图3-DS18B20测温原理如图3-1-预置预置斜率累加器比较计数器低温度系数振荡器减法计数器温度寄存器减到0预置减到0减法计数器2高温度系数振荡器增加停止图3-3.DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:(1)每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500us,然后释放,DS18B20收到信号后等待16~60us左右,后发出60~240us的存在低脉冲,主CPU收到此信号表示复位成功。(所有的读写时序至少需要60us,且每个独立的时序之间至少需要1us的恢复时间。在写时序时,主机将在下拉低总线15us之内释放总线,并向单总线器件写1;若主机拉低总线后能保持至少60us的低电平,则向单总线器件写0。单总线仅在主机发出读写时序时才向主机传送数据,因此,当主机向单总线器件发出读数据指令后,必须马上产生读时序,以便单总线器件能传输数据。)(2)在写数据时,写0时单总线至少被拉低60us,写1时,15us内就得释放总线。(3)转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。(4)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。(5)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为能够挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(6)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。(7)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予重视[12]。3.2显示模块显示模块采用LCD液晶显示器来完成显示功能。液晶显示器,或称LCD(LiquidCrystalDisplay),为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗很低,因此倍受工程师青睐。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管组成画面。LCD与LED比有以下优点::1、造价比LED低廉;2、制造工艺比LED简单;3、技术臻于成熟;4、维修或更换发光件非常简单,价格相对较低;5、省电,不产生高温;6、低辐射,益健康,画面柔和,不伤眼。显示模块硬件电路图如图3-2所示[8]图3-2显示模块3.3键盘模块本论文采用4X4的矩阵按键,实现对温度的设定。如图3-4所示图3-3键盘模块图中,按键1控制温度数值的加法,按一下加1;按键2控制温度数值的减法,按一下减1;按键5控制LCD显示的光标移动,按一下向左移一位;按键6也控制LCD显示的光标移动,按一下向右移一位。由此来实现对温度的设定。3.4继电器模块如图3-4所示,继电器模块有2个开关,2个发光二级管组成。当采集温度低于设置温度时,二极管D3管发光,提示温度过低,开关RL1闭合,电直流电机开始转动加热;当采集温度高于设置温度时,二极管D4管发光,提示温度过高,开关RL2闭合,风冷器开始转动降温[6]。图3-4继电器模块第四章软件设计本系统软件主要由主流程、功能子程序组成。采用主程序调用功能子程序,子程序尽可能少的调用其它子程序,以保证系统的稳定运行。4.1主程序主程序由初始化,温度采集,温度显示,温度设定和继电器子程序组成,为系统软件的主干部分,其流程图如图4-1所示[7]开始开始系统初始化发送温度采集指令读出温度值设置温度值显示采集温度和设置温度采集温度小于设置温度直流电机转动升温YN风冷器转动降温图4-1主程序流程图4.2温度采集子程序温度采集子程序主要负责驱动外部的温度传感器DS18B20进行工作,经过串口通信方式向DS18B20写入ROM命令,并读取当前温度值,将读取的数据存放在26H-2EH存储单元,其中26H单元存放温度值的低位,27H单元存放温度值的高位,程序流程图如图4-2所示。开始开始DS1820复位向DS1820写入相应的ROM命令读出温度值并进行校验结束图4-2温度采集子程序流程图4.3温度显示子程序在温度控制系统中采用了LCD液晶显示器的左4位来显示采集温度,右4位显示键盘设定温度,这样便于两者进行比较。流程图如图4-3所示温度采集温度采集LCD初始化采集数据送入LCDP0口在0X03位显示数据锁存温度设置设置数据送入LCDP0口在0X4A位显示数据锁存图4-3温度显示子程序流程图4.4键盘子程序这里主要判断键盘是否按下以及去抖。流程图如图4-4所示开始开始按键1是否按下YN延时10ms按键1是否按下Y按键标示符为1N结束按键1按下标识符为0,按键有效图4-4键盘子程序流程图4.5温度比较子程序温度比较子程序的任务是将采集温度和设置温度两者进行比较。如果采集温度比设定温度要低,则加热指示灯D3亮起,继电器电路中的直流电机开始转动加热;如果采集温度比设定温度要高,则指示灯D4亮起,继电器电路中的风冷器开始运转降温。温度比较子程序流程图如图4-5所示开始开始当前温度判断温度是否过高(设置温度减当前温度)判断温度是否过低(当前温度减设置温度)N指示灯D3亮起风冷器转动指示灯D4亮起直流电机转动开始YY图4-5温度比较子程序流程图4.6继电器子程序当采集温度低于设置温度时,二极管D3管发光,提示温度过低,开关RL1闭合,电直流电机开始转动加热;当采集温度高于设置温度时,二极管D4管发光,提示温度过高,开关RL2闭合,风冷器开始转动降温。继电器流程图比较简单,这里就不给出。第五章仿真结果与结论分析5.1仿真结果经过结合硬件电路以及程序,在开发板上实现了仿真,仿真结果与理论较一致。仿真结果如图5-1和图5-2所示。在图5-1中,LCD液晶显示器左上角显示的是DS1820采集的室内温度,在右下角显示的是由图右下方4X2的黑色按键设置的温度。K5表示温度加1,K6表示温度减1,K7表示光标左移,K8表示光标右移。采集温度显示的是28℃,而设置的是20℃,小于采集温度。这时指示灯D1亮起,电机开始工作加热。在图5-2中,LCD液晶显示器左上角显示的是DS1820采集的室内温度,在右下角依然显示的是由图右下方4X2的黑色按键设置的温度。采集温度显示的是28℃图5-1温度过低图5-2温度过高5.1结论分析本系统的核心技术表现在温度采集、4X2矩阵键盘输入和LCD显示部分,其中温度采集的硬件部分使用温度传感器DS18B20,经过软件控制与DS18B20的串口通讯来进行温度采集;4X2矩阵键盘输入采用键码的扫描来实现;LCD则经过数据手册来对其进行位设置。为了实现这一系列功能我主动与指导老师交流,而且查阅了大量相关的书籍,在此过程中进一步锻炼了自己思考问题与解决问题的能力,巩固并提高了自己的单片机、数字电路、模拟电路等相关知识。该系统实现的最终功能是控制外界温度,使温度恒定在一定的范围内,统所能测量温度的范围在0-99度之间,能自动的将采集温度与设置温度进行比较,自动的控制温度的升高和降低,十分的便利可靠,而且所需成本很低。但如果温度范围过大,则该系统就不适用了,这也是论文需要完善的地方。致谢在论文完成之际,回顾大学的成长道路,我在学业和生活上得到了众多老师、同学和朋友们的热心帮助和大力支持。在此,我要向你们表示我最诚挚的谢意!本论文是在杨述斌教授的悉心指导下完成的,在此我首先对杨教授表示诚挚的谢意。在我的整个学习阶段,无论在专业学习,还是在课题研究和论文撰写上,杨教授都给予了极大的关心、指导和鼓励。杨教授求真务实的治学精神、渊博的知识、丰富的实践经验、勇于开拓的科学精神和平易近人的态度,是我终身难忘,并将深深影响我以后的工作和学习,再次感谢杨教授对我不倦的栽培在毕业设计期间,教研组的所有老师都给予我非常大的关心和指导,感谢你们。感谢刘轩同学及其它大学阶段认识的同学,她们在我课题完成过程中给予了极大的帮助和支持。衷心感谢我的父母,是她们在不断鼓励我,安慰我,使我能顺利的完成毕业论文。最后感谢所有对我有过帮助在我人生中知遇的许许多多匆匆过客,愿她们能心想事成!参考文献[1]秦实宏,徐春辉.MCS-51单片机原理及应用[M].武汉:华中科技大学出版社,.[2]陈明荧.8051单片机课程设计实训教材[M].北京:清华大学出版,.[3]凌玉华.单片机原理与应用系统设计[M].长沙:中南大学出版社,.[4]李军.检测技术及仪表[M].北京:中国轻工业出版社,.[5]栾桂东,金欢阳.传感器及其应用[M].西安:西安电子科技大学,.[6]康华光.电子技术基础模拟部分(第四版)[M].北京:高等教育出版社,1999.[7]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社.-7-3.[8]侯玉宝.基于Proteus的51系列单片机设计与仿真[M].电子工业出版社.[9]刘鸣,车立新,陈兴梧,赵煜.温度传感器DS18B20的特性及程序设计方法[J].电测与仪表,,(10)[10]周月霞,孙传友.DS18B20硬件连接及软件编程[J].传感器世界,,(12)[11]陈涛.DS18B20芯片与单片微控制器的接口设计与应用[J].山东煤炭科技.,(03).[12]陈跃东.DS18B20集成温度传感器原理及其应用[J].安徽工程科技学院学报,(04).[13]刘淑荣,丁录军.基于单片机控制的温度智能控制系统[J].微计算机信息,,(12)[14]MCS-51FamilyofSingleChipMicrocomputerUser’sManual[J].1990-[15]ZhangChunzhiFengHaiming.DesignofMicro-controllersControlSystemofElectricRefrigerator[J].JournalofBeijingVocational&TechnicalInstituteofIndustry.,(03).[16]NordicVLSIASAInc.nRF905Datasheet[J].rev1-2.-1-22附录1系统硬件电路图附录2程序代码#include<reg52.h> #include<intrins.h>typedefbitBOOL;typedefunsignedcharBYTE;sbitLCD_RS=P2^6;sbitLCD_RW=P2^5;sbitLCD_EP=P2^7;sbitK5=P2^3;sbitK6=P2^2;sbitK7=P2^1;sbitK8=P2^0;sbitmotor=P1^1;sbitw=P3^5;sbitz=P3^6;unsignedints[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};inti;intc;intx;inty;bitK5_flag;bitK6_flag;bitK7_flag;bitK8_flag;bitK5_stage;bitK6_stage;bitK7_stage;bitK8_stage;externvoidGetTemp();externunsignedintTemperature;unsignedlongLcdOut[5],LedNumVal;voidsystem_Ini(){TMOD|=0x11;TH1=0xD8;//10TL1=0xF0; IE=0x8A; TR1=1;}voiddelay(intms){//延时子程序inti;while(ms--){for(i=0;i<250;i++){_nop_();_nop_();_nop_();_nop_();}}}voidkey5(){ if(K5_flag==1) { if(K5==0) { delay(1); if(K5==0) { K5_flag=0; K5_stage=0; } } } if(K5==1) { K5_flag=1; } }voidkey6(){ if(K6_flag==1) { if(K6==0){ delay(1); if(K6==0) { K6_flag=0; K6_stage=0; } } } if(K6==1) { K6_flag=1; } }voidkey7(){ if(K7_flag==1) { if(K7==0) { delay(1); if(K7==0) { K7_flag=0; K7_stage=0; } } } if(K7==1) { K7_flag=1; } }voidkey8(){ if(K8_flag==1) { if(K8==0) { delay(1); if(K8==0) { K8_flag=0; K8_stage=0; } } } if(K8==1) { K8_flag=1; } }BOOLlcd_bz(){//测试LCD忙碌状态BOOLresult;LCD_RS=0;LCD_RW=1;LCD_EP=1;_nop_();_nop_();_nop_();_nop_();result=(BOOL)(P0&0x80);LCD_EP=0;returnresult;}lcd_wcmd(BYTEcmd){//写入指令数据到LCDwhile(lcd_bz());LCD_RS=0;LCD_RW=0;LCD_EP=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP=1;_nop_();_nop_();_nop_();_nop_();LCD_EP=0;} lcd_pos(BYTEpos){//设定显示位置lcd_wcmd(pos|0x80);}lcd_wdat(BYTEdat){//写入字符显示数据到LCDwhile(lcd_bz());LCD_RS=1;LCD_RW=0;LCD_EP=0;P0=dat;_nop_();_nop_();_nop_();_nop_();LCD_EP=1;_nop_();_nop_();_nop_();_nop_();LCD_EP=0;}lcd_init(){//LCD初始化设定lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0E);//显示开,关光标delay(1);//lcd_wcmd(0x06);//移动光标delay(1);lcd_wcmd(0x01);//清除LCD的显示内容delay(1);}main(){ charj; system_Ini();lcd_init();//初始化LCDdelay(10); c=0x4A;lcd_pos(c);//设置显示位置为第一行的第1个字符j=0; K5_flag=1; K5_stage=1; K6_flag=1; K6_stage=1; K7_flag=1; K7_stage=1; K8_flag=1; K8_stage=1; lcd_wdat(s[j]); while(1){ key5(); key6(); key7(); key8(); GetTemp(); LcdOut[0]=Temperature%10000/1000+0x30;LcdOut[1]=Temperature%1000/100+0x30;LcdOut[2]=Temperature%100/10+0x30; //十位LcdOut[3]=Temperature%10+0x30;//个位 lcd_wcmd(0x80); for(i=0;i<=3;i++) lcd_wdat(LcdOut[i]); if(K5_stage==0) { lcd_pos(c); j++; if(j>9) { j=0;} K5_stage=1; lcd_wdat(s[j]); lcd_pos(c); if(c==0x4B) { x=x/10; x=x*10; x=x+j; } if(c==0x4A) { x=x%10; x=x+j*10; } } if(K6_stage==0) { lcd_pos(c); j--; if(j<0) { j=9; } K6_stage=1; lcd_wdat(s[j]); lcd_pos(c); if(c==0x4B) { x=x/10; x=x*10; x=x+j; } if(c==0x4A) { x=x%10; x=x+j*10; } } if(K7_stage==0) { c++; if(c>0x4B) {c=0X4B; } K7_stage=1; lcd_pos(c); } if(K8_stage==0) { c--; if(c<0x4A) { c=0X4A; } K8_stage=1; lcd_pos(c); }if(x>Temperature) { w=0; z=1; motor=1; } else { w=1; z=0; motor=0; } }}#include<reg52.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitD18B20=P3^7;//18b20的引脚定义sbitrs=P2^4;// 1602引脚定义sbitrw=P2^5;sbite=P2^6;#defineNOP()_nop_()/*定义空指令*/#define_Nop()_nop_()/*定义空指令*/voidTempDelay(ucharus); //18b20的函数声明voidInit18b20(void);voidWriteByte(ucharwr);//单字节写入voidread_bytes(ucharj);ucharCRC(ucharj);voidGemTemp(void);voidTemperatuerResult(void);voiddelay(uchara); //1602分函数声明voidlcd_mang();voidwrite_lcd1602(ucharcmd,uchari);voidini_lcd1602();bitflag;uintTemperature; //用来存放读出温度后的值uchartemp_buff[9];//存储读取的字节,readscratchpad为9字节,readromID为8字节uchar*p,TIM;/*************************************************************Function:延时处理*parameter:*Return:*Modify:*************************************************************/voidTempDelay(ucharus){ while(us--);}/*************************************************************Function:18B20初始化*parameter:*Return:*Modify:*************************************************************/voidInit18b20(void){ D18B20=1; _nop_(); D18B20=0; TempDelay(80);//delay530uS//80 _nop_(); D18B20=1; TempDelay(14);//delay100uS//14 _nop_(); _nop_(); _nop_(); if(D18B20==0) flag=1;//detect1820success! else flag=0;//detect1820fail! TempDelay(20);//20 _nop_(); _nop_(); D18B20=1;}/*************************************************************Function:向18B20写入一个字节*parameter:*Return:*Modify:*************************************************************/voidWriteByte(ucharwr)//单字节写入{ unsignedcharidatai; for(i=0;i<8;i++) { D18B20=0; _nop_(); D18B20=wr&0x01; TempDelay(3);//delay45uS//5 _nop_(); _nop_(); D18B20=1; wr>>=1; }}/*************************************************************Function:读18B20的一个字节*parameter:*Return:*Modify:*************************************************************/unsignedcharReadByte(void)//读取单字节{ unsignedcharidatai,u=0; for(i=0;i<8;i++) { D18B20=0; u>>=1; D18B20=1; if(D18B20==1) u|=0x80; TempDelay(2); _nop_(); } return(u);}/*************************************************************Function:读18B20*parameter:*Return:*Modify:*************************************************************/voidread_bytes(ucharj){ unsignedcharidatai; for(i=0;i<j;i++) { *p=ReadByte(); p++; }}/*************************************************************Function:读取温度*parameter:*Return:*Modify:*************************************************************/voidGemTemp(void){ Temperature=temp_buff[1]*0x100+temp_buff[0];// Temperature*=0.625; Temperature/=16; TempDelay(1);}/*************************************************************Function:18B20ID全处理*parameter:*Return:*Modify:*************************************************************/voidTemperatuerResult(void){ Init18b20(); WriteByte(0xcc);//skiprom WriteByte(0x44);//Temperatureconvert Init18b20(); WriteByte(0xcc);//skiprom WriteByte(0xbe);//readTemperature p=temp_buff; read_bytes(9); GemTemp();}voidGetTemp(){if(TIM==100)//每隔1000ms读取温度 {TIM=0; TemperatuerResult(); }}/*************************************[t1(10ms)中断]中断*************************************/voidT1zd(void)interrupt3{TH1=0xD8;//10TL1=0xF0;TIM++;}2008年11月农机化研究第11期太阳能沼气反应罐温度控制系统的设计韩广伟(临沂师范学院,山东临沂276000)摘要:将基于AT89C51单片机的温度控制系统应用于沼气的生产过程中,降低了不同季节的环境温度与太阳能的变化对沼气发酵的不利影响,实现了沼气生产中对太阳能的高效利用,提高了沼气反应罐工作的稳定性和持久性。为此,对沼气发酵最佳工作温度进行了分析,阐述了控制系统的工作原理,介绍了温度控制系统的主要硬件电路和软件程序设计。实验表明,系统稳定可靠,使用简单,能够满足利用太阳能生产沼气的要求。关键词:太阳能;沼气;温度控制系统;AT89C51;单片机中图分类号:TP237.5;TK513文献标识码:A文章编号:1003—188X(2008)11—0213—030引言随着中国经济的快速发展,对能源的需求日益扩大,能源短缺问题已成为影响中国经济快速发展的一个重要问题。在诸多新能源中,沼气是一种清洁、绿色能源,而利用太阳能技术对沼气的开发已成为成熟、先进的开发手段,具有广阔的市场和发展空间。太阳能沼气一般由太阳能集热装置和太阳能沼气反应罐两部分组成,太阳能沼气能否高效的工作取决于反应罐中的温度是否处于最佳的工作状态,利用太阳能集热装置存在部分时间反应器内的温度过高的问题,因此需要对太阳能沼气反应罐内的温度进行控制,使其有更长的时间处于最佳的工作状态。1沼气发酵最佳工作温度分析温度对沼气发酵的影响很大,沼气发酵的温度范围一般在l0~60℃之间,低于l0qC或高于60℃产气率会急剧下降。沼气发酵温度一般分为:高温发酵、中温发酵和常温发酵。高温发酵工艺指发酵料液温度维持在50~60℃的范围内,实际控制温度多在(53±2)℃;中温发酵工艺指发酵料液温度维持在(35±2)℃的范围之问;常温发酵工艺指在自然温度下进行沼气发酵。农村常以粪便为发酵原料,以中温厌氧发酵瓶的底物为接种物,维持中温发酵的能耗较少,沼气发酵能总体维持在一个较高的水平,产气速度比较快,料液基本不结壳,可保证常年稳定运行。收稿日期:20o8一叭一l0作者简介:韩广伟(1973一)男,山东菖南人,讲师,在职硕士,(E—mail)h~ly@l26.corn为了达到全年均匀供气,把太阳能沼气反应罐最佳温度定在33~37℃之间。太阳能沼气反应罐温度控制系统应能根据罐内沼气压力、温度在夏季外界气温较高时中断太阳能集热;春秋季节阳光充分时适当使用太阳能集热,多余的热量可供早晚或没有太阳的时间使用;冬季应当全负荷使用太阳能集热。太阳能集热器收集的热能能使反应罐尽可能地处于最佳的温度状态。2系统的整体设计2.1系统的工作原理本系统经过采集太阳能沼气反应罐内的压力和温度数据,经单片机的运算进而驱动步进电机控制节流阀的通断,从而控制太阳能沼气反应罐内的温度。系统上电自检后,能够显示当前沼气反应罐中的温度、压力,当压力超过设定值时(即使温度低于l0℃当压力低于设定压力,温度高于最佳温度的上限,沼气反应罐中断与集热器的联通;当压力低于设定气压,温度低于设定温度的下限,联通集热器。2.2系统的整体设计框架根据以上工作过程,本系统以AT89C51单片机为核心,该单片机本身具有4kEPROM,因此不用外扩EPROM,利用Pl、P3作为输入输出I/O,显示部分采用74LS164驱动LED,经过步进电机来控制阀门从而控制太阳能集热器与反应罐的联通。系统具体模块有:传感器A/D转换电路、键盘及接口电路、数码显示电路、单片机外围电路、步进电机驱动电路。系统硬件结构示意图,如图1所示。2008年11月农机化研究第11期嘲3系统主要硬件电路的设计3.1温度数据采集电路温度数据采集电路如图2所示。’ycc图2温度数据采集电路由传感器AD590KM采集沼气反应罐内的温度,由ADC0809转换成数字量送至AT89C51单片机的PO口作为数据输入,并由单片机的P1口送至74LS164驱动LED显示温度。3.2罐内压力数据采集电路压力传感器用来将被测气压转换为电压信号,用V/F转换器可把气压传感器输出的电压信号转换成具有一定频率的脉冲信号以便用单片机接收该脉冲信号,并根据单位时间内得到的脉冲数,依据电压与频率的线性关系式计算出所对应的气压值。本设计选用Motorola的MAX4100A气压传感器与LM331电压/频率转换芯片来测量绝对气压值。LM331外围电路如图3所示,fn接AT89C51单片机P3.4。cite13:擘ll一f03.3驱动控制电路对步进电机的控制采用用PMM8713四相步进电机的脉冲分配器、SI一7300A两相或四相功率驱动器,组成四相步进电机功率驱动电路,以提高集成度和可靠性,步进电机控制框图如图4所示。拎制器图4步进电机控制框图用PMM8713步进电机环形分配器与SI7300A步计方法,调节器应为PID调节器,采用PID控制算法。进电机功率放大器构成一个四相步进电机功率驱动电另外,能够用单片机的一个定时器作为软件看门狗,路,PMM8713采取单脉冲输入、1—2相励磁方式,电路当程序陷入死循环后,

温馨提示

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

评论

0/150

提交评论