基于单片机的太阳能热水器控制的毕业设计_第1页
基于单片机的太阳能热水器控制的毕业设计_第2页
基于单片机的太阳能热水器控制的毕业设计_第3页
基于单片机的太阳能热水器控制的毕业设计_第4页
基于单片机的太阳能热水器控制的毕业设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

I基于单片机的太阳能热水器控制的设计摘要89C522489C5289C52LED出相应的上水、加热指令,对热水器的温度和水位进行控。关键词:太阳能热水器,单片机AT89C52,硬件设计,软件设计IIDesignofSolarWaterHeaterControllerBasedonMCUABSTRACTAtpresent,Chinahasbecometheworld'slargestproducerofsolarwaterheater,withannualoutputofaroundandaroundtheworld.However,matchingwithsolarwaterheatercontrollerhasbeeninresearchanddevelopmentstage.Thecontrollernowonlydisplaythetemperatureandlevel,butalsoforthesub-display.Hedidnothaveatemperaturecontrolfunction,whenduetobadweatherandlackoflight,itwillbringinconveniencetothewaterheater.Inviewofdomesticsolarwaterheatermarketexpansion,anditsmatchingcontrollerisanurgentneedtoimprovethesituation,developedasetofsolarwaterheatercontroller.Inthispaper,solarwaterheaterisdesignedforthedetectionofsingle-chipcontrol89C52core,notonlyoftemperature,waterlevelinthetwoparametersinreal-timedisplayandtemperaturesettingandcontrolfunctions.Controlleraccordingtoweatherconditionscanmakeuseofauxiliaryheatingdevicesothatthetemperatureinsidethewatertoreachpre-settemperature,soastoachievea24-hourhotwatersupplypurposes.Practicalapplicationresultsshowthatthecontrollerandcomparedtothepreviousdisplayinstrumentwithhighperformance-priceratio,temperaturecontrolanddisplayhighprecision,easy-to-useandperformanceadvantagesofstability,improvedcontrolofourlevelofsolarenergyapplications,withconsiderableeconomicbenefitsandsocialbenefits.Solarwaterheaterduetotheuseofsolarenergy,pollution-free,easytouse,long-termuseoflowinputcostsandhasbeenfavoredpeople.Introducedthedesignofasingle-chipmicrocomputer89C52asthecoreconsistingofsolarwaterheaterintelligentcontrollermethod,giventhesystemhardwaredesignandsoftwareimplementation.Thedesignofsingle-chipmicrocomputerasthecore89C52,willcomefromthetemperatureandwaterleveldetectionsensorsignalconditioning,A/Dtransformedintosingle-chip,ontheonehandthroughtheLEDdisplaysthecurrentvalueoftemperatureandwaterlevel,whileontheonehand,andthetemperatureandcomparethewaterlevelsettings,computing,accordingtoresultsissuedbytheShangShui,heatinginstructions,ofthewaterheatertocontroltemperatureandwaterlevel.KEYWORDS:Solarwaterheater,single-chip,hardwaredesign,softwaredesignIII目录摘要 IABSTRACT II绪论 1太阳能热水器的概述 1太阳能热水器的背景 2太阳能热水器的研究现状 2本设计的主要任务及内容 3系统的主要功能 3系统总体方案的设计 4系统总体结构框图的设计 4温度检测电路设计 4模拟/数字转换电路 7ADC0809的内部结构 8信号引脚 9ADC0809与单片机的接口设计 9单片机的控制系统 10AT89C52的主要特性 11AT89C52的引脚说明 12振荡特性 15最小系统应用电路 15键盘控制电路 17键盘设计的分类及其特点 17按键的确认 17重键与连击的处理 17按键防抖技术 18少量功能键的接口技术 19矩阵键盘的接口技术 20本设计键盘的硬件连接 21LED显示电路 212.6.18255的介绍 21LED显示原理 23并行接口动态显示 26继电器控制电路设计 27软件部分设计 30程序流程图设计 30主程序流程图 30显示程序流程图设计 32键盘中断流程图 32键盘中断流程图 33A/D转换程序流程图 33软件程序设计 34分析和总结 42致谢 43参考文献 44附I图总电路图 45附II仿真电路图 4611绪论太阳能热水器的概述随着社会的发展,对能源的需求在快速增长,使不可再生能源的贮量不断减少,同) 2AT89C52不用重新设定。太阳能热水器的背景2050了一定的经济效益和良好的社会效益。300随着技术的不断更新,将会有越来越多、越来越完善的太阳能热水器产品出现,太阳能热水供应系统也会越来越完善。太阳能技术的推广使用,节约了能源改善了环境、提高了人们的生活质量,为人类的文明和进步作出了巨大的贡献。太阳能热水器的研究现状2002100011040001015%20101300010010001%。难实现商品化,仍有许多问题需要解决。3本设计的主要任务及内容AT89C52A/DLED的温度和水位进行控制。本次设计的主要内容:温度、水位检测传感器的选择A/DAT89C52时钟控制、键盘及显示部分的设计软件设计总体设计系统的主要功能太阳能热水器自动控制系统具有以下功能:220VAC,5W。0—99℃;精度±2℃。5420%50%80%100%,5当水位超过该水位点,相应发光二极管发亮。水位设置:可设置加水水位20%5080%100%50,50%过按“∧”或“∨”键可以调整水位设置。在原水位基础上再加一档;若水位已加满,则停止手动加水。手动加热:若日晒水温达不到设定值,则电加热自动补温,加热到预置温色发光二级管显示加热正在进行,待加热停止后方可用水。) 42系统总体方案的设计系统总体结构框图的设计温度水位检测转换水量设定温度设定AT89C528255显示电路控制加热继电器键盘控制控制上水电磁阀AT89C52AD590温度传感器,用于检测0~5V温度水位检测转换水量设定温度设定AT89C528255显示电路控制加热继电器键盘控制控制上水电磁阀图2-1太阳能热水器控制器系统框图温度检测电路设计软件实现辅助加热。其性能的好坏直接影响系统的性能,对于温度检测,目前比较理想AD590,AD590AD590IC1℃,1μA可测量范围-55℃150℃供电电压范围+4V+30V5AD590的管脚图及元件符号如2-2所示:图2-2 AD590的管脚图及元件符号AD590的输出电流值说明如下:其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout=(273+25)=298μA。图2-3 AD590基本应用电路AD5902-3注意事项:VoIo10K,25℃10K×298μA=2.98V。VoAD5902-4A图2-4 AD590实际应用图电路分析:) 6AD590I(273T)A(T,因此测量的电压V。为了将电压测量出来又务须使输出电流IV2V。由于一般电源供应较多的器件之后,电源是不稳定的,所以利用可变电阻分压,其输出电压V1需调整至2.73V。Vo(100K/10K)×(V2-V1)=T/10,28℃,2.8V,A/DA/D量就和摄氏温度成线形比例关系。AD590AD5904V~6V44V20VAD590产生的电流与绝对温度成正比,它有非常好的线性输出性能,温度每增加1℃,1μA。AD590温度与电流的关系如表2-1所示:摄氏温度AD590摄氏温度AD59010KΩ电压0℃273.2μA2.732V-0.5℃272.7μA2.727V-1℃272.2μA2.722V-1.5℃271.7μA2.717V-2℃271.2μA2.712V-2.5℃270.7μA2.707V-3℃270.2μA2.702V-3.5℃269.7μA2.697VA/DAD59010kΩ10mV,即转换10mV/K10kΩ9kΩ2kΩ10kΩU3AU2A2.732(即把绝对温度转成摄氏温度U1A5A/D2-5IN02-5温度检测电路图IN02-5温度检测电路图模拟/数字转换电路A/DI/O读取数据,这种方式使A/D模拟/ADC0809。ADC0809[]88100μs101069CLOCKSTARTENABLEref(+)12ref(-)1622ALE232425IN-75ADD-CADD-BADD-AIN-647IN-53EOC171415818192021IN-42lsb2-82-72-62-52-42-32-2msb2-1IN-31IN-228IN-127IN-026ADC0809图2-6ADC0809引脚图) 8ADC0809Vref(+)12Vref(+)12Vref(-)16262728123458位8路A/D转换器三态212019188151416输出锁存25缓冲电路6 10START 9OE26地址锁存1723与1122译码13图2-7ADC0809内部逻辑结构2-288A/DABCINT09CB表2-2A通道选择表被选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7信号引脚ADC0809282-6ADC0809IN~IN7 0ALE:地址锁存允许信号。对应ALEBCSTARTA/DA/D,STARTST。A、B、C:地址线。通道端口选择线,A、B、CADDA,ADDB和ADDC。其地址状态与通道对应关系见表2-2。CLK:时钟信号。ADC0809500KHzEOC:转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。D~DD7 0 0为最低位,D为最高。7输出数据线呈高阻;OE=1,输出转换得到的数据。Vcc+:5V电源。Vref:参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref

=+5V,Vref

=-5V)。(+) (-)ADC0809) 10VV+器感传++456UQQVcrVNNNNNNNN DIIIIIIIIVGDAGD4RR7PLKC13KTA E00DLCULCBACDDDDDDDDTSAOCOEDA2 3417U75 6 2 37KC91615129652Q8Q7Q6Q5Q4Q3RLCD8D7D6D5D4D3D2D181714181743Q2UQ1COC111V+0V49876543233333333 3+103928765432122222222CVDDDDDDDDP GAAAAAAAAE 111111DD........ AVR SPPPPPPPPE////5432.L ......22P AA7DDDDDDAA///1APPPPPPPPAT89C52DDTTRTNNTTWR01234567 TUPPPPPPP12345678S 01234567 A AR 2 1R((((((((.T TDCX X GAN9 1111111111 2图2-8ADC0809与单片机的硬件连接单片机的控制系统2070SCM、MCU、SOCSCM即单片微型计算机(SingleChipMicrocomputer)阶段,主要是寻求最佳的单片SCM全不同的发展道路。第二阶段:MCU即微型控制器(MicroControllerUnit)阶段,智能化控制能力。Intel,PhilipsMCS-51MCU11要因素。因此,专用单片机的发展自然形成了SOCICEDASOC我们将8位单片机的推出作为起点,那单片机的发展历史大致可分为以下几个阶段:第一阶段单片机的探索阶段。以IntelMCS-48、Zilog等公司也参与了探索,都取得了满意的效果。第二阶段(1978-1982)单片机的完善阶段。IntelMCS-48MCS-51。它有完善的外部总线、CPU(1982-1990):816MCS-96MCS-5180C51A/D1990-至今):微控制器的全8/16/32在选择单片机时也应充分考虑其便利和实用,8031单片机最大缺点是需要外接EPROMEPROMATMELAT89C52FLASH803180318KB内部程序存储器,可用电擦除,十分方便。AT89C52AT89C52单片机主要有以下一些特点:MCS-518KBFLASH1000/写操作;全静态操作:0Hz24MHz;三级程序存储器加密;(5)256字节内部RAM;(632I/O(7)3个16位定时/计数器;) 12(8)8个中断源;可编程串行口;低功耗空闲和掉电方式。AT89C52AT89C52包括40个引脚,其引脚结构如图2-9所示。图2-9AT89C52外部管脚排列图VCC:电源。GND:地。P08I/O8TTL逻辑电平。对P0时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P08/数据复用。在这种模式下,P0需要外部上拉电阻。P18I/O4TTLP1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIP1.0P1.2/2P1.0/T2)和时器/2(P1.1/T2EX2-3flashP1813引脚号第二功能引脚号第二功能P1.0T2(/计数器T2的外部计数输入,时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P28I/O4TTLP2端口写“1”输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(II。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)18(MOVX@RI)访问外部数据存储器时,P2P2flash,P28P38I/O4TTLP3端口写“1”输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(II。P3AT89S52(第二功能)2-4编程和校验时,P3引脚号第二功能引脚号第二功能P3.0RXD(串行输入)P3.1P3.2P3.3P3.4TXD(串行输出)INT00)1)T0(0)P3.5T1(1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST:复位输入。晶振工作时,RST2看门狗计时完成后,RST96AUXR() 14DISRTODISRTO8flash(PROG)ALE8EHSFR0“1”ALE“1ALEMOVXMOVC将被微弱拉高。这个ALE使能标志位(8EH0)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:0000HFFFFHGNDVCC。在flash期间,EA12VPPXTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。AT89S52MCS-5164K程序存储器EAAT89S52,如果EA0000H~1FFFH)地址为:2000H~FFFFH。数据存储器AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就128高于7FHCPU访问高128字节RAM直接寻址方式访问特殊功能寄存器(SFR)0A0H(P2口)存储单元。MOV0A0H,#data128RAM。例如,下面的间接寻址方式中,R00A0H0A0HP2(0A0H)。MOV@R0,#data128RAM4)中断15AT89S526(INT0和),三个定时中断(定时器012)和一个串行中断。每个中断都可以通过置位或清除特殊寄存器IE断允许控制位分别使得中断源有效与无效。IEEA,他能2-5IE.6AT89S52,IE.51AT892T2CONTF2EXF20。01TF0TF1S5P22TF2S2P2表2-5中断允许控制器功能表符号位地址功能中断总允许控制位。EA=0,中断总禁止;EAIE.7EA=1,各中断由各自的控制为设定—IE.6预留ET2IE.5定时器2中断允许控制位ESIE.4串行口中断允许控制位ET1IE.3定时器1中断允许控制位EX1IE.2外部中断1允许控制位ET0IE.1定时器0中断允许控制位EX0IE.0外部中断1允许控制位振荡特性XTAL1和XTAL2器,石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。最小系统应用电路单片机的最小应用系统电路指的是它可以正常工作的最简单电路组成。AT89S51单片机的最小应用系统电路图如图2-10所示。该系统中包含4个电路部分。) 16+5V+5VC4+10μFC50.143333333333222222222C01234567PGN54321)98CDDDDDDDDVOE111111AAV((((((((A........EEPPAA((((1PPPPPPPPL......22APPPPPPPP+C110μF)IS)O)OMMIK)D)D)0)1)R)D01234PPPPPPPPS RTXXTTIITTWRLT))LRP.......T3PPPPPPAADXXGN12345678911111111112R110CRYC230pFC312MHz30pF图2-10A89C52单片机最小应用系统电路供电电路VCC(40)接+5VGND(20)0.1μF(104)10μFVCC程序存储器选择电路Atmel8052EA(引脚31)可以总是接高电平。时钟电路AT89C520~33MHzXTAL2(18)和XTAL1(19)接上晶3-3CRYC2C3CRYCRY12MHzC2C330pF~50pF时钟电路采用晶体的目的是提高时钟频率的稳定性。复位电路AT89C529)保持24RST10ms以上的高电平。只要引脚RSTRST0000HC1R1C1RSTC117RSTC1R1可靠地复位。C110μF,R110kΩ。0000H特殊功能存储器的初始状态键盘控制电路键盘控制电路采用的是矩阵键盘的接口技术中的程控扫描法,这种键盘由行线和列线组成,按键设置在行,列结构的交叉点上,行列线分别连在按键开关的两端,列线通过上拉电阻接到正电源,以使无键按下时列线处于高电平状态。程控扫描法程控扫描是由程序控制键扫描的方法。程控扫描的任务如下:AFFH。去除键抖动,若有键按下,则延时10~20ms有键按下,则认为键盘上有一个键处于稳定闭合期。若有键按下,则求出闭合键的键盘值。求值的方法是对键盘进行逐行扫描,先P2.6=1然后读入列值,若等于 FFH,则说明该行无键按下,对下一行进行扫描(令P2.6=,如果不等于FFH,则说明该行有键有键按下,求出其键值。键盘设计的分类及其特点CPU,接口简单,响应速度快,但需要专用的硬件电但他不需要专用的硬件支持,所以得到了广泛的应用与发展。按键的确认键盘实际上就是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否取决于机械弹性开关的状态。反应在电压上就是呈现高电平或低电平,所以可以通过检测电平的状态来判断按键是否已被按下。重键与连击的处理) 18按键防抖技术键被按下前沿抖动后沿抖动2-1110键被按下前沿抖动后沿抖动

图2-11按键抖动信号波形通过硬件电路消除按键的抖动是一种广为采用的措施,一般有以下两种去抖电路。滤波防抖电路RC2-12。74LS06K74LS06K1R2CR12-12滤波防抖电路KC0,1KCR1﹑R2CCKCR2CC1910ms,该电路就能消除抖动的影响。双稳态防抖电路用两个与非门够成一个RS2-13所示。当KKAQ1,致使与非20。此信号引至与非门1#的输入端,将其锁住,使其固定输出为1。每当KAKB0。这时,无论A1KBB2#的输出变为高电平,Q0,2,1。此时,即使B2#的输出,从而保证Q0。同理,在释放键的过程中,只要一1。只要开关KBVcc(+5v)RR74LS00有抖动无抖动A/ON&1#QOUTKB/OFF&2#QRVcc(+5v)2-13 双稳态防抖电路软件防抖电路如前所述,若NN少量功能键的接口技术8SB7~SB0) 20874LS30INT0端变为低电平,向CPUCPU关开启时,输出被提升到+5V。反之,输入就被强制接地。矩阵键盘的接口技术程控扫描法程控扫描法是由程序控制键扫描的方法,其任务如下:①首先判断是否有键按下。其方法是使所有的行输出均为低电平,然后由端口A读入列值。如没键按下则读入值为FFH,否则不为FFH;②去处键抖动。若有键按下则延时10~20ms,再一次判断有无键按下。如果此时仍有键按下,则认为键盘上有一个键处于稳定闭合状态;③若有键闭合,则求出该键的键值。求键值的方法是对键盘进行逐行扫描。先使PC0=0,然后读入列值,若等于FFH,说明该行无键按下,再对下行进行扫描,同时令PC1=0,如果列值不等于FFH,则说明该行有键按下,求出其键值。求键值时要采用行08H;行值寄存器保持原值,并转至求相应的列值。此时,首先将列值读数右移,每移位一次1,直到有键按下(低电平)为止。最后将行值列值相加,即得键值(十六进制数DAA④为保证键每闭合一次,CPU只做一次处理,程序中需要等闭合键释放后才对其进行处理。定时扫描法CPU/计数器产生。这样可以减少计算机扫描键盘时间,以减少CPUCPU21中断扫描法CPUCPU的处理。本设计键盘的硬件连接U11 P1.023 P1.14 P1.25 P1.36 P1.47 P1.58 P1.6P1.7P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35U11 P1.023 P1.14 P1.25 P1.36 P1.47 P1.58 P1.6P1.7P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32INT0INT115 T114 T031EA/VP191891716P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.5 26P2.6 27P2.7 28X1X2RESETRDWRAT89C52 ALE/PRXDTXDPSEN1011293089C51VCCR43KR53KPPPSETADDSUBS1S4S2S5S3S6SW-PBSW-PBSW-PB图2-14键盘控制电路2.6LED显示电路2.6.18255的介绍) 228255,INTEL公司的研制的8255不仅8位的I/O端口AB口)位的I/O端口C口256B的静态RAM存储器和14位的定时/RAM和定时器的并行口8255的引脚功能8255采用40脚双列直插式封装,单一+5v电源。8255引脚功能说明:RESET:(包括控制寄存器均被清除,所有I/O口均被置成输入方式。PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。D0~D7:与CPUCPU时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。ALE:地址锁存器启用信号线,高电平有效,其下降沿把AD0~AD7信号、IO/M信号锁存起来。IO/M:I/O和RAM选择信号线,高电平造反输入/输出,该线低电平选择存储器。RD:读信号线,低电平有效,当片选信号与RD有效时,开启AD0~AD7缓冲器,如IO/MRAMAD0~AD7,如果IO/MAD0~AD7。WR:写信号线,低电平有效,当片选信号和WRAD0~AD7IO/MRAMI/OPA0~PA7:输入/A8/输出口,输入/过对命令/PB0~PB7:输入/B8/输出口,输入/过对命令/状态寄存器的编程来选择。PC0~PC5:/C/输出口,也可用作AB的控制信号线,通过对命令/状态寄存器编程来选择。23INT:定时/计数器输入信号线,定时/计数器的时钟由此线输入。TOUT:定时/计数器的输出信号线,输出信号为方波还是脉冲则由定时/计数器的工作方式而定。VCC:电源线,接+5V直流电源。VSS:接地线,接到公用地线上。LEDCRT分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。三种显示器中,以荧光管显示器亮度极高,发光二极管次之,而液晶显示器最弱,为被动显示器,必须有外光源。由于LED显示具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。LED7LEDLED压。当某个发光二极管的阴极接低电平时,发光二极管点亮,相应的段被显示。LED[7]LEDLEDa)LEDLED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V)8不变,直到显示为另一个字符为止,静态显示器的亮度较高。LED源较多。如果显示位数增多,静态显示无法时应,一般都采用动态显示方式。b)LED动态显示方式LED8I/OI/O[7]。本系统所采用显示为双位7段LED共阳极显示[3]。) 24h g f e d c b aCOMCOM共阳极发光二极管连接图h g f e d c b aCOMCOM共阴极发光二极管连接图LED82-15709LED+5V2-16共阴极接法。把发光二极管的阴极连接在一起,在使用时共阴极接地,这时阳极接782-6LED2-7数据位D7数据位D7D6D5D4D3D2D1D0显示段hgfedcba25表2-7LED数码管的字型码显示字型共阳极字型码共阴极字型码0C0H3FH1F9H06H2A4H5BH3B0H4FH499H66H592H6DH682H7DH7F8H07H880H7FH990H6FHA88H77HB83H7CHCC6H39HDA1H5EHE86H79HF8EH71HAAB+5VBCCDDAAB+5VBCCDDEEFFGGDPDP图2-17LED的显示原理图时显示“-”号,温度不为负时显示黑码,即无任何内容显示,右边的数码管用于显示25/S。下面) 26简单介绍一下七段LED,它的构成字型为“8”,另外还有一个数点发光二极管以显示连在一起的(K0)Ka)称为共阴显示器。一位显示器由八个发光二极管组成,其中七个发光二极管构成字型“8”的各个a~g,另外一个小数点为dpLED并行接口动态显示2-1048255PB82557PB经驱动器变为低电平LED才发光。若将各位依次从左到由依次进行显示,每个数码管连续显示1ms,4+5vR*7DS1+5vR*7DS18pdcdbgpdgfedfaYPDcbaDS2pdcdpdgfeeb faDS3gdcbaU4PC5PC4PC3PC2PC1PC0RESET4TMRIN3pdcdpdgfeeTMROUT6b faDS4gdcbaPB7PB6PB5PB4PB3PB2PB1PB0ALE 11IO/M 7WR 10RD 9CE 8pdcdpdgfeeb agdcbaPA7PA6PA5PA4PA3PA2PA1PA0AD7 19AD6 18AD5 17AD4 16AD3 15AD2 14AD1 13AD0 1281558255U13U122003U112003U1020032003765432174LS07874LS0776574LS074532274LS07113938874LS0737736674LS0735534433374LS073223113074LS07298287276265254243232221212-18显示电路图2.7继电器控制电路设计在太阳能热水器控制器的设计中,继电器输出是实现蓄水箱辅助加热的手段。对继2-19处采用了光电耦合器4N254N25D1) 2889C52CPUP1.6CPUP1.6P1.6变为高电平,进入与门,此时若与门另一输入脚为高,则与门输出高电平,同时发光二极管点亮,指示工作状态为正在辅助加热。同时使光耦发光管发光,继电器动作,开始辅助位检测线是为了防止有一根水位线断线系统拒绝辅助加热的情况,增强了系统容错性。P1.6

+5V +15VJ1220V1K J1220V4N25水位检测最低位非门输低位非门输

74LS09

1K LCD图2-19继电器输出电路P1.3P1.4P1.5P1.69013P1.3P1.4P1.5P1.69013图2-20 继电器控制上水装置与单片机连接硬件图) 303软件部分设计程序流程图设计53-1更加精确。查表程序采用对分查表法,既节省机时又无需太多要求。为了使显示和控制都更精确,表格分得越细越好,这需要在实验测量时采集更多的数据。主程序流程图31开始开始初始化延时温度、水位采样A/D转换显示子程序N按键中断?Y中断子程序回图3-1主程序流程图) 32显示程序流程图设计动态显示子程序动态显示子程序显示缓冲区首地址R0指向最左边一位DPTR8255B0地址取出要显示的地址求待显示数据的显示码求下一个位选码口修改显示缓冲区地址口1msN5位数显示完了吗?Y返回图3-2显示程序流程图330013H0013H关中断现场保护读键值Y是抖动?N判断键值执行键功能恢复现场中断回图3-3键盘中断程序流程图A/D) 34开始开始初始化A/转换A/转换结果读取结果NNRA单元修改通道号RA地址计数YY返回3-4AD换流程图软件程序设计#include<reg52.h>#include<intrins.h>#defineuintunsigned#defineucharunsigned#definesled_AD_port P035#definesled_WD_port P1 /*定义数码管段码的控制脚#definesled_wm_portP2 /*定义数码管位码的控制脚*/sbitDQ=P3^5; //定义DS18B20通信端口sbitADCS=P3^2;//ADC0832chipseclectsbitADCLK=P3^3;//ADC0832clocksignalsbitADDI=P3^4;//ADC0832datainsbitADDO=P3^4;//ADC0832dataoutsbitkai1=P3^0;sbitkai2=P3^1;sbitup_key=P3^6;sbitdown_keyucharcodedu_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};ucharcodewe_table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; /*要点亮的数码管*/uchardatasled_data[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};/*0-7号SLED缓冲值*/uchardataled_lighten_bit=0; /*LEDucharshuiwei;uintwendu;uchartemp_buff;voiddelay_1ms(uintz){

/*1MS为单位的延时程序*/ucharx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//////////////////以下是DS18B20驱动程序////////////////voiddelay(uinti){

//延时函数while(i--);}//初始化函数) 36Init_DS18B20(void){ucharx=0;DQ=1;//DQ复位delay(8);//稍做延时DQ=0;//DQDQ=1;//拉高总线delay(14);x=DQ;//x=0x=1delay(20);}//读一个字节Read(void){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//dat>>=1;DQ=1;//给脉冲信if(DQ) dat|=0x80;delay(4);}return(dat);}//写一个字节Write(uchar{uchari=0;for(i=8;i>0;DQ=0;DQ=dat&0x01;delay(5);DQ=1;37dat>>=1;}}//读取温度ReadTemperature(void){uchara=0;ucharb=0;uintt=0;floattt=0;Init_DS18B20();Write(0xCC);//Write(0x44);//启动温度转换Init_DS18B20();Write(0xCC);//跳过读序号列号的操作Write(0xBE);//读取温度寄存器等(9)a=Read();b=Read();t=b;t<<=8;t=t|a;tt=t*0.0625;//将温度的高位与低位合并t=tt*10+0.5;//对结果进行4舍5入return(t);}//////////////////以上是DS18B20驱动程序//////////////////采集数据unsignedintAdc0832(unsignedcharchannel){uchari=0;ucharj;uintdat=0;ucharndat=0;If(channel==0)channel=2;If(channel==1)channel=3;) 38ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//CLKADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//CLKADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲39_nop_();_nop_();Dat<<=1;If(i==7)dat|=ADDO;}For(i=0;i<8;i++){j=0;j=j|ADDO;//ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//CSCLKADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //returnaddata}xianshiTemperature(){ucharc;sled_WD_port=0;{wendu=ReadTemperature();//读取当前温度sled_data[3]=du_char[wendu/100];sled_data[4]=du_char[wendu%100/10];sled_data[5]=du_char[wendu%10];) 40for(c=3;c<6;c++){sled_wm_port=0x00;//关闭显示sled_WD_port=sled_data[c];//输出段码数据到数码管//if(c==4)sled_WD_port=sled_WD_port&0x7f;sled_wm_port=we_table[c];//输出位码数据到数码管delay_1ms(20);}}}xianshishuiwei(){ucharuu,d;sled_AD_port=0;{uu=Adc0832(0);shuiwei=uu/2.56;sled_Data[0]=du_char[shuiwei%100/10];sled_data[1]=Du_Char[shuiwei%10];For(d=0;d<2;d++){sled_wm_port=0x00;//关闭显示sled_AD_port=sled_data[d];//输出段码数据到数码管sled_wm_port=we_table[d];//输出位码数据到数码管delay_1ms(25);}}}Voidmain(){While(1){xianshishuiwei();XianshiTemperature();If(wendu<350)41kai1=0;If(wendu>400)kai1=1;if(shuiwei<20)kai2=0;if(shuiwei>90)kai2=1;}}) 424分析和总结AT89C52在需要打印的时候还可以打印出需要的数据。该系统结构合理、操作方便、性能可靠、运行稳定。通过此设计的分析可得到如下结论:AT89C52可靠性强的自动控制产品---太阳能热水器控制器的控制系统,实现了热水器温度水位的自动控制。本系统的设计尽量简化电路,提高软件质量。件

温馨提示

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

评论

0/150

提交评论