《太阳能热水器温度控制系统设计最终.doc》由会员分享,可在线阅读,更多相关《太阳能热水器温度控制系统设计最终.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流太阳能热水器温度控制系统设计最终.精品文档.目 录1绪 论21.1 课题背景21.2太阳能热水器21.3设计要求21.3.1控制要求21.3.2受控对象的数学模型32 对硬件电路的研究与设计42.1 单片机核心简介42.1.1 组成框图及内部总体结构42.1.2 寄存器和存储器52.1.3 单片机各口及其负载能力、接口要求62.1.4 MCS51单片机的引脚功能82.2 对温度传感器的选择122.2.1 温度传感器的作用122.2.2 常用的温度传感器类型122.2.3 温度传感器的选择142.2.4 DS18B20 详解152.3对显示模块
2、的设计222.3.1 1602液晶的硬件222.3.2 1602指令集252.4 时钟电路设计262.4.1时钟电路方案研究262.4.2 DS1302硬件研究262.5 系统的输入设备292.5.1 键盘的设计292.5.2 电源的设计302.5.3 电源方案的确定312.5.4 电源的设计原理312.5.5 电源的性能要求322.6 外部驱动电路的设计332.7 水位监测电路的设计342.7.1 水位监测的方案对比353 软件设计373.1流程图373.2程序37附录一电路原理图:38附录二PROTEUS效果图:391绪 论1.1 课题背景太阳能作为一种新能源,它与常规能源相比有三大特点:
3、第一:它是人类可以利用的最丰富的能源。据估计,在过去漫长的11亿年中,太阳消耗了它本身能量的2%。今后足以供给地球人类,使用几十亿年,真是取之不尽,用之不竭。第二:地球上,无论何处都有太阳能,可以就地开发利用,不存在运输问题,尤其对交通不发达的农村、海岛和边远地区更具有利用的价值。第三:太阳能是一种洁净的能源。在开发利用时,不会产生废渣、废水、废气、也没有噪音,更不会影响生态平衡。绝对不会造成污染和公害。1.2太阳能热水器基于太阳能各种优点,我们应该对其进行充分的利用,在以太阳能为主要能源的家用电器中,与我们日常生活密切相关的产品就是太阳能热水器。随着太阳能热水器市场竞争的日益激烈,品牌集中度
4、将越来越高,消费者购买时的品牌意识也逐步增强,因此太阳能市场的前景还是一片大好。在本论文中,我主要阐述我对太阳能热水器的一种设计理念。本系统会具有时间、温度和水位三种参数实时显示和控制功能,而且具有时间设定、温度设定与控制功能。针对我对太阳能热水器的设计理念,首先我要解决的问题是寻求一款性能优良的温度传感器来实时对太阳能热水器中的水温进行检测,毕竟消费者所买来的太阳能热水器是用来洗澡的,因此对于能否放出适宜的温度时至关重要的。其次,要做较好的安全措施,要对消费者的人身安全负责,这样,我便需要对热水器进行一定的漏电保护及防止电热丝干烧的措施。对于以上我所提出的问题,我将进行详细的论述与严谨的思考
5、。1.3 设计要求1.3.1 控制要求(1)要求太阳能热水器温度控制系统具有时间、温度和水位三种参数实时显示和控制。功能,而且具有时间设定、温度设定与控制功能。 (2)设计和实现太阳能热水器温度控制器的硬件电路,其中包括数据采集电路、控制执行电路、显示电路等。(3)用PROTEL2004软件对本系统的硬件电路进行绘制和设计。同时做出本控制系统的PROTEUS仿真。1.3.2 受控对象的数学模型在太阳能热水器系统中,最重要的环节便是温度控制环节,我们首先手动设置适合人类淋浴的水温,我们对水问控制包括两个方面,即:水温太热,我们需要多加入凉水进行温度的调节;另一方面是水温太高,而外界的太阳能亮又不
6、能使水温迅速达到我们的要求,那么就是控制系统自动启动电热丝,对水温进行加热,因此我们的控制对象有两个,那就是加水和加热。2 对硬件电路的研究与设计2.1 单片机核心简介2.1.1 组成框图及内部总体结构 80C5l内部组成方框图如图1所示,内部总体结构框图如图2所示。图2-1 80C51单片机组成方框图图2-2 80C51总体结构框图80C51主要包括算术逻辑部件ALU、累加器A(有时也称ACC)、只读存储器ROM、随机存储器RAM、指令寄存器IR、程序计数据PC、定时器计数据、 IO接口电路、程序状态寄存器PSW、寄存器组,此外,还有堆栈寄存器SP、数据指针寄存器DPTR等部件。这些部件集成
7、在一块芯片上,通过内部总线连接,构成完整的微型计算机。下面按其部件功能分类予以介绍。2.1.2 寄存器和存储器微处理器中的寄存器是学习指令系统和程序设计中常会接触到的、寄存器是由触发器组成的,8位寄存器由8个触发器组成,16位寄存器由16个触发器组成。MCS51中的寄存器较多,大体可分为通用寄存器和专用寄存器两类。图2-3 微处理器存储器结构MCS51存储器配置:微型计算机必须配置一定数量的存储器,但不同的微型计算机存储器的配置不同。一种是程序与数据共用一个存储器,如图3(a)所示。一般的通用计算机都采用此种形式。另一种是将程序与数据分别放在两个存储器内,一个称程序存储器,另一个称数据存储器,
8、如图3(b)所示。MCS5l单片机属于此类。这是由单片机的应用特点所决定的,因为单片机往往是为某个特定对象服务的,这是与通用计算机不同的一个显著特点。它的程序设计调试成功后,一般是固定不变的,因而程序(包括常数表)可以而且也应该一次性地永久放到单片机内。这样不仅省去了每次开机后台程序重新装入步骤,还可以有效地防止围掉电和其它干扰而引起的程序丢失的错误。MCS51片内集成有一定容量的程序存储器(803180c318032除外)和数据存储器并具有较大的外部存储器扩展能力。物理上,MCS51有4个存储器空间:片内程序存储器、片外程序存储器,片内数据存储器、片外数据存储器。图4给出了访问程序存储器时,
9、程序取指所涉及到的信号和时序。如果程序存储器是外部的,则程序存储器读选PSEN一般是每个图2-4 MCS-51 执引外部程序存储器中指令码时的总线周期机器周期两次有效,如图4(a)所示,如果是访问外部数据存储器,如图4(b)所示,则要跳过两个PSEN,因为地址和数据总线正在用于访问数据存储器。应该注意的是,数据存储器总线周期为程序存储器总线周期的2倍,图5给出了端口0和端口2所发送的地址ALE和PSEN的相对时序。ALE用于将P0的低位地址字节锁存到地址锁存器中。2.1.3 单片机各口及其负载能力、接口要求MCS51单片机有4个口,共32根I/O线。所有4个端口都是双向口,每口都包含一个锁存器
10、,即专用寄存器P0-P3,一个输出驱动器和输入缓冲器。为了方便起见,我们把4个端口和其中的锁存器(即专用寄存器)都笼统地表示为P0P3。MCS-51在访问外部存储器时,地址由P0、P2口送出,数据则通过P1口传送,这时P0口是分时多路转换的双向总线。无外部存储器的系统中,所有4个端口都可以作为准双向口使用。P0口是8位双向三态输入输出接口,如图5(a)所示。P0口既可作地址数据总线使用又可作通用IO口用。连接外部存储器时,P0口一方面作为8位数据输入输出口,另一方面用来输出外部存储器的低8位地址。作输出口时,输出漏极开路,驱动NMOS电路时应外接上拉电阻;作输人口之前,应先向锁存器写1,使输出
11、的两个场效应管均关断,引脚处于“浮空”状态,这样才能做到高阻输入,以保证输人数据的正确。正是由于该端口用作IO口,输入时应先写l,故称为准双向口。当P0口作地址数据总线使用时,就不能再把它当通用I/O口使用。P1口是8位准双向口,作通用输入输出口使用,如图5(b)所示。在输出驱动器部分,Pl口有别于P0口,它接有内部上拉电阻。P1口的每以一位可以独立地定义为输人或者输出,因此,P1口既可作为8位并行输入输出口,又可作为8位输入输出端。CPU既可以对P1口进行字节操作,又可以进行位操作。当作输入方式时,该位的锁存器必须顶写1。P2口是8位准双向输入输出接口,如图5(c)所示。P2口可作通用I0口
12、使用与P1口相同。当外接程序存储据时,P2口给出地址的高8位,此时不能用作通用,IO口。当外按数据存储器时,若RAM小于256KB,用R0、R1作间址寄存器,只需要P0口送出地址低8位,P2口可以用作通用IO ;若RAM大于256KB,必须用16位寄存器DPTR作间址寄存器则P2口只能在一定限度内作一股IO 口使用。 P3口也是一个8位的准双向输入输出接口,如图5(d)所示。它具有多种功能。一方面与P1口一样作为一般准双向输入输出接口,具有字节操作和位操作二种工作方式;另一方面8条闲人输出线可以独立地作为串行输入输出口和其它控制信号线。图2-5 I/O一位锁存器和缓冲器结构P0P3端口的负载能
13、力及接口要求P0口的输出级与P1-P3口的输出级在结构上是不同的,因此它们的负载能力和接口要求也各不相同。P0口的每一位输出可驱动8个LSTTL输入,但把它当通用口使用时,输出级是开漏电路,故用它驱动NM0S输入时需外接上拉电阻;把它当地址数据总线时,则需接外部上拉电阻。P1P3口的输出级接有内部上拉电阻,它们的每一位输出可驱动4个LSTTL输入。CHMOS端口只能提供几毫安的输出电流,故当作为输出口去驱动一个普通晶体管的基极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流。I/O口的读一修改一写特性由图5可见,每个IO端口均有两种读人方法,读锁存器和读引脚,并有相应的指令,那
14、么如何区分读端口的指令是读锁存器还是读引脚呢?读锁存器指令是从锁存器中读取数据,进行处理,并把处理以后的数据重新写入锁存器中这类指令称为“读一修改一写”指令。当目的操作数是一个IO端口或IO端口的某一位时,这些指令是读锁存器而不是读引脚,即为“读一修改一写”指令,下面是一些“读一修改一写”指令。ANL (逻辑与,例如 ANL P1,A)ORL (逻辑或,例如 ORL P2,A)XRL (逻辑异或,例如 XRL P3,A)JBC (若位=1,则转移并清零,例如 JBC P1.1,LABEL)CPL (取反位,例如CPL,P3.0)INC (递增,例如INC P2)DEC (递减,例如DEC P2
15、)DJNZ (递减,若不等于0则转移,例如DJNZ P3,LABEL)MOV P1.7 C(进位位送到端口P1的位7)CLR P1.4 (清零端口P1的位4)SETB P1.2 (置位端口P1的位2)读引脚指令一般都是以IO端口为原操作数的指令,执行读引脚指令时,打开三态门,输人口状态。例如,读P1口的输入状态时,读引用指令为;MOV A,P1。读一修改一写指令指向锁存器而不是引脚,其理由是为了避免可能误解引脚上的电平。例如,端口位可能用于驱动晶体管的基极,在写1至该位时,晶体管导通,若CPU随后在引脚处而不是在锁存器处读端口位,则它将读回晶体管的基极电压,将其解释为逻辑0。读该锁存器而不是引
16、脚将返回正确值逻辑1。2.1.4 MCS51单片机的引脚功能 MSC-51单片机采用40引脚的双列直插封装(DIP)方式。图6为其引脚及逻辑符号图。在40条引脚中,有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制引脚,3I/O引脚。下面分别叙述各引脚的功能。1、主电源引脚Vss和VccVss(20):接地;Vcc(40):正常操作时接十5V电源2 、外接晶体引脚XTAL1和XTAL2当外接晶体振荡器时,XTAL1和XTAL2分别接在外接晶体两端,当采用外部时钟方式时,XTAL1接地,XTAL2接外来振荡信号。图2-6 MCS51单片机引脚图及逻辑符号图3、控制引脚 RST/Vpp(9):
17、当振荡器正常运行时,在此引脚上出现二个机器周期以上的高电平使单片机复位。Vcc掉电期间,此引脚可接备用电源,以保持内部RAM的数据。当Vcc下降掉到低于规定的水平,而VPD在其规定的电压范围内,VPD就向内部RAM提供备用电源。ALE(30):当访问外部存储器时,由单片机的P2口送出地址的高8位,P0口送出地址的低8位,数据也是通过P0口传送。作为P0口某时选出的信息到底是低8位地址还是传送的数据,需要有一信号同步地进行分别。当ALE信号(允许地址锁存)为高电平(有效)P0口送出低8位地址,通过ALE信号锁存低8位地址。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率
18、为振荡器频率的16,因此可用作对外输出的时钟。但需注意:当访问外部数据存储器(执行MOVX指令)时,将跳过一个ALE脉冲。ALE端可驱动8个LSTTL输入。PSEN(29):程序存储器读选通信号,低电平有效。MCS51单片机可以外接程序存储器及数据存储器,它们的地址可以是重合的。MCS5l单片机是通过相应的控制信号来区别到底P2口和P0口送出的是程序存储器还是数据存储器地址。从外部程序存储器取指令(或常数)期间,每个机器周期两次 有效,此时地址总线上送出地址为程序存储器地址;如果访问外部数据存储器,这两次有效的P5EN信号将不出现。外部数据存储器是靠 (读)及 (写)信号控制的。同样可以驱动8
19、个LSTTL输入。EAVpp(31):当EA保持高电平时,访问内部程序存储器(4K8),但当PC(程序计数器)值超过OFFFH时,将自动转向执行外部程序存储器内的程序当EA保持低电平时,则只访问外部程序存储器(从0000H地址开始),不管单片机内部是否有程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚用于施加21V的编程电源(Vpp)。输入输出引脚 P0.0P0.7(3932):P0口是一个漏极开路型准双向IO口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。在EPROM编程时,它接收指令字节,而在验证程序时,则输出指令字节。验
20、证时,要求外接上拉电阻。P1.0P1.7(18):P1口是带内部上拉电阻的8位双向IO口。在EPROM编程和程序验证时,它接收低8位地址。P2.0P2.7(2128):P2口是一个带内部上拉电阻的8位双向IO口。在访问外部存储器时,它送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。 P 3.0P3.7(1017):P3口是一个带内部上拉电阻的8位双向IO口。在MCS5l中,这8个引脚还兼有专用功能,这些功能见表1。这些专用功能的口线,在与外部设备接口、外接数据存储器等方面具有非常重要的作用。表1 P3 各口线与专用功能下图是设计的单片机最小系统图:下图是在仿真中的单片机系统
21、图:2.2 对温度传感器的选择2.2.1 温度传感器的作用在太阳能热水器系统中,我们要对水温进行检测,因此我们需要把水温这个非电量,通过适宜的温度传感器转换成一个电量,从而我们对温度值所对应的电信号进行处理,最终达到我们的控制要求。因此,温度传感器在本系统中起到了非常重要的作用。2.2.2 常用的温度传感器类型(1) 热电偶温度传感器对于热电偶温度传感器,其工作原理是将两种不同材料的导体或半导体A和B焊接起来,构成一个闭合回路,如图2-1-1所示。当导体A和B的两个执着点1和2之间存在温差时,两者之间便产生电动势,因而在回路中形成一个大小的电流,这种现象称为热电效应。温度传感器热电偶就是利用这
22、一效应来工作的。同时,热电偶温度传感器还具有一些优点,即:测量精度高。因温度传感器热电偶直接与被测对象接触,不受中间介质的影响。测量范围广。常用的温度传感器热电偶从-50+1600均可边续测量,某些特殊温度传感器热电偶最低可测到-269(如金铁镍铬),最高可达+2800(如钨-铼)。构造简单,使用方便。温度传感器热电偶通常是由两种不同的金属丝组成,而且不受大小和开头的限制,外有保护套管,用起来非常方便。但是,由于热电偶温度传感器客观的结构形式,为了保证温度传感器热电偶可靠、稳定地工作,我们要求组成温度传感器热电偶的两个热电极的焊接必须牢固;两个热电极彼此之间应很好地绝缘,以防短路;补偿导线与温
23、度传感器热电偶自由端的连接要方便可靠;保护套管应能保证热电极与有害介质充分隔离。(2)热敏电阻温度传感器热电阻温度传感器测温是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的。温度传感器热电阻大都由纯金属材料制成,目前应用最多的是铂和铜,此外,现在已开始采用甸、镍、锰和铑等材料制造温度传感器热电阻。其主要有精通型温度传感器热电阻、铠装温度传感器热电阻、端面温度传感器热电阻、隔爆型温度传感器热电阻等集中类型。对于温度传感器热电阻测温系统,一般由温度传感器热电阻、连接导线和显示仪表等组成。必须注意:温度传感器热电阻和显示仪表的分度号必须一致;为了消除连接导线电阻变化的影响,必须采用三
24、线制接法。(3)红外线测温技术.红外检测器将吸收的辐射转化为热能,因此提高检测器的温度。并把温度变化数据转化成电子信号,放大显示出来。红外线是占据在可见光之间电磁波谱的一部分。电磁波谱是一组不同类型的辐射。它包括伽马射线、X射线、紫外线、可见红外辐射、微波、和无线电波。红外线的波长大于可见光的波长。因此红外线是一种不可见光。“红外”的意思就是“在红线以下”,表明这种光只有在电磁波谱的红光以下才能被看到。红外非接触温度感测器可以测量所有目标物体释放的红外能量,具有响应快的特点。通常被用于测量移动和间歇性目标,真空状态下的目标,由于恶劣环境空间限制以及安全威胁无法由人接触的目标。尽管在有些情况下使
25、用其它设备也可以完成,但成本相对较高。(4) DS18B20数字式温度传感器DS18B20数字式温度传感器采用独特的单线接口方式,该温度传感器在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。其测温范围在55125之间,采用独特的一线接口,只需要一根数据线即可完成通信任务。电压范围为3.0 V至5.5 V,无需备用电源。该传感器由于体积小巧,测量温度转却,因此应用范围很广,该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域等等。该温度传感器可编程的分辨率为9 12位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置
26、 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统。由于每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。 2.2.3 温度传感器的选择通过我对市场上现存的各种各样的温度传感器进行比对调查,我发现DS18B20数字型温度传感器最适合应用到我所设计的太阳能热水器系统中。对于热电偶温度传感器来说,虽然其测温范围非常广,甚至最高能测数千摄氏度的高温,但是在我们的太阳能热水器中,其水温最高也超不过100摄氏度,因此要那么高的量程是没有任何实际意义的,同时,在使用热电偶温度传感器时有很多的不便之处,例如需要温度
27、校正、温度补偿等等细节问题,都太繁琐,这样不利于简化产品生产工艺和降低生产成本,同时,热电偶温度传感器虽然能够将温度信号转换成电信号,但是这样的电信号只是一个模拟信号,我们无法将这样的模拟信号直接传送给单片机进行处理,因为我们的51单片机只能够处理数字量,因此假如要对热电偶温度传感器输出地模拟信号进行处理,我们只能通过一定的放大电路,将微弱的电信号进行放大,再通过模数转换电路,将模拟信号转换成数字信号,只有这样,我们才能用51单片机进行数字运算,在这过程中,我们还必须用到一个模数转换器件,这样无疑又增加了成本,这是不理智的。因此,把热电偶温度传感器运用到我们的太阳能热水器系统中来,这是不合适的
28、。对于热敏电阻传感器来说,其具有如同热电偶温度传感器相同的弊端,那就是转换出来的温度信号也是个非常微弱模拟量,也需要对这个微弱的模拟信号进行放大,最终经过模数转换电路才能传送给单片机进行处理运算,因此,采用热电阻温度传感器作为本太阳能热水器的测温器件也是不合理的。综合以上分析,我发现只有DS18B20温度传感器才是能够运用到太阳能热水器中的最佳选择。因为DS1B820具有合适的量程,即:-55-+125。这个量程能够完全满足对太阳能热水器中的水温进行测量,同时具有较高的灵敏度,除此之外,该温度传感器还具有其他形式的温度传感器最大的优势,那就是该温度传感器是一个数字式的温度传感器,它能够在非常短
29、的时间内,将外界的非电量的温度信号转换成一串二进制数,我们对这一串二进制数进行运算就可以得到准确的温度值,这样,我们不仅可以测量出精确地温度值,我们还省却了复杂的信号放大电路及模数转换电路,这样便极大地降低了生产成本和简化了生产工艺,因此我最终选择了DS18B20温度传感器作为该太阳能热水器的测温元件。2.2.4 DS18B20 详解2.2.4.1 DS18B20的主要特性 (1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 (3)DS18B20支持
30、多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 (4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 (5)温范围55125,在-10+85时精度为0.5 (6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温 (7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 (8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 (9)负压特性:
31、电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 2.2.4.2 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图:图 DS18B20的外形及管脚2.2.4.3 DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随
32、温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。DS18B20有4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址
33、序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的
34、数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。(3)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器 该字节各位的意义如下: 低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B
35、20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)2.2.4.4高速暂存存储器 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表?2是对应的一部分温度值。第九个字节是冗余检验字节。 根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成
36、温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。2.2.4.5 DS18B20的应用电路 DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。下面就是DS18B20几个不同应用方式下的测温电路图: 1、DS18B20寄生电源供电方式在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:
37、在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。独特的寄生电源方式有三个好处:1)进行远距离测温时,无需本地电源2)可以在没有常规电源的条件下读取ROM3)电路更加简洁,仅用一根I/O口实现测温 要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,图2-3电路只适应于单一温度传感器测温情况
38、下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。2、DS18B20寄生电源强上拉供电方式改进的寄生电源供电方,为了使DS18B20在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10S内把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。注意:在寄生电源供电方式中,DS1
39、8B20的VDD引脚必须接地3、DS18B20的外部电源供电方式 在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。站长推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式
40、下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。下图是本系统中的DS18B20的原理图及仿真效果图:2.3 对显示模块的设计2.3.1 1602液晶的硬件通过对本太阳能热水器系统的功能要求进行分析,在正常使用时需要显示的信息分别是时间、温度、水位三个量,基于现实的数据量不是太大,同时为了简化将来的生产工艺和降低生产成本,我选用了较为常用且价格低廉的1602液晶屏作为本太阳能温度控制系统的现实器件。1602是工业字符型液晶,能够同时显示16x02即32个字符能显示16列2行字符。1602字符型LCD通常有14条引脚线或16条引脚线的LCD
41、,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,以下是各个口线的功能定义:下图是在protel2004中设计的液晶显示电路:以下是在PROTEUS仿真中的液晶显示效果图:在系统正常运行时,在液晶屏幕的左上角显示从0-4的数值,分别对应五个档位的水位指,当水位为0时,说明缺水,水位为4时,说明水充足。在液晶的第一行靠右边显示的是系统的时间,包括小时、分钟和秒。在液晶的第二行左边显示的数值是当前温度传感器所检测到得水温值,右边显示的是我们认为设定的温度值。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,
42、这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。2.3.2 1602指令集1602通过D0D7的8位数据端传输数据和指令。显示模式设置: (初始化)0011 0000 0x38 设置162显示,57点阵,8位数据接口;显示开关及光标设置: (初始化)0000 1DCB D显示(1有效)、C光标显示(
43、1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),N=0(读或写一个字符后地址指针减1 &光标减1),S=1 且 N=1 (当写一个字符后,整屏显示左移)S=0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。通常推荐的初始化过程:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms(以上都不检测忙信号)(以下都要检测忙信号)写指令38H写指令08H 关闭
44、显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置2.4 时钟电路设计2.4.1 时钟电路方案研究由于本系统需要显示时间,根据以往的经验,在单片机系统中进行时钟的显示,通常用两种方法。第一种方法是利用单片机的定时器进行定时,例如,通过一个定时器定时10毫秒,每当是毫秒到后就对一个变量进行累加,当这个变量累加到100的时候,也就产生了一秒的定时。利用这种方法来做时钟功能具有节约成本,简化电路的优点,但是也具有很大的缺点,一方面,通过自身的定时器来产生一秒的定时,会产生误差,经过一段时间后,误差累计,从而导致时间会不准,令一个缺点就是在系统断电后重新工作时,由于单片
45、机掉电后内存中的数据全部不能保存,因此时间会重置,增加了设备的不稳定因素。基于以上考虑,我没有利用定时器来做时钟功能,而是引入市场上技术较成熟且廉价的DS1302时钟芯片来完成时钟功能的设计。2.4.2 DS1302硬件研究DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS
46、1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单
47、字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。下图为DS1302的引脚功能图:在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。在控制指令字输