太阳能热水器智能仪

论文价格:0元/篇 论文用途:仅供参考 编辑:论文网 点击次数:0
论文字数:**** 论文编号:lw202392004 日期:2025-01-23 来源:论文网

摘要:当前能源紧缺,用电紧张,太阳能是绿色能源,得到广大用户的喜爱。使用太阳能热水器时存在的问题:不可缺水,空晒情况下上水会爆炸;春、秋天,水温升高蒸发,造成热能损失;冬天水温不够,须用电等等。采用太阳能热水器智能仪(仪称太阳能热水器水温水位测控仪),能解决上述问题。使用户省心,使用方便,智能运行,用户不必作任何操作。

关键词:太阳能热水器 工作原理 技术性能

引言

  当前能源紧缺,用电紧张,太阳能是绿色能源,得到广大用户的喜爱。使用太阳能热水器时存在的问题:不可缺水,空晒情况下上水会爆炸;春、秋天,水温升高蒸发,造成热能损失;冬天水温不够,须用电等等。采用太阳能热水器智能仪(仪称太阳能热水器水温水位测控仪),能解决上述问题。使用户省心,使用方便,智能运行,用户不必作任何操作。

  太阳能是一种低密度、间歇性、空间分布不断变化的能源,与常规能源有很大的区别,这就对太阳能的收集和利用提出了较高的要求。在太阳能热利用中,为了得到中高温热能,必须使集热器从日出到日落跟踪太阳,而在太阳能光电中,相同条件下,自动跟踪发电设备要比固定发电设备的发电量提高35%,成本下降25%。因此在太阳能利用中,进行跟踪装置的控制方式进行研究是一项很有意义的工作。

  1. 本课题技术性能要求:

  (1) 使用电源220V AC,功耗&<5W。

  (2) 水温数码显示,测温范围0~99 0C;精度±20C。

  (3) 水位分五档显示(缺水、20、50、80、100%)。

  (4) 具有缺水上水、温控上水、手动上水和低水压上水等功能。

  (5) 水位设置。可设置加水水位20、50、80、100%(本仪预置水位50%)。

  (6) 缺水报警。当水位从高到低,出现缺水状态时,蜂鸣报警,缺水指示灯闪亮。

  2. 工作原理:

  2.1 原理:

  利用热敏电阻和液位传感器检测水温和水位,并加以显示。根据水温水位情况进行控制。当水位从高到低,出现缺水状态时,蜂鸣报警,缺水指示灯亮,延时15分钟,若温度不超过990C,(以免空晒后上水造成炸管),自动上水至预置水位;若温度高于1000C,不上水。太阳晒后,水温上升,当温度超过600C且水未满时,打开电池阀上水至500C;防止出现低水量、高水温的不合理现象。晚上,若热水已用完,延时15分,进行缺水上水;若热水未用完,不上水,以保证热水充分利用;第二天太阳出来后,利用温控上水。在上水的过程中,水压过低或停水,智能仪会自动进入低水压上水模式,低水压声光报警,间隔30分钟启动上水,若30分钟内不能使水位上升一挡,则停止30分钟,然后再启动,反复循环。以免电池阀长时间通电而烧毁。

  2.2实现方案:(附录1系统示意图)

  通过“水位设置”键可进行水位设置,可设置加水水位20、50、80、100%(本仪预置水位50%)。通过“上水”键,可实现手动上水。通过“上水”键,若水位低于预置水位,可上水至预置水位;若水位已达到预置水位,则在原水位基础上再加一档;若水位已加满,则停止手动加水。在上水过程中,按“上水”键,可停止上水。

3. 硬件设计:

  3.1 直流电源的设计:

  3.1.1 直流电源的图解:

  本课题可采用集成三端稳压器,只要加上一些外围元件即可实现。其框图和电路分别如下图:

  3.1.2 方案论证:

  通过框图分析,该电路由四个部分组成,它们的功能分述如下:

  (1) 电源变压器

  它的任务是把电源电压变压到合适的大小。如果u2的值太大,会造成集成三端稳压器7805的功耗太大,温度升高,且浪费电能。反之,如果u2的值小到一定的程度,三端稳压器不能正常工作,失去稳压作用 。因此u2的值应大小合适,这个值应该使三端稳压器在交流电网电压最低和输出电流最大时能正常工作。而且在正常稳压的前提下,它的压降尽可能小,以减少功耗。

  (2) 整流电路

  它的任务是将正弦波变换成直流电压。这里一般采用桥式整流电路来实现,即可用四个二极管来组成,也可用整流桥堆来完成,只是参数一定要选择合理。

  (3) 滤波电路

  它的任务是将全滤波形通过 RC 滤波网络以后变成更平坦的直流电压,减小脉动,提高整流的效果。这时整流管中通过的电流的瞬时值要比平均值大得多,特别在接通电源瞬间有相当大的冲击电流(即充电电流)通过整流管,这一点要引起注意。

  (4) 稳压电路

  要求输出恒定的直流电压,且要达到提出的要求,

  3.1.3 方案实现 :

  (1)计算u2和C1

  查阅集成三端稳压器的知了可知,对输出电压在5v~12v之间的稳压器,其输入端的电压一般要比输出端电压高5v。而输出电压在15v~24v的稳压器,其两端电压差达到7v~9v左右。在此,如果1,2两端的电压为12V,那么可以求得u2为10v。从电容滤波出发,C1的容量应足够大,但C1的容量也不能太大,否则整流元件的瞬时电流太大,而且容量越大,电容器的体积越大,价格越贵,根据经验综合各方面情况,取C1=3300uF.

  (2) 整流元件的参数

  1)反向耐压 根据桥式整流电路的性能可知,每个整流二级管在交流电网最高时承受的最大反向峰植电压为:

  

  为了安全,整流管的反向耐压应比上述植高50%以上,因此选择整流管时,其耐压应按下式考虑:

  

  2)正向电流 桥式整流电路中,每个整流二极管的正向电流平均值是输出电流的一半,其最大值为:

  

  由于整流管在接通电源瞬间有相当大的冲击电流(即充电电流)通过,因此,整流管的参数(正向电流平均值)应比上述值大(0.5~2)倍。若按比上述值大1.8倍考虑,则=1.8

  目前,市场上有各种规格的整流桥堆出售,它有两个交流输入端和两个直流输出端。由于它体积小,使用方便,价格较低,已成为常用整流元件。根据上面的计算,本电源可选用1A/25V的整流桥堆。

  (3) 变压器二次绕组的电流

  由于电容滤波整流电路中,整流管的电流不是正弦波,变压器二次绕组电流的有效值要比输出电流大,一般情况下,前者是后者的(1.1~3)倍。这里我们取

  

  因此,变压器二次绕组的额定电流(交流有效值)应按2A设计。

  在本设计中,对电磁阀的直流电源的要求不不高,又因为1,2两端的电压为12V,为节省资源,故可直接取用1,2两端的电压作为电磁阀的直流电压,无需再另行设计12V稳压电源。

  3.2 输入接口电路:

  接口电路是一组电路,是中央处理器与存储器、输入/输出设备等外设之间协调动作的控制电路。从更一般的意义上说,接口电路是在两个电路或外设之间,使两者动作条件相配合的连接电路。接口电路并不局限在中央处理器与存储器或外设之间,如直接存储器存取DMA接口电路就是控制存储器与外设之间数据传送的电路。

  接口电路的作用就是将来自外部设备的数据信号传送给微处理器,微处理器对数据进行适当加工,再通过接口电路传回外部设备。所以,接口电路的基本功能就是对数据传送实现控制,具体包括5种功能:地址译码、数据缓冲、信息转换、提供命令译码和状态信息、定时和控制。

  不同的接口电路用于不同的控制场合,因此其功能也各有特点。如并行接口电路不要求数据格式转换功能,来自总线的并行数据就可直接传送到并行外设中;而串行通信接口电路就必须具备将并行数据转换为串行数据和将串行数据转换为并行数据的功能。

  本设计所用到的传感器,包括测水位的传感器与测水温的传感器,分别作如下介绍:

  (1)水位传感器:

  它的结构图如下:

  说明:结构图中的电阻外表面均不与水直接接触,但分别与a、b、、c、d 良好接触,a、b、c、d用于感知水位。

  硬件图中HD74HC04P是一个六反向器,管脚如下图所示:

  它在本设计中用于接成环形振荡器。

  选择合适电容、电阻值时,环形振荡器就能根据每次传感器的阻值产生相应特定周期的方波。

  

  其中为水位传感器的电阻值

  由传感器的结构图可看出:

  当水位未达到a时,即h&<a时、这时传感器的总阻值为4R,对应,系统处于缺水状态。

  当ah&<b时,传感器电阻阻值为3R,对应,系统处于20%水位。

  当bh&<c时,传感器电阻阻值为2R,对应,系统处于50%水位。

  当ch&<d时,传感器电阻阻值为R,对应,系统处于80%水位。

  当h=d时,传感器电阻阻值为0,对应,系统处于100%水位。

  其中,环形振荡器产生的方波周期T(或f)可通过单片机P87LPC744BN的两个定时/计数器(T0、T1)来确定,T1用来计数,T0用来定时。

  所以,水位传感器测水位的基本原理如下:

   (m为T1的计数值,为T0的定时值)。

  (2)水温传感器

  本设计可选选用具有负温度系数的热敏电阻来测水温,热敏电阻与普通电阻不同,它具有负的温度特性,当温度升高时,电阻值减小,它的应用是为了感知温度。

  现选用MF51型直热式负温度系数热敏电阻,它的技术特性如下:

  型号

  标称电阻(

  材料常数(

  温度系数(

  使用温度范围

  MF51

  1~5K

  

  

  

  3300

  

  3.7

  55~+300

  5~20K

  3600

  4.0

  20~80K

  3900

  4.3

  80~100K

  4300

  4.7

  它能满足本设计的测量灵敏度要求和2%的测量精度要求,性价比较高。

  测量原理:

  与水位传感器一样,在设定好合适的参数(R1、R2、Rs、C)后,对应每个热敏电阻阻值,环形振荡器便能产生一个特定周期的矩形波。

  

  T可通过单片机的T0外部计数和T1内部定时的方式确定。

  故

  然后通过下列公式求温度:

  

  其中 --------------被测温度

  -------------与热敏电阻特性有关的参数

  ------------与热敏电阻特性有关的系数

  --------------热敏电阻阻值

  以上计算均可由软件编程实现,把计算出的温度转化成BCD码,然后再存放于显示缓冲区中,执行相应的功能程序。

 3.3 键盘中断:

  本系统存储容量不大,4KROM,128RAM足够,,由于只有二个键,且不经常操作,所以本设计中采用了中断方式,其中与P0.2口的键盘是用于手动上水功能,与P0.3口连接的键盘用于水位设置的功能。

  3.4 显示接口:

  本设计中采用了共阴极接法,对于显示水温水位的程序作如下说明:

  ① 在动态扫描过程中,调用延时子程序Del1,其延迟时间为1ms,这是为了使扫描到哪位显示器稳定的点亮一段时间,犹如扫描过程中在每一位显示器上都一段驻留时间,以保证其显示亮度。

  ② 本设计接口电路是软件为主的接口电路,对显示数据以查表方法得到其字形代码,为此在程序中有字形代码Table,从0开始依次写入十六进制数的字形代码。为了进行查表操作,使用查表指令 MOVC A,@A+DPTR,由DPTR提供16位基址,由A提供变址,因此显示数据送A后,再由A送P0.1~P0.6输出给显示器。

  (1)水位显示:

  本系统需显示水位,水位分缺水、20、50、80%五档,均用发光二极管来指示。

  (2)水温显示:

  本系统需显示水温,测量范围为0~99 0C,用两个八位LED数码管显示。

  3.5 电磁阀:

  由于本系统中执行机构控制的是电磁阀,因此需用三极管进行功率放大。

  3.6 晶振:

  为给单片机提供工作所需要的时钟信号,本设计中采用了6MHZ的晶振。故系统中CPU执行的每一个机器周期为2us.

3.7 主机:

  主机的选择是关键,选得好,可节省许多外围电路,本设计采用的是由Philips公司生产的P87LPC764BN芯片,是20脚封装的单片机,适合于要求高集成度、低成本的场合。采用80C51加速处理器结构,指令执行速度是标准80C51的两倍。片内有4K字节OTP程序存储器,128字节的RAM。32Byte用户代码区可用来存放序列码及设置参数;有看门狗电路、复位电路(使用片内上电复位时不需要外接组件);2个16位定时/计数器,2个A/D转换器;所有口线均有20m A的驱动能力;电源电压VDD=4.5~6.0(操作频率为20MHZ)。

  本设计中已经充分利用了该单片机的所有I/O口,且已能满足设计的要求,性价比高,组成了一个最小,最优化的系统。

  现对P87LPC764BN这块芯片作如下介绍:

  (1)概述:

  P87LPC76x是20脚封装的单片机,适合于许多要求高集成度、低成本的场合。可以满足许多方面的性能要求。作为Philips小型封装系列中的一员,P87LPC76x提供高速和低速的晶振和RC振荡方式,可编程选择。具有较宽的操作电压范围。可编程I/O口线输出模式选择,可选择施密特触发输入,LED驱动输出。有内部看门狗定时器。P87LPC76x采用80C51加速处理器结构,指令执行速度是标准80C51 MCU的两倍。

  P87LPC76x采用增强型80C51 MCU,其运行速度是标准80C51的2倍,这意味着P87LPC76x在5MHZ时性能和标准80C51采用10MHZ时性能相同。一个机器周期由6个振荡周期组成,大多数指令执行时间为6或12个振荡周期,用户亦可选择工作在标准80C51 MCU时序,这时一个机器周期变为12个振荡周期。 “MCU时钟”指控制内部指令执行的时钟。当系统被设置成为标准80C51时序(由CLKR位确定)或通过设定pM寄存器分频时,“MCU时钟”和外部所加时钟不同。

  (2)特性:

  z 操作频率为20MHz时,除乘法和除法指令外,加速80C51指令执行时间为300~600ns。VDD=4.5~6.0V时,时钟频率可高达到20MHz,VDD=2.7~4.5V时,时钟频率最大为10MHz。

  z VDD=4.5~6.0V(P87LPC765HDH) z 数字信号的操作电压为2.7~6.0V。 z P87LPC762为2K字节OTP程序存储器,P87LPC764为4K字节OTP程序存储器,128字节的RAM。32Byte用户代码区可用来存放序列码及设置参数。

  z 2个16位定时/计数器,每一个均可设置为超时溢出时相应端口输出。

  z 八个键盘中断输入,另加2路外部中断输入。4个中断优先级。

  z 看门狗定时器利用片内振荡,无需外接元件,看门狗定时器溢出时间有8级选择。

  z 低电平复位。使用片内上电复位时不需要外接元件。

  z 低电压复位。可选择预先设定好的两种电压之一复位,当掉电时允许系统安全关闭。也可将其设置为一个中断源。

  z 可选择片内振荡及其频率范围和RC振荡(用户通过对EPROM位编程选择)。选择RC振荡器时不需外接振荡器件。

  z 如果选择片内振荡及复位时,P87LPC76x仅需要连接电源线和地线。

  z 20脚DIP、SO和TSSOP封装。

  管脚配置:

  逻辑符号:

  方框图:

  (3)键盘中断(KBI):

  键盘中断功能主要是使得连至P87LPC76x特殊脚的键盘上任一键被按下时能产生一个中断(见图12)。该中断可用于将MCU从空闲模式或掉电模式中唤醒。此特性尤其适合便携式且使用电池供电的系统。

  P87LPC76x允许端口0的部分或全部引脚被使能触发中断,这是通过对KBI寄存器对应位置位完成的,如图13所示。当打开KBI中断功能后,任一被使能引脚被拉低都会将AUXR1寄存器内键盘中断标志(KBF)置位。如若中断允许则将产生一中断。注意KBF位必须由软件清除。

  由于人对时间分辨精度及键开关闭合的机械延迟,KBI特性通常可用于中断服务程序轮流查询端口0以确定按下的是哪个键,甚至决定处理器从低功耗模式唤醒。参见低功耗模式部分。

  本系统存储容量不大,4KROM,128RAM足够,由于只有二个键,且不经常操作,所以本设计中采用了中断方式,其中与P0.2口的键盘是用于手动上水功能,与P0.3口连接的键盘用于水位设置的功能。当产生键盘中断时,用软件判断按下的是哪个键,框图如下:

  本设计中键盘中断要实现两个功能:水位设置和手动上水:

  1) 其中水位设置键与P0.3口连接,具体功能叙述如下:

  当水位不足情况下,未按下水位设置键时,默认预置水位为50%,在上水过程中,水位指示灯灭。

  当按一下水位设置键时,80%水位指示灯亮,表明要上水到80%;

  当按第二下水位设置键时,100%水位指使灯亮,表明要上水到100%;

  当按第三下水位设置键时,20%水位指示灯亮,表明缺水时,要上水到20%;

  当按第四下水位设置键时,预置水位又为50%,表明要上水到50%;

 在具体的软件判别中,可通过查表P0.3是否置高电平来确认键盘有没按下,可用MOV A,P0;JNB ACC、3等几条指令来实现。通过对每一次的键盘按动进行加1记录,即当每次P0.3为高电平时,加一条INC R,指令,当R1为5时,又重新赋值为1,而后对R1的值进行判断,以确认水位设置键到底设置了哪个水位,框图如下:

  2) 手动上水键与P0.2口连接,可用MOV A,P0;JNB ACC、2两条指令来

  查看手动上水键有没被按下。

  它的具体功能如下:按“上水”键,若水位低于预置水位,可上水至预置水位;若水位已达到预置水位,则在原水位的基础上再加一档;若水位已加满,则停止手动加水,在上水过程中,按“上水”键,可停止上水。

  同水位设置键一样,当奇数次按下此键时,表示要上水,当偶数次按下此键时,表示停止上水,框图如下:

  (4)振荡器:

  P87LPC76x提供几种用户可选振荡器选项,允许根据需要从高精度至最低成本范围内选择。这些选项在EPROM编程时配置。支持的基本振荡器类型包括:低、中、及高速晶振,20KHz~20MHz,陶瓷振荡器及片内RC振荡器。

  ——低频晶振

  ——中频晶振

  ——高频晶振

  为限制晶振驱动电平可串联电阻,对于低频晶振尤其重要。

  振荡器须设置为外部时钟输入模式。将P2M1寄存器内CLK位置位可从X2脚输出时钟。

  

  (5)复位:

  P87LPC76x内部集成了上电复位电路,用于在器件上电时提供一个复位信号。建议使用内部复位以节省外部元件并可将P1.5作为通用的输入口使用。

  P87LPC76x另外还可通过对用户配置寄存器UCFG1中的RPD位编程为0,将P1.5作为外部低有效复位管脚RST。此时内部复位在器件上电时仍然有效。当RST脚的信号为低电平时,P87LPC76x保持复位直到信号变为高电平。

  看门狗定时器可用于检测振荡器是否正常工作,因为看门狗定时器使用的是独立的片内振荡器。对UCFG1的描述见本手册的“系统配置字节”一节。

  

  将EPROM配置寄存器UCFG1内RPD位编程为1可关闭外部复位输入,即选择使用完全内部复位。

  (6)定时器/计数器

  P87LPC76x有两个通用定时/计数器,与80C51定时器0及定时器1兼容。两者均可选择以计数器或定时器方式工作。另外增加了定时器溢出时T0与/或T1脚自动翻转的功能。

  在用于定时器功能时,每个机器周期寄存器加1。所以可以视为计数机器周期。由于一个机器周期包含6个MCU时钟周期,所以计数频率为MCU时钟频率的1/6。有关MCU时钟参见增强MCU一节。

  在用于计数器功能时,寄存器在T0或T1脚的每一个下降沿加1。此时,每一个机器周期对外部输入采样一次。当某一周期时引脚状态采样为高而下一周期采样为低,计数器加1。检测到跳变的下一周期寄存器更换新值。由于检测下降沿跳变需两个机器周期,所以计数频率最大值为MCU时钟频率的1/6。外部输入信号占空比并无限制,但必须保证信号在改变之前至少被采样一次,信号必须保持至少一个整的机器周期。

  通过特殊功能寄存器TMOD内控制位C/T选择定时器或计数器功能。此外,定时器0及定时器1有4种工作模式,由TMOD内M1及M0选择,模式0、1、2对于定时器及计数器是一样的。模式3则不同。

  如果看门狗定时器正在进行,必须在其溢出产生复位前清“0”,看门狗清“0”顺序包括:先写立即数1EH,再写0E1H到“WDRST”寄存器。下面是一个操作实例:

  WDFeed:

  MOV WDRST,#1EH

  MOV WDRST,#0E1H

  这两条写WDRST的命令不必是连续的两条指令。一个不正确的看门狗清“0”顺序不会引起看门狗定时器的任何即刻反应。只要此时间之前没有给它一个正确的清“0”,它仍然按最初设置的时间直到溢出。

  发生芯片复位后,程序设计者清看门狗或改变溢出时间都有一定的限制时间。如果操作中使用低MCU时钟频率,那么在发生看门狗溢出之前能被执行的指令非常少。

  (9)附加功能:

  “AUXR1”寄存器由几个特别控制位组成,这些位另几种芯片功能相关。AUXR1在图33中详述。

4. 软件设计:

  4.1 I/O口的说明:

  P0.0~0.6分别用于输出7个字型码给显示器,同时,P0.0也作为缺水灯指示控制口,P0.1作为20%水位灯指示的控制口,P0.4作为50%水位灯指示的控制口,P0.5作为80%水位灯指示的控制口,P0.6作为100%水位灯指示的控制口。

  P0.3口还作为水位设置的输入口,在软件中可查看该口的电平高低,以确认水位设置键是否被按下。

  同理,P0.2口作为上水键的输入口,在软件中可查看该口的电平高低,以确认水位设置键是否被按下。

  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处于高低电平,将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中,经软件计算后,所得的用于衡量水位高度的频率值放入20H中。

  查表程序中的数据表格,十六进制数字形代码表如下:

  

  TABLE+00H

  TABLE+01H

  TABLE+02H

  .

  .

  TABLE+0FH

  3FH

  0

  1

  2

  .

  .

  .

  F

  06H

  5BH

  .

  .

  .

  71H

  4.3 水温水位显示主程序:

    ORG 0000H

    AJMP MAIN

    ORG 0003H

    AJMP INT0

    ORG 0013H

    AJMP INT1

    ORG 0030H

  MAIN: ACALL LOOP1 ; 调用显示水温子程序

    ACALL DEL1 ; 延时子程序

    SETB P1.0 ; 不显示温度(以下是水位程序)

    SETB P1.1 ; 同上

    CLR P1.7 ; 水位灯位选为0

    MOV A,20H ; 将水位值送入(A)

    CJNE A,#a,PB0

    SETB P0.1

    SJMP FH

  PB0: JNC TD0 ; 如果f比a大,则转移,比a小是缺水状态

    MOV R4,#05H

    SETB P1.6 ; 蜂鸣器每3分钟叫一次

  LP6: MOV R3,#5AH

  LP5: MOV R7,#02H ;设置R7值

  LP2: MOV R6,#0FAH ;设置R6值

  LP1: SETB P1.0 ;十位显示器位选置1

    SETB P1.1 ;个位显示器位选置1

    CLR P1.7 ;水位显示位选清0

    SETB P0.0 ;缺水指示灯亮

    ACALL DEL1 ;调用1ms延时子程序

    ACALL LOOP1 ; 调温度显示子程序

    DJNZ R6,LP1

    DJNZ R7,LP2

    MOV R7,#04H

  LP4: MOV R6,#0FAH

  LP3: ACALL LOOP1;

    DJNZ R6,LP3

    DJNZ R7,LP4

    DJNZ R3,LP5

    CLR P1.6 ;关蜂鸣器

    DJNZ LP6

    MOV A,31H

    RL A

    ADD A,30H

    CJNE A,#99,ZY ;温度值不等990C则转

    ACALL SHSH

    SJMP MAIN

  ZY: JNC BSH;;温度超过990C不上水,小于990C上水

    ACALL SHSH

    SJMP MAIN ;调转主程序

  BSH: CLR P1.4

    SJMP MAIN

  TD0: CJNE A,#b,TD1 ; 水位值没到50%则转

    SETB P0.4 ;50%水位指示灯亮

    SJMP FH

  TD1: CJNE A,#c,TD2 ;水位值没到80%则转

    SETB P0.5 ;80%水位指示灯亮

    SJMP FH

  TD2: CJNE A,#d,TD3

    SETB P0.6

    SJMP FH

  PB: SETB P0.5

    SJMP FH ;不缺水时水位指示灯显示子程序

  以上为显示水位子程序

4.4 水温显示子程序:

     ORG 0050H

  LOOP1:MOV R0,#30H

    MOV DPTR,#TABLE

    CLR P1.1

    SETB P1.7

    SETB P1.0

    ACALL LOOP2 ;先显示个位

    ACALL DEL1

    SETB P1.1

    CLR P1.0

    INC R0

    ACALL LOOP2 ;再显示十位

    RET

    ORG 0070H

  LOOP2: MOV A,@R0 ;查表子程序

    MOVC A,@A+DPTR

  TABLE: DB 3FH,06H,5BH,4FH,66H

    DB 6DH,7DH,07H,7FH,6FH

    DB 77H,7CH,39H,5EH,79H

    DB 71H,00H

    MOV P0,A

    RET

    ORG 0090H

  DEL1: MOV R6,#0F9H ;1ms延时子程序

  LOOP3: DJNZ R6,LOOP3

    RET

  FH: MOV A,31H

    RL A

    ADD A,30H

    CJNE A,#60H,PD0

    SJMP MAIN

  ZP0: MOV A,20H

    CJNE A,#d SH0 ;水位小于100%则上水至500C

    SJMP MAIN

  SH0: MOV R3,#09H

  ZL2: MOV R7,#OFFH

  ZL1: MOV R6,#OFFH

  ZL0: SETB P1.4

    ACALL DEL1 ;1ms

    ACALL LOOP1 ;1ms调水温显示

    ACALL DEL1 ;1ms

    SETB P1.0

    SETB P1.1

    CLR P1.7

    ACALL TD0 ;调水位显示

    MOV A,31H

    RL A

    ADD A,30H

    CJNE A,#50H,JXX ;30分钟内有没上水到500C,若没转移

    CLR P1.4

    SJMP MAIN

  JXX: DJNZ R6,ZL0

    DJNZ R7,ZL1

    DJNZ R3,ZL2

    CJNE A,#50H

    CLR P1.4

    SJMP MAIN

  ZZH: ACALL DSH ;调低水压上水

    SJMP SH0

  4.5 T1中断服务程序:

    ORG  0100H

  INT1: CLR TR0

    PUSH ACC

    MOV A,TH0

    CJNE A,61H,ZHYD2

    MOV A,TL0 ;读低八位

    CJNE A,50H ;比较低八位

    SJMP ZHYD3 ;T0值没有变化转移ZHYD程序

  ZHYD2:MOV A,TH0 ;存放高八位

    MOV 61H,A

    MOV A,TL0

    MOV 60H,A ;存放低八位

    MOV 20H,#H ; 把所测水位值放入20H中

  ZHYD3:MOV TMOD,#51H ;设置T0定时,T1计数并采用方式2

    MOV TH0,#00H

    MOV TL0,#00H

    MOV TH1,#00H

    MOV TL1,#00H

    SETB TR0 ;启动T0

    SETB TR1 ;启动T1

    POP ACC

    RET

 4.6 T0中断服务程序:

    ORG 0200H

  INT0: CLR TR1

    MOV   SP,#30H

    PUSH ACC

    MOV A,TH1 ;读高八位

    CJNE A,51H,ZHYD0 ;高八位不等,则两数不等转移

    MOV A, TL1 ;读低八位

    CJNE A,50H ;比较低八位

    SJMP ZHDY1 ;相等则转移

    ZHYD0:MOV A,TH1 ;放入高八位

    MOV 51H,A

    MOV A,TL0 ;放入低八位

    MOV 50H,A

  LOOP: MOV B,#XXH

    MUL AB

    MOV A,#YYH

    CLR C

    SUBB A,B

    CJNE A,#6AH ;看下所测温度有没超1000C

  LOOP1:JNC LOOP2 ;低于1000C顺序执行,高于1000C转移

    MOV R0,#00H

    CLR C

  CHAN2:SUBB A,#0AH ;减10

    JC CHAN3 ;不够减转移

    INC R0 ;够减,十位数加1

    SJMP CHAN2 ;重复减10

    CHIN3: ADD A,#0AH

    MOV 31H,R0 ;BCD码十位送显缓

    MOV 30H,A ;BCD码个位送显缓

  ZHYD1:MOV TMOD,#15H ;设置T1定时,T0计数并采用方式1

    MOV TH0,#00H ;送初值

    MOV TL0,#00H

    MOV TH1,#00H

    MOV TL1,#00H

    SETB TR0 ;开启T0计数

    SETB TR1 ;开启T1定时

    SJMP LOOP3

  LOOP2:MOV 30H,0FH

    MOV 31H,0FH

    ACALL LOOP1 ;显示温度

  LOOP3:POP ACC

    RETI

  4.7 水位设置及缺水上水至预置水位的程序:

    ORG 0300H

  SHSH: MOV R1,#00H

    MOV AUXR1,#00H ;先将置位端KBF清 0

    MOV KBI,#0CH ;允许.P0.3,P0.2口中断

    SETB EKB ;使能触发

    MOV A,P0

    ORL A,#0CH ;将P0.2,P0.3位先置高,其它位不变

    MOV P0,A

    MOV A,P0

    JNB ACC.3,KEY ;P0.3为0,即键被按下

    ACALL SH50 ;未被按下,预置水位为50%

    SJMP FHZ

  KEY3: INC R1

    MOV AUXR1,#00H

    CJNE R1,#05H,BJ1

    MOV R1,#01H

    ACALL SH80

    SJMP FHZ

  BJ1: CJNE R1,#01H,BJ2

    ACALL SH80

    SJMP FHZ

  BJ3: CJNE R1,#03H,ZHD

    ACALL Sh30

    SJMP FHZ

  ZHD: ACALL SH50

  FHZ: RETI

4.8 上水及低水压上水子程序:

     ORG 0400H

  SH50: MOV R4,#09H

  JX3: MOV R3,#6AH

  JX2: MOV R7,#04H

  JX1: MOV R6,#0FAH

  JX0: SETB P1.0

    SETB P1.1

    SETB P1.7

    SETB P0.4

    SETB P1.4 ;开电磁阀

    ACALL DEL1 ;1ms

    MOV A,20H

    CJNE A,#b,JX

    SETB P1.3

    CLR P1.4 ;上水完毕关电磁阀

    SJMP FHD

  JX: DJNZ R6,JX0

    DJNZ R7,JX1

    DJNZ R3,JX2

    DJNZ R4,JX3

    MOV A,20H

    CJNE A,#b,CY ;采用低水压上水

    SETB P1.3

    CLR P1.4

    SJMP FHD

  CY: ACALL DSH

    SJMP SH50

  FHD: RET

    ORG 0500H

  SH80: MOV R4,#09H

  JX3: MOV R3,#6AH

  JX2: MOV R7,#04H

  JX1: MOV R6,#0FAH

  JX0: SETB P1.0

    SETB P1.1

    CLR P1.7

    SETB P0.5

    SETB P1.4 ;开电磁阀

    ACALL DEL1 ;1ms

    MOV A,20H

    CJNE A,#c,JX

    SETB P1.3

    CLR P1.4 ;上水完毕关电磁阀

    SJMP FHD1

  JX: DJNZ R6,JX0

    DJNZ R7,JX1

    DJNZ R3,JX2

    DJNZ R4,JX3

    MOV A,20H

    CJNE A,#a,CY ;采用低水压上水

  CY: ACALL SDH

    SJMP SH80

  FHD: RET

    ORG 0600H

  Sh30: MOV R4,#09H

  JX3: MOV R3,#6AH

  JX2: MOV R7,#04H

  JX1: MOV R6,#0FAH

  JX0: SETB P1.0 ;位选置1,不显示十位

    SETB P1.1 ;不显示个位

    CLR P1.7 ;显示水位灯

    SETB P0.1 ;20%水位灯亮

    SETB P1.4 ;开电磁阀

    ACALL DEL1

    ACALL LOOP1

    MOV A,20H

    CJNE A,#a,JX

    SETB P1.3

    CLR P1.4

    SJMP FHD

  JX: DJNZ R6,JX0

    DJNZ R7,JX1

    DJNZ R3,JX2

    DJNZ R4,JX3

    MOV A,20H

    CJNE A,#a ,CYD

    SETB P1.3

    CLR P1.4

    SJMP FHD

  CYD: ACALL DSH

    SJMP Sh30

    FHD; RET

    ORG 0700H

  SH100: MOV R4,#09H

  JX3: MOV R3,#6AH

  JX2: MOV R7,#04H

  JX1: MOV R6,#0FAH

  JX0: SETB P1.0 ;位选置1,不显示十位

    SETB P1.1 ;不显示个位

    CLR P1.7 ;显示水位灯

    SETB P0.1 ;20%水位灯亮

    SETB P1.4 ;开电磁阀

    ACALL DEL1

    ACALL LOOP1

    MOV A,20H

    CJNE A,#a, CYD

    SETB P1.3

    CLR P1.4

    SJMP FHD

  CYD: ACALL DSH

    SJMP Sh30

  FHD: RET

如果您有论文相关需求,可以通过下面的方式联系我们
客服微信:371975100
QQ 909091757 微信 371975100