版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
word文档可自由复制编辑word文档可自由复制编辑word文档可自由复制编辑编号:题目:院(系):专业:学生姓名:学号:指导教师:职称:题目类型:理论研究实验研究工程设计工程技术研究软件开发2013年10月21日摘要本毕业设计提出一种基于AT89C51单片机为核心的温度采集系统,并采用数字化单总线技术的设计方案应用于多路温度采集系统中。方案采用了一种新型数字温度传感器DS18B20,利用DS18B20温度传感器将温度的变化,变换成电流的变化,再转换为电压变化输入模数转换器,通过单线总线传给AT89C51单片机,AT89C51单片机把数据通过液晶显示器LCD1602实时显示不同方位的温度变化。系统对多点的温度进行实时巡检,同时能够通过设定的指令对温度进行监控。温度传感器DS18B20负责温度的采集,单片机将从DS18B20发出的信息读取的温度并与有效温度的上下极值进行比较,若超过有效温度范围则启动报警系统,否则继续从DS18B20读取温度。该系统具有实用性强、可靠性高、测量精度高等特点。测温范围在-55℃~+125℃。关键词:数字温度传感器(DS18B20);单片机(AT89C51);液晶(LCD1602)显示器。AbstractThisdesignisproposedbasedonAT89C51microcontrollerasthecoreofthetemperaturecontrolsystemanditsdigitalsingle-bustechnologyusedinthedesignofthgreenhousetemperaturemeasurementsystem.ProgramusesanewtypeofdigitaltemperatursensorDS18B20,useDS18B20temperaturesensorembeddedinsidethegreenhousetemperature,transformedintothecurrentchanges,convertedtovoltageinputandthenaADC,thebuspassedthroughthesingleAT89C51comicic-rocontrollerAT89C51microcontrollerinputandoutputthroughtheserialporttounat-ewiththePCmachine.Systemforreal-timemulti-pointinspectionoftemperature,w-hileprovidinginstructiobasedonthetemperatureofPC-timeacquisition.Tempsen-sorfortemperatureDS18B2collection,microcontrollerreadsthemessagefromtheD-S18B20temperatureandwiththeeffectivetemperatureoftheupperandlowerextm-comparison,ifmorethantheeffectivetemperaturerange,startalarmsystem,andtothePC,sendtheappropriatesigcontinuetoreadfromtheDS18B20temper-rure.Thesystemhasapracticalandhighreliability。Keywords:word文档可自由复制编辑word文档可自由复制编辑word文档可自由复制编辑目录课题的背景及其意义3本毕设主要内容31.2.1设计任务与要求4总体设计方案4方案设计与论证4传感器部分4控制部分5系统方案6系统设计原理73.1单片机的选择73.1.1AT89C51单片机的功能特点83.2温度传感器的选择103.2.1DS18B20的简介103.2.3DS18B20内部结构12硬件电路设计15电源154.1.1电源电路15功能按键162.1按键电路164.2.2液晶显示电路17温度采集电路17报警电路设计18基于AT89C51简易转数测量系统复位电路184.6基于AT89C52简易转数测量系统时钟电路194.5整体电路20软件设计20概述20软件设计总流程21子程序设计235.3.1初始化LCD160223按键扫描23温度的设定子程序246系统调试及结果分析257结论25致谢26附录27原理图27PCB图28源程序28引言温度是一个十分重要的物理量,对它的测量与控制有着十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。在人类的生活环境中,温度扮演者极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。1课题的背景及其意义温度是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量。在工、农业生产和日常生活中,占据着极其重要地位。工业发展与是否能掌握温度有着密切的联系。在冶金、钢铁、石化、水泥、玻璃、医药等行业都与之有关,可以说几乎80%的工业部门都不得不考虑温度对自身系统的影响。温度不但对于工业如此重要,在农业生产中温度的监测与控制也有着十分重要的意义。我国作为世界上最大的农业国,但是人均占有耕地面积少,这对农业的发展有着极大的限制。因此,设计一种能够进行多路温度检测系统具有较为广泛的应用价值。多路温度测量显示是近几年的研究课题,随着传感技术与通讯技术的发展,单片机的出现,温度测量仪器应运而生,最近几年的研究更是迅速。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。因此,单片机对温度的检测与控制问题是一个工农业生产中经常会遇到的问题。基于此,本毕业设计是围绕基于单片机多路温度检测与采集系统来开展相关的应用研究工作。出现了基于新型AT89C51单片机和数字温度传感器DS18B20的多路温度测量仪器。1.1本毕设主要内容1.2.1设计任务与要求温度检测:通过传感器和单片机的连接,能实时准确检测到现场温度。温度显示:把现场实时检测到温度值显示出来。报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出声光报警提示。1.2.2设计目的学会运用keil软件编写程序,提高分析程序的能力。进一步熟悉AT89C52单片机外部引脚的线路连接方法。熟悉LCD1602使用方法。学会使用Proteus仿真软件对设计的电路进行仿真,验证电路功能是否正确。学会使用DXP2004制作电路图。熟悉制作电路板的流程。2总体设计方案2.1方案设计与论证多路温度采集电路设计系统有则共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。所以多路温度检测系统的设计的关键在于两部分:温度采集即温度传感器的选择和系统主控单元的设计。2.2传感器部分方案一:热敏电阻作为传统的温度传感器,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差。使用时,将其串接在电路中,在一般情况下,其阻值很小,损耗也很小,不影响电路正常工作;但若有过流发生,其温度升高,它的阻值随之急剧升高,达到限制电流的保护作用,避免损坏电路中的元器件。当故障排除后,温度自动下降,又恢复到低阻状态,因此对于检测温度的信号是不适用的。在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案二:在多路温度采集电路设计系统中,传统的模拟信号远距离测温系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外传统的测温方法是将模拟信号远距离采样进行A/D转换,一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案。采用数字温度芯片DS18B20测量温度,输出信号全数字化,便于单片机处理及控制。且该芯片的物理化学性很稳定,元件线形较好。其测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。热敏电阻的精度较差为±2°C。新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大,且由于AT89C51可以带多个DSB1820,因此可以非常容易实现多路温度的测量。轻松的组建温度传感器网络。2.3控制部分方案一:此方案采用PC机实现。它可在线编程,可在线仿真的功能,这让调试变得方便。但是PC机输出信号不能直接与DS18B20通信。需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,这不利于工作。方案二:此方案采用AT89C51八位单片机实现。AT89C51的时钟为12M,I/O口可达32个,高的时钟频率和丰富的I/O,都为实现电路功能提供了非常有利的条件。同时也AT89C51内含4KBFLASHROM,开发环境友好,易用、方便,大大加快本系统设计开发。使操作更为简洁、易懂。实时显示电路的设计,使温度信息更迅速,直观地发布,这些都提高了系统的可行性。而且单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多路DS18B20word文档可自由复制编辑word文档可自由复制编辑word文档可自由复制编辑控制工作。另外AT89C51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。2.4系统方案综上所述,温度传感器以及主控部分都采用第二方案。系统设计采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想,用DS18B20和AT89C51单片机一起组成了温度采集系统。DS18B20是在分立式温度采集模块上发展而来的集温度传感器和A/D转化于一体的芯片,该芯片能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。AT89C51单片机可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根I/O口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。同时其“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入了全新的概念。系统主要包括三大模块:控制模块、温度采集模块、温度显示模块、报警模块等。采用系统总方案如下图1:电电源图1系统总方案图控制模块功能:控制模块在系统的功能是控制温度采集模块完成温度采集并将采集到的温度读入控制模块的数据寄存器,再将从温度采集模块读取的温度数据写入显示模块并控制显示模块完成温度的显示。温度采集模块功能:温度采集模块的主要功能是通过温度传感器感应温室温度并转化成模拟信号,通过转化模块将模拟信号转化成数字信号,并存取温度数据。温度显示模块功能:温度显示模块的主要功能是在控制模块的控制下将控制模块写入的数据显示在液晶屏上,便于读取温度数值。报警模块功能与设定的报警温度上下限比较,超过限度后通过扬声器与灯光报警。同时处理后把报警的方向的信息送到LCD1602中显示出来。2.5系统设计原理利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警上下限比较,超过限度后通过扬声器报警。同时处理后的数据送到LCD1602中显示。3硬件的设计本文已经在前面提出多路温度检测系统的设计的关键在于温度采集部分和系统主控单元部分的设计。因此系统硬件的选择主要就是温度传感器主控单片机的选择。3.1单片机的选择所谓单片机(m1crocontroller)是指在一个集成芯片中,集成微处理器(CPU)、存储器、基本的I/O接口以及定时/计数、通信部件,即在一个芯片上实现一台微型计算机的基本功能。世界上最早的单片机是1974年美国仙童公司研制的F8单片机,但其中最具典型性的当数Intel公司的MCS-51系列单片机。因此,在本课题设计的多路温度采集设计系统中,采用单片机实现温度的控制。在单片机选用方面,因为MCS-51系列单片机拥有基于复杂指令集(CISC)的单片机内核,虽然其速度不快,12个振荡周期才执行一个单周期指令,但其端口结构为准双向并行口,可兼有外部并行总线,故使其扩展性能非常强大。51系列的内部硬件预设,可用特殊功能寄存器对其进行编辑。所以,本系统中的单片机选用INTEL公司生产AT89C51芯片,AT89C51单片机是INTEL公司新近推出的高档型MCS-51系列单片机中的增强型产品,是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制造。片上Flash允许程序存储器在系统可编程(ISP),亦适于常规编程器。3.1.1AT89C51单片机的功能特点AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机。片内含4Kbytes可反复擦写的只读程序存储器(PEROM)和128bytes随机存取数据存储器(RAM)。兼容标准MCS-51指令系统,片内置8位中央处理器(CPU)和FLASH存储单元。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,能灵活应用于各种控制领域。AT89C51主要性能参数:4K字节可编程闪烁存储器寿命:1000写/擦循环全静态工作:0Hz-24MHz三级程序存储器锁定128³8位内部RAM两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3.1.2AT89C51单片机的引脚说明在外部结构上,AT89C51单片机和MCS-51系列单片机的结构相同,有三种封装形式,分别是PDIP形式、PLCC形式、TAFP形式。其中,常用的为PDIP形式,其40针脚按其功能可分为3部分:I/O口线(P0~P3),控制线(ALE、EA、PSEN、RST),电源及时钟(GND、VCC、XTAL1、XTAL2)。其PDIP封装,40针脚形式如图2:图2AT89C51PDIP封装引脚图VCC:供电电压+5V。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)这是由于上拉的缘故。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.2温度传感器的选择温度是表征物体冷热程度的状态量,是现代科学技术中最基本、最重要的物理量。与温度变化有关的物质属性很多,因而温度测量的仪器也是多种多样的。常用的温度测量仪有热电阻、热电偶、PN结温度传感器、集成温度传感器等。热电阻它的优点是灵敏度高,工作温度范围宽,稳定性好,过载能力强,体积小。但它的不足之处在于非线性和互换性差。热电偶测量精度高,热电动势与温度在小范围内基本呈单值、线性关系,稳定性和复现性较好,响应时间较快;测温范围宽,高温热电偶测温上限可达2800℃。PN结温度传感器利用晶体二极管、三极管的PN结电压随着温度变化而变化的原理制成。线性度好,热惯性小,灵敏度高。集成温度传感器是将测温元件、放大电路、偏置电路及线性化电路集成在同一芯片上的温度传感器。相对其它传感器有较好的线性度和一致性,且体积小,使用方便。温室是一个有较大惯性的被控对象,温度的变化速度较慢,因而不需要传感器的反应速度太高;但要求传感器有优良的物理及化学稳定性。用的较多的是以铂电阻为代表的模拟传感器和以DS18B20为代表的数字传感器。考虑到铂电阻需要信号调理电路,将电阻信号转换为电压信号,经过A/D转换后才能被单片机接受,信号调理电路的相对复杂,抗干扰性比较差,而且价格较高,而DS18B20不仅价格便宜而且使用方便、测温准确、精度较高。为了节省成本,提高效率,方便采集系统以后的进一步扩展和完善,本设计系统的采集模型采用DS18B20单总线数字式温度传感器。3.2.1DS18B20的简介数字温度传感器DS18B20是DALLAS公司生产的基于串行接口的一线式数字温度传感器,它是将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上,传感器直接输出的就是温度信号数字值的全新传感器。有3引脚TO-92小体积封装形式。具有一线总线、体积更小、适用电压更宽、而且经济等特点。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DSl8B20具有如下特征:采用单总线技能,与单片机通信只须要一根I/O线,在一根线上可挂接多个DSl8B20。低压供电,电源范围3~5V,可以本地供电,也可以直接从数据线上窃取电源(寄生式供电方式)。每只DSl8B20具有一个独立的、不可修改的64位序列号,根据序列号可以访问对应的器件。测温范围为一55℃~+125℃,在一10℃~85℃范围内误差为±0.5℃。可编程数据为9~12位,其转换12位的温度时间为750ms(最大)。DSl8B20可将检测到的温度值直接转化成数字量,并通过串行通信的方式与主控制器执行数据通信。3.2.2DS18B20工作原理DS18B20测温原理:由于低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在一个对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线形,其输出用于累加器1的预置值。其原理图如3:图3DS18B20工作原理图3.2.3DS18B20内部结构(1)DS18B20的引脚说明图3.3DS18B20引脚图4DS18B20的DIP40封装图(2)DS18B20的内部结构图5:4所示:GND——接地;DQ——数据输入输出。漏极开路单线接口,也在寄生电源模式时给设备提供电源;VDD——可选的电源电压脚。VDD在寄生电源模式时必须接地。
图5DS18B20的内部结构图DS18B20有4个主要的数据部件:64位激光ROM。64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。温度灵敏元件。非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如表1:表1TMTMR1R011111MSB LSB其中,TM:测试模式标志位,出厂时被写入0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。配置寄存器与分辨率关系如表2:表2R0R0R1温度计分辨率/bit最大转换时间/ms00993.750110187.510113751112750(3)高速暂存存储器高速暂存存储器由9个字节组成,其分配如表3所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表3TL配置TL配置保留保留保留8位CRCLSB MSB温度值格式图DS18B20温度数据表4:表42232221202-12-22-32-4MSBLSBSSSSS262524典型对应的温度值表5:表5温度温度/℃二进制表示十六进制表示+125+25.0625+10.125+0.50-0.5-10.125-25.0625-55000001111101000000000001100100010000000010100010000000000000100000000000000000001111111111111000111111110101111011111110011011111111110010010000D0H07H0191A2H000008H0000HFFF8HFF5EHFE6FHFC90H(4)DS18B20使用的注意事项DS1820虽然具有测温系统简单、测温精度高、连接方便、占用P口线少等优点,但在实际应用中也应注意以下几方面的问题:①对硬件结构简单的单线数字温度传感器DS18B20进行操作,一定要注意DS18B20对程序和电气参数的严格要求。②连接DS18B20的总线电缆是有长度限制的。所以在试验中,要考虑总线的选择和分布及与之相关的问题。③有多个测温点时,应考虑系统能实现传感器出错自动指示,进行自动DS18B20序列号和自动排序,以减少调试和维护工作量。④在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,实际应用时,不能挂接过多的DS18B20,若是挂得太多就要解决其驱动能力问题。⑤在DS18B20测温实际应用中,一定要确保每个DS18B20都接触良好否则系统会陷入死循环,这一点在进行DS1820硬件连接和软件设计时也要给予一定要注意。4硬件电路设计系统电路主要功能包括:多路温度采集及其相关处理,实时显示温度信息,硬件设计主要包括以下几个模块:电源电路、按键电路、液晶显示电路、温度采集电路、报警电路、复位电路、时钟电路等。具体硬件电路框图结构如图6:电源电源图6硬件电路框图结构4.1电源4.1.1电源电路因为单片机工作电源为+5V,且电路功耗很小。采用电池组和LM7805三端稳压片即可满足要求,使移动作业更方便。LM7805系列为3端稳压器件,能提供5V的输出电压。应用范围广,内含过流和过载保护电路,带散热片时能持续提供1.5A的输出电流。具体电路如下图7: 图7电源电路主要特点:具有最大输出电流可达1.5A、输出电压有5V、过热保护、短路保护等特点电源电路其主要作用是为单片机提供工作电源。4.2功能按键4.2.1按键电路单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。具体电路如下图8:图8按键电路开关状态的输入:按键开关状态的可靠输入有两种解决方法。一种是软件去抖动:它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。另一种为硬件去抖动:即为按键添加一个锁存器。两种方法都简单易行,本设计采用的是软件防抖动方式。4.2.2液晶显示电路设计采用的是液晶LCD1602来显示温度、报警方位等。在液晶显示同一画面上显示三个方位实时温度的信息及温度超过报警信息,具体电路图如下图9:图9液晶显示电路4.3温度采集电路DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。硬件连接电路如下图10:图10温度采集电路本系统为多路温度采集电路设计系统设计。DS18B20采用外部供电方式,理论上可以在一根数据总线上挂256个DS18B20,但实际应用中发现,如果挂接25个以上的DS18B20仍旧有可能产生功耗问题。另外单总线长度也不宜超过80M,否则也会影响到数据的传输。在这种情况下我们可以采用分组的方式,用单片机的多个I/O来驱动多路DS18B20。4.4报警电路设计为了实现多点温度检测报警系统,本设计采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出声光报警信号。硬件连接电路如下图11:图11报警电路4.5基于AT89C51简易转数测量系统复位电路在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。复位电路通常采用上电自动复位和按钮复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。除了上电复位外,有时还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源VCC接通而实现的。图12复位电路图12兼有上电复位和按钮复位的电路。在单片机设计中,若有外部扩展的I/O接口电路需初始复位,如果它们的复位端和MCS-51单片机的复位端相连,复位电路中的R、C参数要受到影响,这时复位电路中的R、C参数要统一考虑以保证可靠的复位。如果单片机MCS-51单片机与外围I/O接口电路的复位电路和复位时间不完全一致,使单片机初始化程序不能正常运行,外围I/O接口电路的复位也可以不和MCS-51单片机复位端相连,仅采用独立的上电复位电路。一般来说,单片机的复位速度比外围I/O快些。若RC上电复位电路接MCS-51单片机和外围电路复位端,则能使系统可靠地同步复位。为保证系统可靠复位,在初始化程序中应用到一定的复位延迟时间。复位电路软件程序跑飞或者硬件发生错误的时候产生一个复位信号,控制MCS-51单片机从0000H单元开始执行程序,重新执行软件程序。此电路的输出端RESET接在单片机的复位引脚。4.6基于AT89C52简易转数测量系统时钟电路时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。内部时钟方式:内部时钟方式电路图如下图13所示。图13图13时钟电路4.5整体电路电路原理图(见附录)5软件设计5.1概述整个系统的功能是由硬件电路配合软件来实现的,当硬件的型号确定下来后也就有了与此相匹配的软件。因此是由硬件来确定软件的。本设计系统由硬件来看可以把软件分成两大不同的功能:一是系统的主要控制程序,它是整个控制系统的核心,用于控制各模块工作的;二是系统的执行程序,它是用来实现各模块实质性的功能如测量、计算、显示等。每一个执行程序也就是一个小模块功能的实现。这里将各主要的执行模块列出,并为每一个执行模块进行功能定义和接口定义。当各执行模块完成之后就可以完成系统的主要控制程序。5.2软件设计总流程操作说明:本系统用6个按键实现功能,分别为:复位键、页面切换键、高温设置键、低温设置键、确认键、累加键“+”、累减键“-”。主界面第一行显示当前温度,第二行显示报警的上下温度值。如下图14所示。图14主界面操作方法:上限温度设置方法为按下高温设定键,输入格式为xxx.x,然后按下确认键确认。下限温度设置方法为按下低温设置键,输入格式为xxx.x,然后按下确认键。本系统软件设计主要包括主程序,显示子程序、按键扫描子程序、设置温度子程序几部分组成。主程序流程图如下图15所示。主程序中,首先初始化LCD1602,然后检测18B20是否工作正常,随后进行键盘扫描。扫描后从中读取之前设置温度的上下限,并从DS18B20中读取当前的温度进行计算,如果达到报警要求,报警电路进行报警。进行键盘输入,可选择是否停止报警。和是否更改上下限温度,设置后按复位键程序重新进行计算,并开始计算当前温度是否在设定值内。复位键为复位电路中的复位按键。图15图15主程序流程图程序从主函数开始先进行初始化,DS18B20是一个数字集成的温度转化芯片,对当前温度进行转化处理。同时DS18B20是以一线总线传输的形式传给AT89C51,再AT89C51译码转换到LCD1602液晶显示当前温度,人工按键设定温度值是以LCD1602液晶显示的形式直观的反应设定的报警温度,使用者可以根据要求设定报警的上下限温度(-55℃~+125℃可调),AT89C51根据人工按键设定值与当前温度值进行比较,若当前温度值高于或低于设定值则均报警电路反应,有效的实施监控。数据采集及算法转化框图如图16图16DS18B20工作流程图DS18B20可直接将被测温度转换成串行数字信号,供单片机处理,通过对DS18B20编程可以实现9~12位的温度读数,并可分别在93.75ms和750ms内完成9位和12位的数字量。其测温范围-55℃~+125℃,最大分辨率为0.0625℃,在-10℃~+85℃范围内其测温准确度为±0.5℃。DS18B20采用一线总线的传输的形式可以直接把数字量和51单片机(本设计使用AT89C51单片机)进行通信译码。程序开始初始化,再经DS18B20,ROM操作指令识别判断,再进行存储操作指令,转化处理,读取当前温度值。根据上边所画的流程图可以用C语言编写出对应的源程序如附录所示。5.3子程序设计5.3.1初始化LCD1602由于1602是一个慢速设备,所以在初始化时,首先执行一段延时的程序,等待图17图17初始化LCD流程图对键盘扫描的编程采用线翻转法实现,分为两步:1、将列线作为输出线,行线作为输入线。置输出先全部为0,此时行线中呈低电平0的为按键所在行,如果全都不是0,则没有按键按下;2、将第一步反过来,即将行线作为输出线,列线作为输入线。置输出线全部为0,此时列线呈低电平0的为按键所在的列。这样就能得到按键的具体位置。5.4按键扫描图18键盘扫描子程序5.5温度的设定子程序通过LCD液晶显示设定值,使用键盘进行高温报警与低温报警值的设定。如图19,必须按照规定的格式进行设置,否则出现乱码。源程序见附录。图19温度设定的子程序流程图6系统调试及结果分析测试环境及工具测试温度:0~100摄氏度。测试仪器及软件:数字万用表,温度计0~100摄氏度,串口调试助手。测试方法使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,按键电路,显示电路,温度测试电路等)。观察显示数据是否相符合即可。采用温度传感器和温度计同时测量多点水温变化情况,观察显示电路是否正常。并记录各点温度值,与实际温度值比较,得出系统的温度指标。测试结果分析在所设计的测控系统中,仅实现了对温室温度的有效测量,还有其他各方面的和温室环境有关的因素没有纳入该系统,有待完善。目前,本人已经基本完成了对温室温度的采集和显示的系统硬件设计制作,并对该装置进行了检验,结果表明,基本达到设计要求。由于本人的经验不足,技术水平有限,因此本文论述的还只是一个基本模型,实验过程中的实际实践不多,如果要将该方案应用于实际用途,还需要进一步实践调试。7结论通过分析对比各种不同的温度传感器,选定DS18B20,这种单总线数字温度传感器的通信方式比较独特,软件编写要求的比较新颖,特点突出。用其构建的系统有很多优点:硬件连线简单,省去了使用模拟传感器要进行放大、A/D转换等工作,由于它的级联功能,一条总线可挂接多个传感器测量不同位置的温度,根据DS18B20唯一的序号识别不同传感器在各自位置的温度。需要注意的是,在系统安装及工作之前应将主机逐个与DS1820挂接,以读出其序列号。另外,由于DS1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对DS1820和各种操作必须按协议进行,即:初始化DS1820(发复位脉冲)—发ROM功能命令—发存储器操作命令—处理数据。现场温度直接以“一线总线”的数字方式传输,每一个自带地址,大大减少了系统的电缆数,提高了系统的稳定性和抗干扰性。通过调试成型系统发现了DS18B20除了上述优点外,还有一些缺点,如:简单的硬件连接的代价是复杂的软件时序,DS18B20在测量温度的时候,灵敏度不够高,温度快速变化时无法迅速显示出其变化。通过一系列的实验发现:由DS18B20构建的测温小系统适用于环境温度监控,对温度小变化较敏感;不适合应用于要求实时性强、温度跨度大的测温方式。致谢通过本次毕业设计,令我学到了很多东西受益匪浅,仿佛又经历了一次系统学习,在作毕业设计前,一直认为没有什么困难,但在实际运作过程中才清楚地认识到自己的不足和短练,端正了学习态度。本设计能够顺利的完成得到了老师和同学大力支持和帮助,尤其是我的指导老师周老师,在百忙之中抽出宝贵的时间,仔细耐心的给予了本人悉心地指导,对我成功完成本次设计带来了很大的帮助。在课题完成过程中,还得到了许多老师的指导和帮助,老师给我提供了很多思路与经验,对我深入理解课题的有关知识与方法起到了重要作用。在此,我对这些给予帮助的老师也表示诚挚的谢意。同时在和同学们之间的相互探讨也使我获益匪浅。在此,对他们表示由衷的感谢!最后,也非常感谢学习期间的授课老师和同学在学习中给我的教导和帮助,谢谢!衷心的感谢在百忙之中评阅论文和参加答辩的各位专家、教授!由于本人水平有限,难免有考虑不足之处,所以恳请老师同学们批评指正。参考文献张鑫.单片机原理及应用[M].北京:电子工业出版社,2005胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2002忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,1997东耀,汪仁煌.数字温度传感器在仓库温度检测系统的应用[J].传感器世界,2001(12):30-33.伟正.单线数字温度传感器的原理与应用[J].电子技术应用,2000,6.66-68一线数字温度传感器资料[M].武汉:武汉力源电子有限公司,1996[7].黄贤武,郑筱霞,曲波等.传感器实际应用电路设计[M].成都:电子科技大学出版社,1997.郝鸿安。常用数字电路应用手册[M].北京:中国计量出版社,1987周云波.由DS18B20单线数字温度计构成的单线多路温度测量系统[J].电子技术应用,1996(2):15-20.吉鹏,马云峰等.微机原理与接口技术[M].北京:高等教育出版社,2001.贾振国.DS18B20及高精度温度测量的实现[J].电子技术应用,2000(1):58-59.月霞,孙传友.DS18B20硬件连接及软件编程[J].传感器世界,2001(12):25-29附录原理图 PCB图源程序//*主程序#include<REGX51.H>#include"1602.h"#include"DS18B20.h"#include"scan.h"#defineuintunsignedint#defineucharunsignedcharsbitsp=P3^7;word文档可自由复制编辑word文档可自由复制编辑word文档可自由复制编辑ucharflge_page=0;//页面标志位ucharflag_a=0,flag_b=0,flag_c=0;uinth_a,l_a,h_b,l_b,h_c,l_c;//设定值unsignedchartemp_valuep[]={0,0,0,0};unsignedchartemp_valuep1[]={0,0,0,0};voiddelay(unsignedinta){while(a--);}/*显示采集温度值值*/voiddisplay(unsignedintdata1,unsignedcharaddr){temp_valuep[0]=data1/1000;temp_valuep[1]=data1%1000/100;temp_valuep[2]=data1%1000%100/10;temp_valuep[3]=data1%1000%100%10;if(data1>1000)//温度值大于100时,百位显示{w_cmd(addr);w_dat(temp_valuep[0]+48);w_cmd(addr+1);w_dat(temp_valuep[1]+48);w_cmd(addr+2);w_dat(temp_valuep[2]+48);w_cmd(addr+3);w_dat(0x2e);w_cmd(addr+4);w_dat(temp_valuep[3]+48);}else//温度值小于100时,百位不显示{w_cmd(addr);w_dat(20);w_cmd(addr+1);w_dat(temp_valuep[1]+48);w_cmd(addr+2);w_dat(temp_valuep[2]+48);w_cmd(addr+3);w_dat(0x2e);w_cmd(addr+4);w_dat(temp_valuep[3]+48);}}/*显示设定温度值值*/voiddisplay_set(uintset_value,ucharaddr){temp_valuep1[0]=set_value/100;temp_valuep1[1]=set_value%100/10;temp_valuep1[2]=set_value%100%10;if(set_value>100)//温度值大于100时,百位显示{w_cmd(addr);w_dat(temp_valuep1[0]+48);w_cmd(addr+1);w_dat(temp_valuep1[1]+48);w_cmd(addr+2);w_dat(temp_valuep1[2]+48);}else//温度值小于100时,百位不显示{w_cmd(addr);w_dat(20);w_cmd(addr+1);w_dat(temp_valuep1[1]+48);w_cmd(addr+2);w_dat(temp_valuep1[2]+48);}}voidmain(){init_LCD();//1602初始化ds1820rst();sp=0;while(1){key_pre();/*判断采集到的温度是否超过设定的温度值*//*if(flge_page==0){if((read_temp(1)>(h_a*10))||(read_temp(1)<(l_a*10))){disp_HZ(0xcd,"A");flag_a=1;}else{disp_HZ(0xcd,"");sp=0;flag_a=0;}if((read_temp(2)>(h_b*10))||(read_temp(2)<(l_b*10))){disp_HZ(0xce,"B");flag_b=1;}else{disp_HZ(0xce,"");sp=0;flag_b=0;}if((read_temp(3)>(h_c*10))||(read_temp(3)<(l_c*10))){disp_HZ(0xcf,"C");flag_c=1;}else{disp_HZ(0xcf,"");flag_c=0;}if((flag_c=1)||(flag_b=1)||(flag_a=1)){sp=~sp;}else{sp=1;}}*/}}//*LCD1602液晶显示程序#defineuintunsignedint#defineucharunsignedcharsbitrs=P2^6;//寄存器选择位,将RS位定义为P2.0引脚sbitrw=P3^6;//读写选择位,将RW位定义为P2.1引脚sbite=P2^7;//使能信号位,将E位定义为P2.2引脚voiddelay2(unsignedinttt){while(--tt);}ucharinver_8(tep)//数据口倒序{tep=((tep&0xf0)>>4)|((tep&0x0f)<<4);tep=((tep&0xcc)>>2)|((tep&0x33)<<2);tep=((tep&0xaa)>>1)|((tep&0x55)<<1);return(tep);}voidw_cmd(unsignedchardd)//写指令{rs=0;e=0;P0=inver_8(dd);delay2(50);e=1;delay2(50);e=0;}voidw_dat(unsignedchardd)//写数据{rs=1;e=0;P0=inver_8(dd);delay2(50);e=1;delay2(50);e=0;}voiddisp_HZ(unsignedcharaddr,unsignedchar*s)//调用这个直接写汉字{w_cmd(addr);while(*s){w_dat(*s);s++;}}voidinit_LCD()//1602初始化{rw=0;w_cmd(0x38);//注意顺序,设置工作方式,显示模式设置w_cmd(0x08);//注意顺序,关闭显示w_cmd(0x01);//清屏delay2(10);//必须延时w_cmd(0x06);//光标²画面滚动模式设置w_cmd(0x0c);//显示及光标模式设}//*DS18B20程序#defineuintunsignedint#defineucharunsignedcharsbitDQ=P3^3;ucharstr1[]={0x28,0xfc,0xaa,0x1f,0x05,0x00,0x00,0x08};//A路温度传感器的序列号ucharstr2[]={0x28,0x41,0xee,0x1e,0x05,0x00,0x00,0x3c};//B路温度传感器的序列号ucharstr3[]={0x28,0xf7,0x68,0xd5,0x04,0x00,0x00,0xd8};//C路温度传感器的序列号voiddelay_18B20(uinti)//延时1微秒{while(i--);}voidds1820rst()/*ds1820复位*/{ucharx=0;DQ=1;//DQ复位delay_18B20(4);//延时DQ=0;//DQ拉低delay_18B20(100);//精确延时大于480usDQ=1;//拉高delay_18B20(40);x=DQ;delay_18B20(40);}uchards1820rd()/*读数据*/{uchari=0;uchardat=0;TR1=0;TR0=0;for(i=0;i<8;i++){DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;delay_18B20(3);}TR1=1;TR0=1;return(dat);}voidds1820wr(uchardat)/*写数据*/{uchari=0;TR1=0;TR0=0;for(i=0;i<8;i++){DQ=0;DQ=dat&0x01;delay_18B20(5);DQ=1;dat>>=1;}TR1=1;TR0=1;}unsignedintread_temp(ucharz)/*读取温度值并转换*/{uchara,b,j;unsignedinttvalue;floattt;ds1820rst();ds1820wr(0x55);if(z==1){{for(j=0;j<8;j++)ds1820wr(str1[j]);//发送18B20的序列号,先发送低字节}}if(z==2){{for(j=0;j<8;j++)ds1820wr(str2[j]);//发送18B20的序列号,先发送低字节}}if(z==3){{for(j=0;j<8;j++)ds1820wr(str3[j]);//发送18B20的序列号,先发送低字节}}ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;tt=tvalue*0.0625;tvalue=tt*10;return(tvalue);}voidDS18B20_init(){ds1820rst();delay_18B20(5);ds1820wr(0xcc);ds1820wr(0x44);}//*按键扫描程序#defineuintunsignedint#defineucharunsignedcharsbitkey_page=P2^0;//切换页面按键sbitkey_back=P2^1;//返回初始页面sbitkey_in=P2^2;//设定最高温度加sbitkey_rd=P2^3;//设定最高温度减sbitkey_Lin=P2^4;//设定最低温度加sbitkey_Lrd=P2^5;//设定最低温度减ucharflge_page;//页面标志位uinth_a=34,l_a=32,h_b=34,l_b=32,h_c=34,l_c=32;//各路设定初始值voiddisplay(unsignedintdata1,unsignedcharaddr);voiddisplay_set(uintset_value,ucharaddr);voiddelay(unsignedinta);voiddisp_HZ(unsigne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业合同范本查询与咨询服务
- 2024年公司食堂餐饮服务标准协议版
- 广播电视台开荒保洁施工合同
- 2024年度停车场经营管理合同3篇
- 邯郸市二手车市场租赁合同
- 宾馆单元门定制合同
- 滑雪道建设平地机租赁协议
- 写字楼抹灰施工协议
- 保险业务员招聘合同
- 管道工程劳务分包协议
- 居家护理压力性损伤防控制度
- 上门延伸医疗护理服务
- 老年营养示范化病房创建方案
- 2024年物业管理师(中级四级)考试题库大全-下(判断、简答题)
- 2024年新疆区公务员录用考试《行测》试题及答案解析
- 《一桥飞架连天堑》课件 2024-2025学年岭南美版 (2024)初中美术七年级上册
- GB/T 6974.3-2024起重机术语第3部分:塔式起重机
- 期末检测卷(试题)-2024-2025学年北师大版五年级上册数学
- 2025年高考语文一轮复习策略讲座
- 高中物理-《互感与自感》课件-新人教版选修3
- 《古建筑油漆彩画作》课件-第七章 古建筑彩画工艺技术
评论
0/150
提交评论