太阳能热水器的自动控制_第1页
太阳能热水器的自动控制_第2页
太阳能热水器的自动控制_第3页
太阳能热水器的自动控制_第4页
太阳能热水器的自动控制_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、 摘要随着人们生活水平的提高,各种热水器的使用已相当普及。与之相配套的控制仪也相继问世。然而,目前市场上的各种热水器控制电路还与理想要求相差甚远。消费者需要真正的“自动”控制,以实现使用的最简单化。就像家用电视机、电冰箱一样,接通电源、设定完毕就不用再操心了。本次毕业设计运用AT89C51单片机设计了一种自动控制电路,该电路用于太阳热水器,能实现在用水时,若日晒水温达不到设定值,则电加热自动补温。从而实现了热水器的自动及节能。本文详细介绍了基于单片机的太阳能热水器自动控制系统组成、硬件设计。实现了温度和水位参数的实时显示,而且具有温度设定、水位设定与控制功能,停电后再来电时也不用重新设定,具有

2、故障报警和故障自处理功能,良好的稳定性和抗干扰性能。  本文详细介绍了该控制系统的硬件设计过程及软件、硬件调试过程。关键词:单片机;自动控制;太阳能热水器;软件调试目 录摘要1Abstract11 引言21. 本课题技术性能要求:22. 工作原理:3 2.1 原理32.2实现方案33. 硬件设计4 3.1 直流电源的设计43.2 输入接口电路:63.3 键盘中断:93.4 显示接口93.5 电磁阀123.6 晶振:123.7 主机:124. 软件设计:28 4.1 I/O口的说明:28 4.2 系统存储器功能294.3 水温水位显示主程序:304.4 水温显示子程序:324.5 中断

3、服务程序344.6 T0中断服务程序354.7 水位设置及缺水上水至预置水位的程序374.8 上水及低水压上水子程序384.9 低水压上水414.10 手动上水42结论45致谢词45参考文献47引言当前能源紧缺,用电紧张,太阳能是绿色能源,得到广大用户的喜爱。使用太阳能热水器时存在的问题:不可缺水,空晒情况下上水会爆炸;春、秋天,水温升高蒸发,造成热能损失;冬天水温不够,须用电等等。采用太阳能热水器智能仪(仪称太阳能热水器水温水位测控仪),能解决上述问题。使用户省心,使用方便,智能运行,用户不必作任何操作。太阳能是一种低密度、间歇性、空间分布不断变化的能源,与常规能源有很大的区别,这就对太阳能

4、的收集和利用提出了较高的要求。在太阳能热利用中,为了得到中高温热能,必须使集热器从日出到日落跟踪太阳,而在太阳能光电中,相同条件下,自动跟踪发电设备要比固定发电设备的发电量提高35%,成本下降25%。因此在太阳能利用中,进行跟踪装置的控制方式进行研究是一项很有意义的工作。 1. 本课题技术性能要求:(1) 使用电源220V AC,功耗<5W。(2) 水温数码显示,测温范围099 0C;精度±20C。(3) 水位分五档显示(缺水、20、50、80、100%)。(4) 具有缺水上水、温控上水、手动上水和低水压上水等功能。(5) 水位设置。可设置加水水位20、50、80、100%(本

5、仪预置水位50%)。(6) 缺水报警。当水位从高到低,出现缺水状态时,蜂鸣报警,缺水指示灯闪亮。2. 工作原理:2.1 原理:利用热敏电阻和液位传感器检测水温和水位,并加以显示。根据水温水位情况进行控制。当水位从高到低,出现缺水状态时,蜂鸣报警,缺水指示灯亮,延时15分钟,若温度不超过990C,(以免空晒后上水造成炸管),自动上水至预置水位;若温度高于1000C,不上水。太阳晒后,水温上升,当温度超过600C且水未满时,打开电池阀上水至500C;防止出现低水量、高水温的不合理现象。晚上,若热水已用完,延时15分,进行缺水上水;若热水未用完,不上水,以保证热水充分利用;第二天太阳出来后,利用温控

6、上水。在上水的过程中,水压过低或停水,智能仪会自动进入低水压上水模式,低水压声光报警,间隔30分钟启动上水,若30分钟内不能使水位上升一挡,则停止30分钟,然后再启动,反复循环。以免电池阀长时间通电而烧毁。2.2实现方案:(附录1:系统示意图)通过“水位设置”键可进行水位设置,可设置加水水位20、50、80、100%(本仪预置水位50%)。通过“上水”键,可实现手动上水。通过“上水”键,若水位低于预置水位,可上水至预置水位;若水位已达到预置水位,则在原水位基础上再加一档;若水位已加满,则停止手动加水。在上水过程中,按“上水”键,可停止上水。3. 硬件设计:3.1 直流电源的设计:3.1.1 直

7、流电源的图解:本课题可采用集成三端稳压器,只要加上一些外围元件即可实现。其框图和电路分别如下图:3.1.2 方案论证:通过框图分析,该电路由四个部分组成,它们的功能分述如下:(1) 电源变压器它的任务是把电源电压变压到合适的大小。如果u2的值太大,会造成集成三端稳压器7805的功耗太大,温度升高,且浪费电能。反之,如果u2的值小到一定的程度,三端稳压器不能正常工作,失去稳压作用 。因此u2的值应大小合适,这个值应该使三端稳压器在交流电网电压最低和输出电流最大时能正常工作。而且在正常稳压的前提下,它的压降尽可能小,以减少功耗。(2) 整流电路它的任务是将正弦波变换成直流电压。这里一般采用桥式整流

8、电路来实现,即可用四个二极管来组成,也可用整流桥堆来完成,只是参数一定要选择合理。(3) 滤波电路它的任务是将全滤波形通过 RC 滤波网络以后变成更平坦的直流电压,减小脉动,提高整流的效果。这时整流管中通过的电流的瞬时值要比平均值大得多,特别在接通电源瞬间有相当大的冲击电流(即充电电流)通过整流管,这一点要引起注意。(4) 稳压电路要求输出恒定的直流电压,且要达到提出的要求,3.1.3 方案实现 :(1)计算u2和C1查阅集成三端稳压器的知了可知,对输出电压在5v12v之间的稳压器,其输入端的电压一般要比输出端电压高5v。而输出电压在15v24v的稳压器,其两端电压差达到7v9v左右。在此,如

9、果1,2两端的电压为12V,那么可以求得u2为10v。从电容滤波出发,C1的容量应足够大,但C1的容量也不能太大,否则整流元件的瞬时电流太大,而且容量越大,电容器的体积越大,价格越贵,根据经验综合各方面情况,取C1=3300uF.(2) 整流元件的参数1)目前,市场上有各种规格的整流桥堆出售,它有两个交流输入端和两个直流输出端。由于它体积小,使用方便,价格较低,已成为常用整流元件。根据上面的计算,本电源可选用1A/25V的整流桥堆。(2) 变压器二次绕组的电流变压器二次绕组的额定电流(交流有效值)应按2A设计。在本设计中,对电磁阀的直流电源的要求不不高,又因为1,2两端的电压为12V,为节省资

10、源,故可直接取用1,2两端的电压作为电磁阀的直流电压,无需再另行设计12V稳压电源。3.2 输入接口电路:接口电路是一组电路,是中央处理器与存储器、输入/输出设备等外设之间协调动作的控制电路。从更一般的意义上说,接口电路是在两个电路或外设之间,使两者动作条件相配合的连接电路。接口电路并不局限在中央处理器与存储器或外设之间,如直接存储器存取DMA接口电路就是控制存储器与外设之间数据传送的电路。接口电路的作用就是将来自外部设备的数据信号传送给微处理器,微处理器对数据进行适当加工,再通过接口电路传回外部设备。所以,接口电路的基本功能就是对数据传送实现控制,具体包括5种功能:地址译码、数据缓冲、信息转

11、换、提供命令译码和状态信息、定时和控制。本设计所用到的传感器,包括测水位的传感器与测水温的传感器,分别作如下介绍:(1)水位传感器:它的结构图如下:说明:结构图中的电阻外表面均不与水直接接触,但分别与a、b、c、d 良好接触,a、b、c、d用于感知水位。硬件图中HD74HC04P是一个六反向器,管脚如下图所示:它在本设计中用于接成环形振荡器。由传感器的结构图可看出:当水位未达到a时,即h<a时、这时传感器的总阻值为4R,对应,系统处于缺水状态。当ah<b时,传感器电阻阻值为3R,对应,系统处于20%水位。当bh<c时,传感器电阻阻值为2R,对应,系统处于50%水位。当ch&l

12、t;d时,传感器电阻阻值为R,对应,系统处于80%水位。当h=d时,传感器电阻阻值为0,对应,系统处于100%水位。其中,环形振荡器产生的方波周期T(或f)可通过单片机P87LPC744BN的两个定时/计数器(T0、T1)来确定,T1用来计数,T0用来定时。所以,水位传感器测水位的基本原理如下: (m为T1的计数值,为T0的定时值)。(2)水温传感器本设计可选选用具有负温度系数的热敏电阻来测水温,热敏电阻与普通电阻不同,它具有负的温度特性,当温度升高时,电阻值减小,它的应用是为了感知温度。现选用MF51型直热式负温度系数热敏电阻,它能满足本设计的测量灵敏度要求和2%的测量精度要求,性价比较高。

13、测量原理:与水位传感器一样,在设定好合适的参数(R1、R2、Rs、C)后,对应每个热敏电阻阻值,环形振荡器便能产生一个特定周期的矩形波。 T可通过单片机的T0外部计数和T1内部定时的方式确定。故 然后通过下列公式求温度: 其中 -被测温度-与热敏电阻特性有关的参数-与热敏电阻特性有关的系数-热敏电阻阻值以上计算均可由软件编程实现,把计算出的温度转化成BCD码,然后再存放于显示缓冲区中,执行相应的功能程序。3.3 键盘中断:本系统存储容量不大,4KROM,128RAM足够,由于只有二个键,且不经常操作,所以本设计中采用了中断方式,其中与P0.2口的键盘是用于手动上水功能,与P0.3口连接的键盘用

14、于水位设置的功能。3.4 显示接口:本设计中采用了共阴极接法,对于显示水温水位的程序作如下说明: 在动态扫描过程中,调用延时子程序Del1,其延迟时间为1ms,这是为了使扫描到哪位显示器稳定的点亮一段时间,犹如扫描过程中在每一位显示器上都一段驻留时间,以保证其显示亮度。 本设计接口电路是软件为主的接口电路,对显示数据以查表方法得到其字形代码,为此在程序中有字形代码Table,从0开始依次写入十六进制数的字形代码。为了进行查表操作,使用查表指令 MOVC A,A+DPTR,由DPTR提供16位基址,由A提供变址,因此显示数据送A后,再由A送P0.1P0.6输出给显示器。(1)水位显示:本系统需显

15、示水位,水位分缺水、20、50、80%五档,均用发光二极管来指示。(2)水温显示:本系统需显示水温,测量范围为099 0C,用两个八位LED数码管显示。1)LED结构和显示原理。LED(Light Emitting Diode)显示器是由发光二极管作为显示字段的显示器件,最常见的是由7段型发光二极管(ag7段)和1个圆点型发光二极管(常以dp表示,主要用来显示小数点)组成的LED显示器,其排列形状如下图所示。这种LED显示器也可称为7段数码显示器(或8段数码显示器)。LED显示中的发光二极管根据其连接的方法有共阴极和共阳极两种结构。共阴极结构:把各段发光二极管的阴极连接在一起构成公共阴极,如图

16、a所示。使用时,公共阴极接地,根据要求需点亮发光二极管的阳极输入高电平,不需点亮的发光二极管的阳极输入低电平。共阳极结构:把各段发光二极管的阳极连接在一起构成公共阳极,如图b 所示。使用时,公共阳极接+5V,根据要求需要点亮发光二极管的阴极输入低电平,不需点亮的发光二极管的阴极输入高电平。通过控制7个段的发光二极管的亮暗的不同组合,可以显示多种数字、字母以及其他符号。2)字段码。为了显示各个数字或字符,就需要为LED提供相应的代码,因为这些代码是控制各段的亮或灭,供显示器显示字形的,所以称为字段码(也可以称为段选码或字形码)。七段发光二极管再加上1个小数点位,共计8段,因此提供给LED显示器的

17、字段码正好1个字节。各代码位的对应关系如下:D7 D6 D5 D4 D3 D2 D1 D0dpgfedcba下图所示为共阴极LED所显示的不同字符的字段码,测量范围为099 0C,当温度超出范围时,显示器均显示F。显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FHF71H3)N位LED显示器。在单片机应用系统中,实际使用的LED显示器有多个,N位LED显示器的显示要从两个方面来控制:其一是控制N位的字段显示(即显示什么字符);其二是控制字位(即哪一位到哪一位亮)。由LED的显示原理可知,要使某N位LED显示器的某一位显示某个字符,就必须将此字符

18、转换为对应的字段码来控制该位的8个段,同时,该位的字位线也要控制有效,这要通过一定接口来实现。LED显示器有两种显示方式,即静态显示方式和动态显示方式。N位LED显示器有N根字位选线(简称:“位选线”)和N*8根字段选线(简称:“段选线”)。根据显示方式不同,位选线和段选线的连接方式也不同。各种字符的字段码的获取方法有两种:即软件译码和硬件译码法。目前通常所用的各种型号的单片机开发系统或实验装置普遍采用软件译码。当单片机应用系统中的LED显示器位数较多时,为了简化电路降低成本,本设计采用动态显示的方式。动态显示方式的接口电路的连接方法是:将所有LED位的段选线(a dp)同名并联,即所有a段并

19、联,所有b段并联。依次类推,然后由一个8位I/O接口来控制各个段,而所有位的位选线则由另外一个相应的I/O接口线来控制。这样用两个8位I/O接口就能控制8位LED显示器。LED显示器是由电流型控制器件,其工作电流为2mA20mA,使用时须加限流电阻。本设计中限流电阻选用1K。动态扫描显示控制方式就是逐个地循环点亮各位显示器,即在某一瞬间,只让某一位的位选线处于选通状态(共阳极的为高电平,共阴极的为低电平)其它各位的位选线处于段开状态,同时段选线上输出相应位要显示字符的字段码。这样在每一个瞬间,8位LED中只有选通的那一位LED显示出字符,而其它7位则是熄灭的。同样,在下一瞬间,只显示下1位LE

20、D。如此继续下去,等8位LED都显示完毕后,在循环进行。虽然这些字符是在不同的瞬时轮流点亮的,但由于人眼的视觉残留效应,看到的是8位稳定显示的字符,与静态显示的效果完全一样。所以为了简化电路、降低成本,此系统中采用动态显示方式。3.5 电磁阀:由于本系统中执行机构控制的是电磁阀,因此需用三极管进行功率放大。3.6 晶振:为给单片机提供工作所需要的时钟信号,本设计中采用了6MHZ的晶振。故系统中CPU执行的每一个机器周期为2us.3.7 主机:主机的选择是关键,选得好,可节省许多外围电路,本设计采用的是由Philips公司生产的P87LPC764BN芯片,是20脚封装的单片机,适合于要求高集成度

21、、低成本的场合。采用80C51加速处理器结构,指令执行速度是标准80C51的两倍。片内有4K字节OTP程序存储器,128字节的RAM。32Byte用户代码区可用来存放序列码及设置参数;有看门狗电路、复位电路(使用片内上电复位时不需要外接组件);2个16位定时/计数器,2个A/D转换器;所有口线均有20m A的驱动能力;电源电压VDD=4.56.0(操作频率为20MHZ)。本设计中已经充分利用了该单片机的所有I/O口,且已能满足设计的要求,性价比高,组成了一个最小,最优化的系统。现对P87LPC764BN这块芯片作如下介绍:(1)概述:P87LPC76x是20脚封装的单片机,适合于许多要求高集成

22、度、低成本的场合。可以满足许多方面的性能要求。作为Philips小型封装系列中的一员,P87LPC76x提供高速和低速的晶振和RC振荡方式,可编程选择。具有较宽的操作电压范围。可编程I/O口线输出模式选择,可选择施密特触发输入,LED驱动输出。有内部看门狗定时器。P87LPC76x采用80C51加速处理器结构,指令执行速度是标准80C51 MCU的两倍。 P87LPC76x采用增强型80C51 MCU,其运行速度是标准80C51的2倍,这意味着P87LPC76x在5MHZ时性能和标准80C51采用10MHZ时性能相同。一个机器周期由6个振荡周期组成,大多数指令执行时间为6或12个振荡周期,用户

23、亦可选择工作在标准80C51 MCU时序,这时一个机器周期变为12个振荡周期。 “MCU时钟”指控制内部指令执行的时钟。当系统被设置成为标准80C51时序(由CLKR位确定)或通过设定DIVM寄存器分频时,“MCU时钟”和外部所加时钟不同。(2)特性:􀁺 操作频率为20MHz时,除乘法和除法指令外,加速80C51指令执行时间为300600ns。VDD=4.56.0V时,时钟频率可高达到20MHz,VDD=2.74.5V时,时钟频率最大为10MHz。 􀁺 VDD=4.56.0V(P87LPC765HDH) 􀁺 数字信号的操作电压为2.76.0

24、V。 􀁺 P87LPC762为2K字节OTP程序存储器,P87LPC764为4K字节OTP程序存储器,128字节的RAM。32Byte用户代码区可用来存放序列码及设置参数。􀁺 2个16位定时/计数器,每一个均可设置为超时溢出时相应端口输出。􀁺 八个键盘中断输入,另加2路外部中断输入。4个中断优先级。 􀁺 看门狗定时器利用片内振荡,无需外接元件,看门狗定时器溢出时间有8级选择。 􀁺 低电平复位。使用片内上电复位时不需要外接元件。 􀁺 低电压复位。可选择预先设定好的两种电压之一复位,当掉电时

25、允许系统安全关闭。也可将其设置为一个中断源。 􀁺 可选择片内振荡及其频率范围和RC振荡(用户通过对EPROM位编程选择)。选择RC振荡器时不需外接振荡器件。 􀁺 如果选择片内振荡及复位时,P87LPC76x仅需要连接电源线和地线。 􀁺 20脚DIP、SO和TSSOP封装。管脚配置:逻辑符号:方框图:(3)键盘中断(KBI):键盘中断功能主要是使得连至P87LPC76x特殊脚的键盘上任一键被按下时能产生一个中断(见图12)。该中断可用于将MCU从空闲模式或掉电模式中唤醒。此特性尤其适合便携式且使用电池供电的系统。 P87LPC76x允许端口0

26、的部分或全部引脚被使能触发中断,这是通过对KBI寄存器对应位置位完成的,如图13所示。当打开KBI中断功能后,任一被使能引脚被拉低都会将AUXR1寄存器内键盘中断标志(KBF)置位。如若中断允许则将产生一中断。注意KBF位必须由软件清除。 由于人对时间分辨精度及键开关闭合的机械延迟,KBI特性通常可用于中断服务程序轮流查询端口0以确定按下的是哪个键,甚至决定处理器从低功耗模式唤醒。参见低功耗模式部分。本系统存储容量不大,4KROM,128RAM足够,由于只有二个键,且不经常操作,所以本设计中采用了中断方式,其中与P0.2口的键盘是用于手动上水功能,与P0.3口连接的键盘用于水位设置的功能。当产

27、生键盘中断时,用软件判断按下的是哪个键,框图如下:本设计中键盘中断要实现两个功能:水位设置和手动上水:1) 其中水位设置键与P0.3口连接,具体功能叙述如下:当水位不足情况下,未按下水位设置键时,默认预置水位为50%,在上水过程中,水位指示灯灭。当按一下水位设置键时,80%水位指示灯亮,表明要上水到80%;当按第二下水位设置键时,100%水位指使灯亮,表明要上水到100%;当按第三下水位设置键时,20%水位指示灯亮,表明缺水时,要上水到20%;当按第四下水位设置键时,预置水位又为50%,表明要上水到50%;在具体的软件判别中,可通过查表P0.3是否置高电平来确认键盘有没按下,可用MOV A,P

28、0;JNB ACC、3等几条指令来实现。通过对每一次的键盘按动进行加1记录,即当每次P0.3为高电平时,加一条INC R,指令,当R1为5时,又重新赋值为1,而后对R1的值进行判断,以确认水位设置键到底设置了哪个水位,框图如下:2) 手动上水键与P0.2口连接,可用MOV A,P0;JNB ACC、2两条指令来查看手动上水键有没被按下。它的具体功能如下:按“上水”键,若水位低于预置水位,可上水至预置水位;若水位已达到预置水位,则在原水位的基础上再加一档;若水位已加满,则停止手动加水,在上水过程中,按“上水”键,可停止上水。同水位设置键一样,当奇数次按下此键时,表示要上水,当偶数次按下此键时,表

29、示停止上水,框图如下:(4)振荡器:P87LPC76x提供几种用户可选振荡器选项,允许根据需要从高精度至最低成本范围内选择。这些选项在EPROM编程时配置。支持的基本振荡器类型包括:低、中、及高速晶振,20KHz20MHz,陶瓷振荡器及片内RC振荡器。片内RC振荡器选项(RC) 片内RC振荡器典型频率为6MHz,可通过DIVM寄存器分频后获取较低频率。注意片内振荡器频 率有±25%误差,因此不适于某些场合使用。使用RC振荡器时X2/P2.0脚可用作标准端口引脚。此时亦可选择X2/P2.0脚输出时钟。 时钟输出 P87LPC76x在选择片内RC振荡器或外部时钟输入时支持时钟输出功能。这

30、使得外部器件可与P87LPC76x同步。对P2M1寄存器的ENCLK置位后, 无论是否处于空闲模式, 只要片内振荡器运行, X2/CLKOUT就有信号输出。输出时钟频率为MCU时钟频率的1/6。如果空闲模式时不需要时钟输出,可在进入空闲模式之前关闭输出以节省电能。选择外部时钟时亦可输出时钟。 振荡器必须设置为下列模式之一:低频晶振 中频晶振 高频晶振 为限制晶振驱动电平可串联电阻,对于低频晶振尤其重要。 振荡器须设置为外部时钟输入模式。将P2M1寄存器内CLK位置位可从X2脚输出时钟。(5)复位:P87LPC76x内部集成了上电复位电路,用于在器件上电时提供一个复位信号。建议使用内部复位以节省

31、外部元件并可将P1.5作为通用的输入口使用。 P87LPC76x另外还可通过对用户配置寄存器UCFG1中的RPD位编程为0,将P1.5作为外部低有效复位管脚RST。此时内部复位在器件上电时仍然有效。当RST脚的信号为低电平时,P87LPC76x保持复位直到信号变为高电平。 看门狗定时器可用于检测振荡器是否正常工作,因为看门狗定时器使用的是独立的片内振荡器。对UCFG1的描述见本手册的“系统配置字节”一节。 将EPROM配置寄存器UCFG1内RPD位编程为1可关闭外部复位输入,即选择使用完全内部复位。(6)定时器计数器:P87LPC76x有两个通用定时/计数器,与80C51定时器0及定时器1兼容

32、。两者均可选择以计数器或定时器方式工作。另外增加了定时器溢出时T0与/或T1脚自动翻转的功能。 在用于定时器功能时,每个机器周期寄存器加1。所以可以视为计数机器周期。由于一个机器周期包含6个MCU时钟周期,所以计数频率为MCU时钟频率的1/6。有关MCU时钟参见增强MCU一节。 在用于计数器功能时,寄存器在T0或T1脚的每一个下降沿加1。此时,每一个机器周期对外部输入采样一次。当某一周期时引脚状态采样为高而下一周期采样为低,计数器加1。检测到跳变的下一周期寄存器更换新值。由于检测下降沿跳变需两个机器周期,所以计数频率最大值为MCU时钟频率的1/6。外部输入信号占空比并无限制,但必须保证信号在改

33、变之前至少被采样一次,信号必须保持至少一个整的机器周期。 通过特殊功能寄存器TMOD内控制位C/T选择定时器或计数器功能。此外,定时器0及定时器1有4种工作模式,由TMOD内M1及M0选择,模式0、1、2对于定时器及计数器是一样的。模式3则不同。(7)看门狗定时器:看门狗定时器由一个完全独立的振荡器控制,以保证其最大限度的可靠性,它通过“WDTE”位启动。当看门狗功能被启动,定时装置必须定时得到软件的清除,以防止其溢出,对MCU复位,但是定时装置不能被关闭。当不作为看门狗定时器(通过UCFG1寄存器的WDTE位控制),它将作为一个内部定时器使用,且产生中断。看门狗定时器如图31所示。看门狗溢出

34、时间选择有8个数据,理论上时间跨度从16ms到2.1秒。独立的看门狗RC振荡器的频率误差±37%,溢出时间和其它的控制位如图32所示。当使能看门狗功能时,在芯片初始化时向WDCON写入数据以设定看门狗溢出时间。建议初始化WDCON时,先清看门狗,然后写“WDCON”配置的WDS20位。采用这种方式,能在10ms内完成设置,从而避免在初始化完成前看门狗溢出复位。 由于看门狗定时器振荡器是一个完全独立于MCU的片内振荡电路,它实质上执行的是内部振荡器失灵的检测功能。当看门狗功能被启动,无论MCU振荡器因何故失灵,看门狗定时器都会溢出使MCU复位。 当看门狗功能被启动,定时器会因由于其它原

35、因造成芯片复位而暂时无效。如:电源复位、掉电复位或外部复位等。(8)看门狗清“0”顺序: 如果看门狗定时器正在进行,必须在其溢出产生复位前清“0”,看门狗清“0”顺序包括:先写立即数1EH,再写0E1H到“WDRST”寄存器。下面是一个操作实例: WDFeed: MOV WDRST,#1EH MOV WDRST,#0E1H 这两条写WDRST的命令不必是连续的两条指令。一个不正确的看门狗清“0”顺序不会引起看门狗定时器的任何即刻反应。只要此时间之前没有给它一个正确的清“0”,它仍然按最初设置的时间直到溢出。 发生芯片复位后,程序设计者清看门狗或改变溢出时间都有一定的限制时间。如果操作中使用低M

36、CU时钟频率,那么在发生看门狗溢出之前能被执行的指令非常少。 (9)附加功能:“AUXR1”寄存器由几个特别控制位组成,这些位另几种芯片功能相关。AUXR1在图33中详述。 4. 软件设计:4.1 I/O口的说明:P0.00.6分别用于输出7个字型码给显示器,同时,P0.0也作为缺水灯指示控制口,P0.1作为20%水位灯指示的控制口,P0.4作为50%水位灯指示的控制口,P0.5作为80%水位灯指示的控制口,P0.6作为100%水位灯指示的控制口。P0.3口还作为水位设置的输入口,在软件中可查看该口的电平高低,以确认水位设置键是否被按下。同理,P0.2口作为上水键的输入口,在软件中可查看该口的

37、电平高低,以确认水位设置键是否被按下。P1.0作为显示器显示温度值十位的位选,当P1.0=0时,显示器才能显示个位,否则 不显示。P1.7作为水位灯显示的位选,P1.7为高电平时,不显示水位灯,P1.7为低电平时,水位灯才能显示。P1.3口用于控制低水压上水指示灯,当系统正处于低水压上水时,低水压上水指示灯闪亮,即P1.3先处于高电平1s,再处于低1s,重复一段时间。P1.6口用于控制蜂鸣器,当系统处于缺水状态或低水压上水时,蜂鸣器都会鸣叫,即让P1.6处于高电平1 s,低电平1s,重复一定时间,以实现蜂鸣。P1.4口控制电磁阀,当系统需要上水或不上水时,即需通过软件使P1.4处于高低电平,将

38、P1.4置1时,打开电磁阀上水,将P1.4清0时,关电磁阀。P2.1及P2.0口用于外接晶振,为单片机提供工作所需的脉冲。P1.2口是定时/计数器T0的接口,用于对温度传感器,通过环形振荡器产生的方波进行计数,以求通过软件来计算出所测温度值。P0.7口用于定时/计数器T1的接口,水位传感器通过环形振荡器后,产生的方波的频率(或周期),即可由T1的计数,与T0的定时来求得。4.2 系统存储器功能:本设计中将温度传感器所测出的温度值的个位放入内部RAM 30H中,将十位放入内部RAM 31H中,将计数器T1读取的计数值放入50H中,在测水位时,将T0计数器读取的计数值存入60H中,经软件计算后,所

39、得的用于衡量水位高度的频率值放入20H中。查表程序中的数据表格,十六进制数字形代码表如下: TABLE+00H TABLE+01HTABLE+02H.TABLE+0FH3FH012.F06H5BH.71H4.3 水温水位显示主程序:ORG 0000HAJMP MAINORG 0003HAJMP INT0ORG 0013HAJMP INT1ORG 0030HMAIN: ACALL LOOP1 ; 调用显示水温子程序ACALL DEL1 ; 延时子程序SETB P1.0 ; 不显示温度(以下是水位程序)SETB P1.1 ; 同上CLR P1.7 ; 水位灯位选为0MOV A,20H ; 将水位值

40、送入(A)CJNE A,#a,PB0SETB P0.1SJMP FHPB0: JNC TD0 ; 如果f比a大,则转移,比a小是缺水状态MOV R4,#05HSETB P1.6 ; 蜂鸣器每3分钟叫一次LP6: MOV R3,#5AHLP5: MOV R7,#02H ;设置R7值LP2: MOV R6,#0FAH ;设置R6值LP1: SETB P1.0 ;十位显示器位选置1SETB P1.1 ;个位显示器位选置1CLR P1.7 ;水位显示位选清0SETB P0.0 ;缺水指示灯亮ACALL DEL1 ;调用1ms延时子程序ACALL LOOP1 ; 调温度显示子程序DJNZ R6,LP1D

41、JNZ R7,LP2MOV R7,#04HLP4: MOV R6,#0FAHLP3: ACALL LOOP1; DJNZ R6,LP3DJNZ R7,LP4DJNZ R3,LP5CLR P1.6 ;关蜂鸣器DJNZ LP6MOV A,31HRL AADD A,30HCJNE A,#99,ZY ;温度值不等990C则转ACALL SHSHSJMP MAINZY: JNC BSH;温度超过990C不上水,小于990C上水ACALL SHSHSJMP MAIN ;调转主程序BSH: CLR P1.4SJMP MAINTD0: CJNE A,#b,TD1 ; 水位值没到50%则转SETB P0.4 ;

42、50%水位指示灯亮SJMP FHTD1: CJNE A,#c,TD2 ;水位值没到80%则转SETB P0.5 ;80%水位指示灯亮SJMP FHTD2: CJNE A,#d,TD3SETB P0.6SJMP FHPB: SETB P0.5SJMP FH ;不缺水时水位指示灯显示子程序以上为显示水位子程序4.4 水温显示子程序: ORG 0050HLOOP1:MOV R0,#30HMOV DPTR,#TABLECLR P1.1SETB P1.7SETB P1.0ACALL LOOP2 ;先显示个位ACALL DEL1SETB P1.1CLR P1.0INC R0ACALL LOOP2 ;再显示

43、十位RETORG 0070HLOOP2: MOV A,R0 ;查表子程序MOVC A,A+DPTRTABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79HDB 71H,00HMOV P0,ARETORG 0090HDEL1: MOV R6,#0F9H ;1ms延时子程序LOOP3: DJNZ R6,LOOP3RETFH: MOV A,31HRL AADD A,30HCJNE A,#60H,PD0SJMP MAINZP0: MOV A,20HCJNE A,#d SH0 ;水位小于100%则上水至500CSJ

44、MP MAINSH0: MOV R3,#09HZL2: MOV R7,#OFFHZL1: MOV R6,#OFFHZL0: SETB P1.4ACALL DEL1 ;1msACALL LOOP1 ;1ms调水温显示ACALL DEL1 ;1msSETB P1.0SETB P1.1CLR P1.7ACALL TD0 ;调水位显示MOV A,31HRL AADD A,30HCJNE A,#50H,JXX ;30分钟内有没上水到500C,若没转移CLR P1.4SJMP MAINJXX: DJNZ R6,ZL0DJNZ R7,ZL1DJNZ R3,ZL2CJNE A,#50HCLR P1.4SJMP

45、 MAINZZH: ACALL DSH ;调低水压上水SJMP SH04.5 中断服务程序:ORG 0100HINT1: 0PUSH ACCMOV A,TH0CJNE A,61H,ZHYD2MOV A,TL0 ;读低八位CJNE A,50H ;比较低八位SJMP ZHYD3 ;T0值没有变化转移ZHYD程序ZHYD2:MOV A,TH0 ;存放高八位MOV 61H,AMOV A,TL0MOV 60H,A ;存放低八位MOV 20H,#H ; 把所测水位值放入20H中ZHYD3:MOV TMOD,#51H ;设置T0定时,T1计数并采用方式2MOV TH0,#00HMOV TL0,#00HMOV

46、 TH1,#00HMOV TL1,#00HSETB TR0 ;启动T0SETB TR1 ;启动T1POP ACCRET4.6 T0中断服务程序:ORG 0200HINT0: CLR TR1MOV SP,PUSH ACCMOV A,TH1 ;读高八位CJNE A,51H,ZHYD0 ;高八位不等,则两数不等转移MOV A, TL1 ;读低八位CJNE A,50H ;比较低八位SJMP ZHDY1 ;相等则转移ZHYD0:MOV A,TH1 ;放入高八位MOV 51H,AMOV A,TL0 ;放入低八位MOV 50H,ALOOP: MOV B,#XXHMUL ABMOV A,#YYHCLR CSU

47、BB A,BCJNE A,#6AH ;看下所测温度有没超1000CLOOP1:JNC LOOP2 ;低于1000C顺序执行,高于1000C转移MOV R0,#00HCLR CCHAN2:SUBB A,#0AH ;减10JC CHAN3 ;不够减转移INC R0 ;够减,十位数加1SJMP CHAN2 ;重复减10CHIN3: ADD A,#0AHMOV 31H,R0 ;BCD码十位送显缓MOV 30H,A ;BCD码个位送显缓ZHYD1:MOV TMOD,#15H ;设置T1定时,T0计数并采用方式1MOV TH0,#00H ;送初值MOV TL0,#00HMOV TH1,#00HMOV TL

48、1,#00HSETB TR0 ;开启T0计数SETB TR1 ;开启T1定时SJMP LOOP3LOOP2:MOV 30H,0FHMOV 31H,0FHACALL LOOP1 ;显示温度LOOP3:POP ACCRETI4.7 水位设置及缺水上水至预置水位的程序:ORG 0300HSHSH: MOV R1,#00HMOV AUXR1,#00H ;先将置位端KBF清 0MOV KBI,#0CH ;允许.P0.3,P0.2口中断SETB EKB ;使能触发MOV A,P0ORL A,#0CH ;将P0.2,P0.3位先置高,其它位不变MOV P0,AMOV A,P0JNB ACC.3,KEY ;P

49、0.3为0,即键被按下ACALL SH50 ;未被按下,预置水位为50%SJMP FHZKEY3: INC R1MOV AUXR1,#00HCJNE R1,#05H,BJ1MOV R1,#01HACALL SH80SJMP FHZBJ1: CJNE R1,#01H,BJ2ACALL SH80SJMP FHZBJ3: CJNE R1,#03H,ZHD ACALL SH20SJMP FHZZHD: ACALL SH50FHZ: RETI4.8 上水及低水压上水子程序: ORG 0400HSH50: MOV R4,#09HJX3: MOV R3,#6AHJX2: MOV R7,#04HJX1: MOV R6,#0FAHJX0: SETB P1.0SETB P1.1SETB P1.7SETB P0.4SETB P1.4 ;开电磁阀ACALL DEL1 ;1msMOV A,20HCJNE A,#b,JXSETB P1.3CLR P1.4 ;上水完毕关电

温馨提示

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

评论

0/150

提交评论