本科毕设论文--基于at89s52单片机ds18d20温度湿度传感器的设计_第1页
本科毕设论文--基于at89s52单片机ds18d20温度湿度传感器的设计_第2页
本科毕设论文--基于at89s52单片机ds18d20温度湿度传感器的设计_第3页
本科毕设论文--基于at89s52单片机ds18d20温度湿度传感器的设计_第4页
本科毕设论文--基于at89s52单片机ds18d20温度湿度传感器的设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

-PAGEIV-PAGEI基于AT89S52单片机DS18D20温度湿度传感器的设计摘要在现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一,在环境恶劣或温度较高等场合,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测、显示、控制,使之达到工艺标准。如何更快、更准确的控制所需的温度是温度控制技术的关键。本设计按照设计要求,采用功能齐全的protelDXP作为绘制原理图工具,PCB板作为开发板的温度检测器。本系统采用现在流行的AT89C52单片机,配以湿度传感器,温度传感器,通过A/D模数转换等进行系统控制。本设计还加入了常用的数码管显示及状态灯显示灯常用电路,使得整个设计更加完整,更加灵活。该设计整体结构小巧,便于携带。关键字:AT89S52单片机;DS18D20温度传感器;继电器;湿度传感器PAGEIVMulti-functionTemperatureDetectorAbstractInmodernmetallurgy,petroleum,chemicalandpowerproductionprocess,thetemperatureisextremelyimportantanduniversalthermalparametersoftheenvironmentorinhightemperatureandsoon,inordertoensurenormalproductionprocesscarriedoutsafely,improveproductqualityandthenumber,aswellasreducethelaborintensity,energyconservation,therequirementsformeasuringthetemperatureofthefurnace,display,control,tomeetthestandardsprocess.Howtofasterandmoreaccuratetemperaturecontrolrequiredfortemperaturecontroltechnologyisthekey.Inaccordancewiththedesignrequirementsofthedesignusingfull-featuredprotelDXPasaschematicdrawingtools,PCBboardasadevelopmentboardtemperaturedetectors.Thepresentsystemispopularsingle-chipAT89C52,withDS18B20temperaturesensor,A/ThisdesignalsojoinedthecommonLEDstatuslightsanddisplaylightsshowcommoncircuitdesignmakingthewholemorecomplete,moreflexible.Thedesignoftheoverallstructureofthecompact,easytocarry.Keyword:AT89S52SingleChip;AD590TemperatureSensor;Relays目录摘要 …………………….IAbstract …………………...II引言 …………………….11系统的设计任务 …………..21.1温度检测系统设计的基本任务 …………………21.1.1主要性能指标 21.2温度检测系统设计的扩展任务 …………………21.2.1主要性能指标 22总体设计 …………………..32.1总设计框图 ………………………32.2技术特点 …………32.2.1AT89C52单片机 32.2.2ADC0809A/D转换器 33单片机概述 ………………..43.1单片机名称的由来 ……………...43.2单片机的特点 …………………...43.2.1高性能、低价格 43.2.2体积小、可靠性高 43.2.3低电压、低功耗 43.3单片机的应用 …………………...54芯片介绍 …………………..54.1芯片AT89S52 ……………………54.1.1功能特性描述 54.1.2引脚功能描述 64.1.3存储器结构 84.1.4编程方法 94.2芯片ADC0809 …………………….94.2.1基本知识 94.2.2ADC0809应用说明 114.3LED七段数码管 ………………..124.474LS138译码器 ………………..134.5温度传感器DS18B20 …………...154.6湿度传感器XR61TDR …………...185方案论证与硬件设计 ……………………185.1温度电路的设计 ………………..185.1.1温度采样部分的方案论证……………185.1.2温度电路 185.1.3A/D转换电路 195.2水泵控制电路 …………………..195.3单片机控制部分 ………………..205.3.1单片机控制部分的方案论证 205.3.2单片机控制电路 205.4数字显示部分 …………………..215.5湿度采样和转换电路部分 ……………………..225.5.1A/D转换电路 225.5.2湿度传感器XR61TDR的电路设计 226软件系统设计 ……………226.1端口设置 ………………………..226.2各模块软件设计 ………………..236.2.1DS18B20程序 236.2.2LED显示程序 256.2.3继电器控制 266.3程序流程图 ……………………..266.3.1即时湿度显示 266.4总设计程序 ……………………..28结论 …………………...35参考文献 ……………….36致谢 …………………...37附录 …………………...38PAGE39 引言综合农作物的生长过程对外部环境的主要要求,采用科学控制方法且具备广泛用途的节水灌溉系统,是节水灌溉科学实施的核心问题。基于此,本课题的主要内容是研制开发适合我国国情的、低成本、易推广的、主要应用于温室大棚的节水灌溉自动控制系统,为实现我国农业高效节水灌溉提供技术装备。由于不同农作物有不同的需水特性,灌水时间、灌水量既影响农产品的产量,也影响农产品的质量,因此,设施农业的高效节水灌溉自动控制技术主要是向适时适量、按需灌溉的方向发展。所以,本课题的研究主要包括两个方面,一是测,获取土壤水分信息,并根据土壤水分信息及温度和作物需水特性来决定灌溉时间与灌溉量的多少。这将摆脱以往仅凭经验灌溉的灌溉模式,使作物灌溉决策建立在科学的基础之上;二是控,要研究如何根据土壤条件、土壤水分信息及作物需水特性进行合理的灌溉决策,即将传统的凭经验由人工手动阀门控制灌溉方式改为自动进行适时适量、按需精确灌溉控制,从而达到提高水的利用效率、优质高产、节省大量人力,实现高效农业的目的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能。采用两个4位共阳数码管,一个显示即时温度,数码管即时显示温度,精确到小数点一位。定时开启水泵进行灌溉。1系统的设计任务1.1温度检测系统设计的基本任务一通过环境温度和湿度自动按时控制水泵的放水量。达到自动灌溉节约用水的目的。1.1.1主要性能指标①温度测量范围:-20C到50C,最小区分度为。②控制精度:温度控制的静态误差,湿度小于1%。③用十进制数码显示实际水温,湿度。1.2温度检测系统设计的扩展任务用电炉煮稀饭,首先结合定时控制系统对加热时间进行设定,当加热时间结束时通过继电器时电炉断电。而进入保温状态,而保温的温度可自行设定。使稀饭保持在想要的温度。1.2.1主要性能指标①温度测量范围:-20C到50C,最小区分度为。②控制精度:温度控制的静态误差,湿度小于1%。③用十进制数码显示实际水温,湿度。2总体设计2.1总设计框图湿度湿度传感器A/D转换器信号的转换单片机继电器显示电路温度传感器稳压电源图2.1设计框图水泵开关如图2.1所示,采用89S52单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。用集成传感器AD590对温度进行采集,所得电流信号经处理得到可用的电压信号,输入到A/D转换器转化成数字信号,再由单片机对此信号进行处理,并通过控制电路以及配合定时控制系统对水泵开关进行控制。2.2技术特点2.2.1AT89C52单片机AT89S52单片机是一种电可擦写8位单片机,它内部有4k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,1个全双工串行I/O口,片内晶振及时钟电路。2.2.2ADC0809A/D转换器ADC0809是8通道8位CMOS逐次逼近型A/D转换器.片内设置了多路模拟开关以及通道地址译码及锁存电路,能对多路模拟信号进行分时采集与转换,最大不可调误差为±1LSB.可直接与单片机相连,不需另加接口电路.3单片机概述3.1单片机名称的由来单片机在外观上与常见的集成电路一样,体积很小,多为黑色长条状,条状左右两侧各有一排金属引脚,可与外电路连接。单片机体积虽小,但“五脏俱全”,其内部结构与普通计算机结构类似,也是由中央处理器(CPU)、存储器和输入/输出(I/O)3大基本部分构成。实际就是把一台普通计算机经过简化,浓缩在一小片芯片内,形成了芯片级的计算机(singlechipmicrocomputer),即单芯片微型计算机,简称单片机。单片机也称为微控制器或嵌入式微管制器。计算机是靠输入程序来工作的,同样,单片机工作也需要事先输入程序。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。目前单片机经过1、2、3、3代的发展,正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压低功耗。3.2单片机的特点3.2.1高性能、低价格一片单片机从功能上讲相当于一台微型计算机,可是价格却很低,一片单片机的价格一般在几元到几十元之间。而且随意科学技术的发展和市场竞争的需要,世界上生产单片机的各大公司都在不断地采用新技术来提高单片机的性能,同时又进一步降低其价格。3.2.2体积小、可靠性高在单片机的片内,除了一般必须具有的ROM、RAM、定时器/计数器、中断系统外,还尽可能地把众多的各种外围功能器件集成在片内,减少了外部各芯片之间的连接,大大提高了单片机的可靠性和抗干扰能力。3.2.3低电压、低功耗一般单片机的工作电压为5V,有的单片机可以在1.8~3.6V的电压下工作,而且,功耗降至μA级。例如,MSP430超低功耗类型的单片机,两个钮扣电池就可以保障其运行长达近10年。单片机的这种低电压、低功耗的特性,对于设计和开发携带式智能产品和家用消费类产品显得非常重要。3.3单片机的应用只需在电路中添加少许元器件,通过编写程序就可以实现多种功能的单片机自动控制。单片机接上键盘可以进行信号输入;单片机接上显示器可以实现数据显示;单片机接上喇叭可以实现声音输出;单片机可以用来通信,也可以用来计数和定时,还可以控制彩灯的闪烁、电机的运转、机器人的活动以及交通灯信号的控制等。由于单片机体积小巧、功能强大、应用灵活、价格便宜,所以应用十分广泛。已经在工业控制、国防装备、智能仪器等领域得到了广泛应用。现在,人们日常生活中所使用的各种家用电器,例如,洗衣机、电冰箱、空调、微波炉、电饭煲、音响、电风扇及高档电子玩具等,也普遍采用了单片机来代替传统的控制电路,既降低了成本,又提高了自动化程度。4芯片介绍4.1芯片AT89S524.1.1功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8在系统可编程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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。4.1.2引脚功能描述AT89S52单片机有40个引脚,引脚图如下图4.1所示图4.1AT89S52的引脚图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.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表4.1所示。在flash编程和校验时,P1口接收低8位地址字节表4.1P1口引脚的第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)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口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表4.2所示。在flash编程和校验时,P3表4.2P3口引脚的第二功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)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使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。4.1.3存储器结构MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。数据存储器:AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间直接寻址方式访问特殊功能寄存器(SFR)。例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV0A0H,#data使用间接寻址方式访问高128字节RAM。例如,下面的间接寻址方式中,R0内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV@R0,#data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。4.1.4编程方法采用下列步骤对AT89C52编程:在地址线上输入编程单元地址信号在数据线上输入正确的数据激活相应的控制信号把EA/Vpp升至12V每给Flash写入一个字节或程序加密位时,要给ALE/PROG一次脉冲。节写周期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,直到文件结束。4.2芯片ADC08094.2.1基本知识ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。ADC0809的内部逻辑结构图4.2ADC0809的内部逻辑结构图由上图4.2可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的引脚结构ADC0809A/D转换器有28个引脚,引脚图如下图4.3所示图4.3ADC0809的引脚结构图IN0-IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表4.3所示。表4.3通道选择表CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7数字量输出及控制线:11条ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号。用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ。VREF(+),VREF(-)为参考电压输入。4.2.2ADC0809应用说明ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。初始化时,使ST和OE信号全为低电平。送要转换的哪一通道的地址到A,B,C端口上。在ST端给出一个至少有100ns宽的正脉冲信号。是否转换完毕,我们根据EOC信号来判断。当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。4.3LED七段数码管LED显示器是于发光二极管组成的,用来显示特定的的显示器。7段数码管发光二极管使用灵活,简单方便,当有电流通过时,相应的发光二极管就点亮;当电流消灭没有电流时,发光二极管就灭。同样。共阳极LED显示器。就是将所有发光二极管的阳极接到一起,接到电源正极。这样,当某个发光二极管的阴极加有低电平,该发光二极管即被点亮。LED显示器是于发光二极管组成的,用来显示特定的的显示器。7段数码管发光二极管使用灵活,简单方便,当有电流通过时,相应的发光二极管就点亮;当电流消灭没有电流时,发光二极管就灭。同样。共阳极LED显示器。就是将所有发光二极管的阳极接到一起,接到电源正极。这样,当某个发光二极管的阴极加有低电平,该发光二极管即被点亮。表4.4LED显示器字符段码表显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99H.80H7EH56DH92HP73H82H67DH82HU3EHC1H706HF8HT31HCEH87FH80HY6EH91H96FH09H8.FFH00HA77H88H“灭”00HFFHB7CH83H|||通过a,b,c,d,e,f,g,dp各点和公共点的电位,就可以控制个发光二极管的亮暗,而不同的发光的亮暗组合就可以显示不同的数字(dp点是来表示小数点,在显示数字中不起作用)。比如,要显示“3”,则只需点亮a,b,c,d,g5个发光二极管,而其他均为暗,对于共阴极LED显示器来说,就是在在这些引脚上输入高电平即可。LED显示器字符段码表如表4.4所示。常用7段数码管LED显示器,共阴极和共阳极结构如下图4.4所示:图4.4LED显示器4.474LS138译码器通用的译码器又称为二进制译码器,它的输入是一组二进制代码(又称地址码),输出则是一组高、低电平信号。74LS138是3-8译码器,它有3个输入使能控制端、、,只有=1,==0同时满足时才允许译码,3个条件中有一个不满足就禁止译码。设置多个使能端的目的在于灵活应用、组成各种电路。由下表4.674LS138功能表可以写出(在各使能有效的条件下)输出与输入的逻辑表达式:,,,,,,,,表4.674LS138功能表输入输出×1×010101010101010××××××00000101001110010111011111111111111111110111111110111111110111111110111111110111111110111111110111111110注:,0为低电平,1为高电平,×为任意74LS138译码器有16个引脚,引脚图如下图4.6所示:图3.674LS138译码器的引脚图A、B、C:译码地址输入端G1:选通端/(G2A)、/(G2B):选通端(低电平有效)Y0~Y7:译码输出端(低电平有效)下图为74LS138译码器的逻辑图4.5:图4.574LS138译码器的逻辑图4.5温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。(1)DS18B20功能特性独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0-5.5V;零待机功耗;温度以9或12位数字量读书;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。(2)引脚图TO-92封装的DS18B20的引脚排列见下图,其引脚功能描述见下:图3.5DS18B20引脚图GND:地信号。DQ:为数字信号输入/输出端。VDD:为外接供电电源输入端。(3)DS18B20内部存储器DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8个字节的存储器,结构如图3.6所示。头两个字节包含测得的温度信息,第三和第四字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第五个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如图3.6所示。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。图3.6配置寄存器DS18B20测量温度范围为-55℃~125℃,其分辨率可由程序设定为9~12位。可设定的报警温度。DDS18B20内部结构主要由四部分组成:64位光刻ROM用于总线时识别各个器件;温度传感器可完成对温度的测量并将值以16位符号扩张的二进制补码形式存于寄存器中,设置成12位时,以0.0625℃/LSB形式表达如:读出的16位二进制数为0000000000001001也就是换算为10进制为9其此时温度为9*0.0625=0.56254.6湿度传感器XR61TDR土壤容积含水量单位:%(m³/m³)量程:0-100%(m³/m³)精度:0-50%(m³/m³)±2%(m³/m³)测量区域:90%的影响在围绕中央探针的直径3cm.长为5.8cm的圆柱体内精度漂移量:2‰/年稳定时间:通电后约一秒进入稳定状态工作电压:输入为4-6.5VDC工作电流28-30ma典型值28mA输出信号:输出为0-2.5VDC工作温度:-30-﹢70℃5方案论证与硬件设计5.1温度电路的设计5.1.1温度采样部分的方案论证方案1:采用热敏电阻,可满足35℃--95℃的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1℃的温度信号是不适用的。

方案2:采用温度传感器DS18B20。:DS18B20具有体积小、质量轻、线形度好、性能稳定等优点。其测量范围在-50℃--+125℃,满刻度范围误差为±0.3℃,当电源电压在5—10V之间,稳定度为1﹪时,误差只有±0.01℃,其各方面特性都满足此系统的设计要求。此外DS18B20自带ad转换,省去了很多硬件设计麻烦。

经上述比较,方案2明显优于方案1,故选用方案2。5.1.2温度电路使用温度传感器DS18B20图4.1温度电路5.1.3A/D转换电路如图4.1所示,从ADC0809的通道中输入由AD590经过10KΩ之后采样到的电压值,并通过对地址输入线A,B和C的设置(由单片机P2.0~P2.2),选通IN0-IN7上的一路模拟量输入。进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。5.2水泵控制电路定时系统和继电器控制电路。如下图4.2所示P3.1为水泵的控制端口,当需要灌溉的时候P3.1为高电平,反之,P3.1为低电平。继电器控制电路如下图4.2所示:图4.2继电器控制电路单片机时微电,要控制电路要加放大电路,现使用9015三级管放大。使用1N4001稳压二级管,发光二极管亮代表继电器打开。5.3单片机控制部分5.3.1单片机控制部分的方案论证方案1:采用8031芯片,其内部没有程序存储器,需要进行外部扩展,这给电路增加了复杂度。方案2:采用2051芯片,其内部有2KB单元的程序存储器,不需外部扩展程序存储器。但由于系统用到较多的I/O口,因此此芯片资源不够用。方案3:采用AT89C51单片机,其内部有4KB单元的程序存储器,不需外部扩展程序存储器,而且它的I/O口也足够本次设计的要求。与CMOS电平和TTL电平均兼容。减少了很多电路设计麻烦。比较这3种方案,综合考虑单片机的各部分资源,因此此次设计选用方案3。5.3.2单片机控制电路单片机控制部分主要包括单片机电路、晶振电路以及复位电路三部分构成。设计电路图如图4.3所示:图4.3单片机控制电路此部分是电路的核心部分,系统的控制采用了单片机AT89C52。单片机AT89C52内部有4KB单元的程序存储器及256字节的数据存储器。因此系统不必扩展外部程序存储器和数据存储器这样大大的减少了系统硬件部分。5.4数字显示部分数字显示电路包括两个四位共阳极LED显示器和键盘控制电路组成,一个LED显示器显示实际的温度值,另一个LED显示器显示设定的湿度。设计电路图如图4.4所示:图4.4键盘及数字显示电路LED显示器采用动态分时扫描方式。采用4位共阳极LED示器。共阳极LED显示器的阴极和单片机AT89C52的P1口连接,显示段码由CPU通过P1口传送到LED显示器的阴极。位扫描码由单片机AT89C52的P2.0,P2.1,P2.2输出,经74LS138译码器译码后,再经同相驱动器传送到LED显示器的阳极,选通LED显示器的数位。单片机输出电压电流不能驱动数码管,使用9015三极管进行驱动。138译码器是TTL电平与单片机兼容。本模块利用了138译码器对显示器动态扫描,采用此方法大大简化了硬件,充分的利用了单片机的资源。LED显示的扫描处理占用大量机时,增加软件编程负担。5.5湿度采样和转换电路部分5.5.1A/D转换电路如图4.1所示,从ADC0809的通道中输入由AD590经过10KΩ之后采样到的电压值,并通过对地址输入线A,B和C的设置(由单片机P2.0~P2.2),选通IN0-IN7上的一路模拟量输入。进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。5.5.2湿度传感器XR61TDR的电路设计湿度传感器输出为0-2.5VDC,经过两倍放大后电压范围0—5V。因此参考adc0809取电源电压VCC作为参考电压。6软件系统设计6.1端口设置结合硬件电路设计对单片机AT89S52的端口进行相应的设置:数码管:CC8~CC1连P1口3-8译码器:A,B,C连P2.0,P2.1,P2.2温度传感器:P3.7ADC0809:A,B,C连P2.0,P2.4,P2.5,P2.6ALE连P2.6START连P2.4EOC连P2.5OE连P2.7D7~D0连P0口6.2各模块软件设计6.2.1DS18B20程序首先判断是否有键盘按下,若加值键盘按下,那么判断设置值是否为100,若为100那么设置值就为0,否则,设置值就加1;若减值键盘按下,那么判断设置值是否为0,若为0那么设置值就为100,否则,设置值就减1。程序: /****************DS18B20复位函数************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay2(50);//550usDQ=1;delay2(6);//66uspresence=DQ;//presence=0复位成功,继续下一步}delay2(45);//延时500uspresence=~DQ;}DQ=1;//拉高电平}/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay2(6);//66usval=val/2;//右移1位}DQ=1;delay2(1);}///****************DS18B20读1字节函数************************///从总线上取1个字节ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_nop_();_nop_();_nop_();_nop_();//4usif(DQ)value|=0x80;delay2(6);//66us}DQ=1;return(value);}///****************读出温度函数************************///uintread_temp(){ow_reset();//总线复位delay2(200);write_byte(0xcc);//发命令write_byte(0x44);//发转换命令ow_reset();delay2(1);write_byte(0xcc);//发命令write_byte(0xbe);temp_data[0]=read_byte();//读温度值的第字节temp_data[1]=read_byte();//读温度值的高字节temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//两字节合成一个整型变量。returntemp;//返回温度值}6.2.2LED显示程序数码管的第四位显示即使温度值,高四位显示设置温度值。程序:/*数码管扫描***************************************/voidshu_ma_guan(void){unsignedchari;/*显示温度的********************************/P1=0x00;SEL0=0;SEL1=0;SEL2=0;P1=~m[T%10];//个位第一个数码管以下依次类推 delaym(4); P1=0xff;SEL0=1;SEL1=0;SEL2=0;P1=~m[T/100%10];//十位 delaym(4); P1=0xff;SEL0=0;SEL1=1;SEL2=0;P1=~m[T/100%10];//百位delaym(4); P1=0xff;SEL0=1;SEL1=1;SEL2=0;P1=~m[T/1000];//千位delaym(4); P1=0xff;SEL0=0;SEL1=0;SEL2=1;P1=~m[b[0]];//个位第一个数码管以下依次类推 delaym(4); P1=0xff;SEL0=1;SEL1=0;SEL2=1;P1=~m[b[1]];//十位 delaym(4); P1=0xff;SEL0=0;SEL1=1;SEL2=1;P1=~m[b[2]];//百位delaym(4); P1=0xff;SEL0=1;SEL1=1;SEL2=1;P1=~m[b[3]];//千位delaym(4); P1=0xff;}6.2.3继电器控制P3.1为的控制端口即接继电器,当把该系统的根据即时温度和湿度定时开启水泵开关,P2.7为高电平打开水泵,反之,P2.7为低电平关闭水泵。6.3程序流程图6.3.1即时湿度显示即时温度显示的流程图如图5.1所示:开始开始I/O端口初始化调用ADC0809初始化程序判断EOC是否等于零AD转换完成调用数码管显示子程序将采集到是数据送到P0口调用将二进制数据转化为温度值子程序使即使湿度显示在数码管的低4位定义端口是否图5.1即时湿度显示的流程图即时温度显示流程图开始开始开始初始化DS18B20存在?ROM操作命令存储操作命令读取温度值返回是否图5.2设置的温度显示的流程图6.4总设计程序#include<reg52.h>#include<intrins.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7;//温度输入口sbitP36=P3^6;sbitp36=P3^6;uinttemp,temp_data[2];sbitALE=P2^6;sbitSTART=P2^4;sbitEOC=P2^5;sbitOE=P2^7;sbitSEL0=P2^0;sbitSEL1=P2^1;sbitSEL2=P2^2;sbitSEL3=P2^3;sbitP30=P3^0;unsignedcharm[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};unsignedchardout;//采集到的二进制值unsignedintT=0;//温度值unsignedintb[4]={0,0,0,0};voiddelaym(unsignedintt) //延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535{unsignedcharj; //j=0~255while(t--){for(j=0;j<50;j++); //j进行的内部循环,1次延迟8us}}voidad0809(void){ALE=1;_nop_();START=1;_nop_();ALE=0;_nop_();START=0;}voidConvert_T(void){ T=(5.0/255*dout)*20; }/*数码管扫描***************************************/voidshu_ma_guan(void){/*****************显示温度的*********************///while(1){P1=0x00;SEL0=0;SEL1=0;SEL2=0;P1=~m[T%10];//个位第一个数码管以下依次类推 delaym(4); P1=0xff;SEL0=1;SEL1=0;SEL2=0;P1=~m[T/100%10];//十位 delaym(4); P1=0xff;SEL0=0;SEL1=1;SEL2=0;P1=~m[T/100%10];//百位delaym(4); P1=0xff;SEL0=1;SEL1=1;SEL2=0;P1=~m[T/1000];//千位delaym(4); P1=0xff;SEL0=0;SEL1=0;SEL2=1;P1=~m[b[0]];//个位第一个数码管以下依次类推 delaym(4); P1=0xff;SEL0=1;SEL1=0;SEL2=1;P1=~m[b[1]];//十位 delaym(4); P1=0xff;SEL0=0;SEL1=1;SEL2=1;P1=~m[b[2]];//百位delaym(4); P1=0xff;SEL0=1;SEL1=1;SEL2=1;P1=~m[b[3]];//千位delaym(4); P1=0xff;}voidzhongduan(void)interrupt1{P30=~P30;}voiddelay2(uintt){for(;t>0;t--);}///****************DS18B20复位函数************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay2(50);//550usDQ=1;delay2(6);//66uspresence=DQ;//presence=0复位成功,继续下一步}delay2(45);//延时500uspresence=~DQ;}DQ=1;//拉高电平}/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay2(6);//66usval=val/2;//右移1位}DQ=1;delay2(1);}///****************DS18B20读1字节函数************************///从总线上取1个字节ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_no

温馨提示

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

评论

0/150

提交评论