太阳能热水器温控系统设计.doc

上传人:哈尼dd 文档编号:5021389 上传时间:2020-01-29 格式:DOC 页数:29 大小:309.58KB
返回 下载 相关 举报
太阳能热水器温控系统设计.doc_第1页
第1页 / 共29页
太阳能热水器温控系统设计.doc_第2页
第2页 / 共29页
太阳能热水器温控系统设计.doc_第3页
第3页 / 共29页
太阳能热水器温控系统设计.doc_第4页
第4页 / 共29页
太阳能热水器温控系统设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《太阳能热水器温控系统设计.doc》由会员分享,可在线阅读,更多相关《太阳能热水器温控系统设计.doc(29页珍藏版)》请在三一文库上搜索。

1、第一章 前言1.1太阳能热水器的发展概况及市场竞争分析目前,中国已成为世界上最大的太阳能热水器生产国,年产量约为世界各国之和,已有一百多家太阳能热水器生产厂。但是与之配套的太阳能热水器控制器却一直处在研究与开发阶段。这种控制器只具有温度和液位显示功能, 而且为分段显示,温度显示误差为10%,水位显示误差为25%。这种显示器(还称不上控制器)不具有温度控制功能,当由于天气原因而光强不足时,就会给热水器用户带来不便;即使热水器具有辅助加热功能,由于加热时间不能控制而产生过烧,从而浪费大量的电能。本文设计的太阳能热水器控制器以80C51单片机为检测控制核心,采用DS12887 实时时钟,不仅实现了时

2、间、温度和水位三种参数实时显示和FUZZY控制功能,而且具有时间设定、温度设定与控制功能。温度控制采用模糊控制, 控制器可以根据天气情况利用辅助加热装置使蓄水箱内的水温在设定时间达到预先设定的温度,从而达到24小时供应热水的目的。包括主、从两大系统:主系统的特点是在晴好的天气利用太阳光能为热水器加热;从系统相当于电热水器,它在无光照的情况下利用电辅助加热。它充分利用太阳能的丰富的免费的资源的优势,同时考虑到在阴天及夜间无法利用太阳能的缺点,充分发挥太阳能热水器和电热水器的各自优势。第二章 设计思路及要求2.1 本设计的目的和意义本设计具有很强的实用性,用成本低廉的电阻式传感器以及电极配以单片机

3、技术对生产实际中的太阳能热水器的水温的控制以及水位的显示。本装置电路简单、实用性强、性价比高、水温控制灵活,水位显示直观醒目。可广泛应用于家庭生活对太阳能热水器的水位显示与水温控制。具有良好的市场前景。2.2 控制系统设计要求1、能够根据水位和水温两个条件控制是否需要进水,每次只进整个水箱的四分之一水量,也可以在手动状态下自由进水(上满时自由停止)或停止进水。2、控制系统具有手动和自动切换功能;3、具有水温和水位显示功能;4、具有进水超水位和超水温报警指示;5、用水时若水温达不到设置值时,可手动起动加热装置,这样可在很大程度上节约电能;6、用水时可自由调节水温;7、控制系统具体管道排空功能,这

4、样防止冬天时因水管内有积水而在夜间冻裂水管。2.3 本设计实现思路及方法水位由潜入储水容器不同深度的水位电极和潜入容器底部的公共电极(导线)检测;并由四个绿色LED发光二极管显示:若无水则绿灯不亮;若有四分之一储水箱的水亮一盏绿灯;通过观察绿灯点亮的数量可识别水位的高低,这里取5段显示,也可根据需要进行增减。水温由四个LED数码管显示,前三个数码管显示的为温度最后一个数码管我们只用到了四段码显示为温度的符号C,水温有效值最多可显示为99.9。第3章 硬件设计3.1 控制系统组成及工作原理3.1.1 系统的组成 如图2-1所示,本系统主要由控制器、自动控制阀、手动控制阀、水位检测电极、水温检测传

5、感器、电阻加热丝、储水箱等组成。 控制器:主要通过里面的电磁阀控制YV1和YV2的通断,控制水温检测传感器检测水温、控制水位检测传感器检测水在水箱中的位置以及控制电阻加热丝加热。自动控制阀:主要通过控制器控制,当水箱中的水的实际温度大于所设置的温度时,自动阀就自动打开往水箱中上水,直到上到上一个目标水位为止。图 2-1 系统组成示意图 图 2-1 系统组成示意图手动控制阀:当自动阀损坏时,可以通过手动阀进行上下水。水位检测电极:主要用来检测水箱中水的位置,主要把水箱分成四等分,一共有五个电极,接地的电极放在最水箱的最底下,其余分别放在四等分点上,比如当水箱中的水在第一等分和第二等分之间,则显示

6、水箱中有四分之一的水,当超过第二等分,则显示二分之一的水。水温检测传感器:主要用来检测水箱中水的实际温度。电阻加热丝:主要用来加热水箱中水,使其达到用户所需要的温度。 3.1.2 控制装置的工作原理本控制系统分为手动和自动两种控制方式,在系统处于自动状态下,当检测温度高于设置温度,且水位未达到最高时,控制器打开电磁水阀YV1和YV2进行上水,同时点亮上水指示灯,当水位上至上一目标水位时,自动停止上水(即关闭电磁水阀YV1和YV2),若水箱内无水,则自动上水至最低水位处。在系统处于手自动状态下,可自由上水或停止上水(上水时水箱水位必须未满),若水位达到最高则自动停止上水;若需要启动加热器则必须先

7、设定加热温度,然后按下加热键进行加热;若需洗浴时,则需打开手动阀YV4,系统自动打开电磁水阀YV2,可通过YV5自由调节水温;当电磁水阀YV1和YV2损坏或停电时,可通过打开YV5和YV6进行上下水解决燃眉之急;此系统设置YV3是为了防止冬天气温过低引起水管因内有积水而冻裂(即手动打开此阀放完水管中的积水)。3.2 主要原器件介绍3.2.1 AT89S51高性能8位单片机AT89S51是一个低功耗高性能CMOS 8位单片机,4k Bytes Flash只读程序存储器(ROM),512 Bytes 内部数据存储器(RAM),该微处理器采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MC

8、S-51指令系统,引脚兼容80C51和80C52芯片,片内的Flash存储器可以像常规程序存储器一样进行烧写,AT89S51片内总共有256字节的用户数据区,而128字节的内部扩展数据区需通过清SFR(8EH)的位1并用MOVX指令访问,片内置通用8位中央处理器和Flash存储单元,另一个256BytesRAM区与ATMEL之AT89系列8052兼容的单片机是一致的,AT89C51结合通用的8位微处理器和Flash存储技术构成功能强大单片微处理器,可提供许多高性能低价位的系统控制应用场合。图2-2 AT89S51引脚图 (1)、AT89S51主要特点: 40个引脚,32kBytes的程序存储器

9、,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,内置时钟振荡器,其Flash存储器,可反复擦写1000次的Flash存储器可有效地降低开发成本。软件设置电 源省电模式,睡眠其间,定时/计数器,串行口和中断口均停止工作,RAM中的数据被“冻结”,直到下次被中断激活或硬件复位方可恢复工作。 (2)、AT89S51主要功能特性兼容MCS51指令系统32k可反复擦写(1000次)Flash ROM32个双向I/O口硬件看门狗WDT电路3个16位可编程定时/计数器时钟频率0-33MHz两个串行中断5128bit内部RAM2个外部中断源内置

10、时钟振荡器中断激活睡眠模式3级加密位双重数据存储器软件设置睡眠和唤醒功能3.2.2数码管显示原理由单片机的定时器To做16位计数器(为便于数据处理,这里只用低8位计数值,即寄存器TL0中的值)。一边记录脉冲数量,一边以厘米为单位由四位数码管显示出来。四位数码管采用动态扫描方式显示。长度计量仪采用0.5英寸共阳极连接的LED数码管。LED数码管由发光二极管作为显示字段的数码型显示器件。右图为LED数码管外形和引脚图,其中7只发光二极管分别对应a-g笔段,构成“日”字形,另一只发光二极管DP作为小数点,因此这种LED显示器称为八段数码管。(如图2-3所示)图2-3 LED数码管共阳极型LED数码管

11、,是将各段发光二极管的阳极连在一起,作为公共端com,应接高电平。ag、Dp各笔段中,某笔段接低电平时发光,高电平时不发光。为了节省单片机I/O口的数量,将各位数码管的ag对应笔画并联起来分别与单片机的P2.0P2.7引脚连接。显示时,由P2口依次输出各位数字的笔段码,并依次由P1.0、P1.1、P1.2、P1.3输出低电平位选信号接通数码管的公共端,轮流进行,循环不止,由于循环的频率较高(约50Hz),加上人眼的视觉暂留,既保障了各位数字的对应显示,又不会出现闪烁现象,实现动态扫描显示。3.3 AT89S51单片机的最小系统 4. 4.7F 10K6M20pf+5V Vcc EA GNDAT

12、89S51 RST 3 AT89S51单片机的最小系统 XTAL1 XTAL220pf+5V图2-4 AT89S51单片机最小系统所谓最小系统,即指使单片机能正常工作的所需的最少的电路,即应包含CPU及辅助电路、ROM、RAM及I/O端口等电路。由于AT89S51内部已经包含4KB的Flash Memory程序存储器,所以无需再扩展片外程序存储器。在AT89S51的基础上,加复位电路、时钟电路、EA引脚信号及电源即可。结合资料及所学过的内容,得到如图2-4所示的单片机最小系统。图2-4中,晶体振荡器的频率选6MHZ,复位电路采用上电复位,电路参数如图中所示,以满足系统复位时两个机器周期的高电平

13、的要求。由于CPU的内部已含有程序存储器,所以EA引脚接高电平。图2-5 时钟电路3.4 AT89S51单片机时钟电路该水位自动显示控制器采用AT89C51单片机,机内有一高增益反相放大器,构成自激振荡电路,振荡频率取6MHz,外接6MHz晶振,两个电容C1、C2取20pF,以便于起振荡的作用。 右图中XTAL1为内部时钟工作电路的输入,XTAL2为来自反向振荡器的输出。3.5 AT89S51单片机复位电路该水位自动显示控制器采用上电复位电路,由R14、C3构成复位电路,在上电瞬间,产生一个脉冲,AT89S51将复位。为保证可靠复位,脉冲宽度应大于两个机器周期,这取决于R、C时间长数。取电容C

14、=10uF,电阻R=10K。图2-7水位检测电路3.6水位检测电路的硬件设计实验证明,纯净水几乎是不导电的,但自然界存在的以及人们日常使用的水都会含有一定的Mg2+、Ca2+等离子,它们的存在使水导电。本控制装置就是利用水的导电性来完成的。我们把储水箱大致分为四个等份,水位由潜入太阳能热水器的储水箱不同深度的水位电极和潜入储水箱底部的公共电极(导线)进行检测;由单片机依次使各水位电极呈现高电平,由公共电极所接的三极管进行电位转换,水位到达的电极,转换电位为低(0);水位没有到达的电极,转换电位为高(1);每检测一位便得到一位数据,5个电极检测一遍以后便得到了5个串行数据,然后把这5个数据转化为

15、字节一路送发光二极管;在这里我们可以用发光二极管亮的盏数来显示水位的高低。(若没有发光二极管亮则表示箱内没有水或者只有少量的水,若有一个发光二极管灯亮则表示箱内有四分之一箱的水,以此类推,若有四个发光二极管亮,则表示水箱水是满的。)3.7水温检测电路的硬件设计本设计温度传感器选用AD590。AD590属于半导体集成电路温度传感器,测温范围-55- +150,在其二端加上一定的工作电压,其输出电流与温度变化成线性图2-8 水温检测电路图关系,1uA/K,误差有几种等级:1、0.5、0.3,本设计中选取0.5品种。OP07为高精度运算放大器,AD590电流流经R1、RP1转换为电压信号,R2、RP

16、2为运算负反馈电阻,成反相比例放大器,将温度信号转换成0-5V的电压信号,ADC0832再将其转换为数字信号,输入CPU。图2-8为温度检测和A/D转换电路图。 3.8 键盘电路的硬件设计 P1.0- P1.7口作为按键的信号输入端,键按下,就执行该键的功能。其电路如图2-9所示。(为了编程简单、方便,采用独立式键盘电路)图2-9 键盘电路图 3.9 驱动电路的硬件设计在单片机控制系统中,需要用开关量去控制和驱动一些执行元件,如发光二极管、继电器、电磁阀、晶闸管等。但AT89S51单片机驱动能力有限,且高电平比低电平驱动低那六小。一般情况下,需要加驱动接口电路,且用低电平驱动。如图2-10所示

17、图 2-10 驱动电路图3.10显示电路的硬件设计本设计采用共阳型数码管,8个LED灯如图2-11中接法,灯的负极依次接到数码管的a-f段,采用动态扫描电路,并把显示程序作为主程序。数码管的段用P0口控制,P2.0口、P2.3口作为数码管的位控制,P2.4作为指示灯的控制。P01P02P03P04P05P06P07P20P21P22P23P24RXDTXDAT89S51图2-11 显示电路图第4章 软件设计4.1 主程序流程图主程序:ORG 0000H LJMP MAINORG 000BHLJMP CT0;转定时器0中断服务程序ORG 0030H;主程序MAIN: MOV 30H,#00H;0

18、.1秒单元MOV 20H,#00000100B;置相应标志位MOV P2,#0FFH;P2口不显示,电磁阀不通电,不加热MOV SP,#5FH;设置堆栈深度SETB EA;开中断SETB ET0;允许T0中断MOV TMOD,#01010001B;T0方式1定时,T1工作于方式1计数图3-1 主程序流程图调水位检测程序调显示程序调键盘处理程序初始化主程序MOV TH0,#3CH;定时常数MOV TL0,#0B7HMOV TH1,#00H;清计数单元MOV TL1,#00HSETB TR0;启动定时定时器0SETB TR1;启动T1MOV 28H,#60;设置初始温度为60度MOV 40H,#0

19、FFH;转显示状态为全灭MOV 36H,#0;清温度存放单元MOV 37H,#0MOV 2FH,#1;目标水位为1LOOP:LCALL WATER;水位检测LCALL DISP;显示程序LCALL KEY;键盘处理程序SJMP LOOP4.2 中断子程序CT0: MOV TH0,#3CH;重置时间初值MOV TL0,#0B0HPUSH ACC;保护现场PUSH PSWSETB RS0;选工作寄存器1组MOV R1,#30H;指向0.1秒单元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL TEST_TEMP;调温度处理程序RET_TIME:PO

20、P PSW;恢复现场POP ACCRETI;中断返回4.3温控进水程序4.3.1温度检测程序TEST_TEMP:;温度处理程序,将温度存放在27H单元,设置的温度存放于28H单元 JB 01H,RE_AD;若为设置状态,则不进处理MOV SCON,#00H ;置串口方式0,禁止接收CLR ES ;串口禁中CLR P3.6 ;片选0832MOV A,#06H ;置CH0通道配置ADC0: MOV SBUF,A ;启动A/DADC1: JNB TI,ADC1 ;串行发送启动及通道配置信号CLR TI ;清发送中断标志SETB REN ;允许(启动)串行接收ADC2: JNB RI,ADC2 ;接收

21、第一字节CLR RI ;清接收中断标志,同时启动接收第二字节MOV A,SBUF ;读第一字节数据MOV B,A ;暂存ADC3: JNB RI,ADC3 ;接收第二字节CLR RI ;清接收中断标志MOV A,SBUF ;读第二字节数据ANL A,#0FH ;第二字节屏蔽高4位ANL B,#0F0H ;第一字节屏蔽低4位ORL A,B ;组合SWAP A ;高低4位互换,组成正确的A/D数据MOV 36H,A ;存A/D数据CLR REN ;两通道A/D完毕,禁止接收SETB P3.6 ;清0832片选RET 4.3.2水温控制上水程序图3-2 水温控制流程图水温控制上水是否正在上水?测量值

22、设置值?是否最高?赋目标水位值打开上水阀水位是否为目标值?关闭上水阀返回赋实际水位值YNYN程序: MOV 27H,36H MOV 42H,#00H JNC N05 MOV 42H,#05H;显示小数0.5N05: JNB ACC.7,OK MOV A,#0OK: CJNE A,#64H,EADEAD: JNC ERRAD;温度超过100则显示99EAD1:MOV B,#10;转换成十进制数,送显示单元 DIV AB MOV 44H,A MOV 43H,B MOV 41H,#0CH;最后一位显示C CLR 05H JNB 02H,RE_AD MOV A,27HY CJNE A,28H,EADD

23、EADD:JC BSH;未到设定温度,不上水 MOV A,2EH CJNE A,#04H,SWSW: JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;未到设定温度,上至高一档水位 INC 2FH;目标水位 CLR P2.6 CLR P2.7 SETB 03HRE_AD: RETERRAD: MOV A,#63H;温度超过100则显示99 SJMP EAD1BSH: SETB P2.6; SETB P2.7 CLR 03 SJMP RE_AD4.4 温度显示子程序DISP:MOV R0,#44H;显示温度及状态信息MOV DPTR,#TABDISP1:MOV A,R0MOV

24、C A,A+DPTRJNB 01H,NDOT1JNB 00H,NDOT1MOV R5,45H水温显示取十位值DPTR#TAB查表的字段码判断是否闪烁?字段码P0使十位LED有效延时1ms使十位LED无效取个位值.使温度字母C的LED无效返回图3-3 温度显示流程图CJNE R5,#44H,NDOT1MOV A,#0FFHNDOT1:MOV P0,ACLR P2.0LCALL D1MSSETB P2.0DECR0MOV A,R0MOVC A,A+DPTRJB 05H,NDOT22CLR ACC.7NDOT22:JNB 01H,NDOT2JNB 00H,NDOT2MOV R5,45HCJNE R5

25、,#43H,NDOT2 MOV A,#0FFHNDOT2:MOV P0,ACLR P2.1 LCALL D1MSSETB P2.1DEC R0MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT3JNB 00H,NDOT3MOV R5,45HCJNE R5,#42H,NDOT3MOV A,#0FFHNDOT3:MOV P0,ACLR P2.2LCALL D1MSSETB P2.2DEC R0MOV A,R0MOVC A,A+DPTRMOV P0,ACLR P2.3LCALL D1MSSETB P2.3D1MS:MOV R7,#25 DJNZ R7,$ RETTAB: DB 0C0

26、H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,0FFH,0afH,0C6H,00h,86HEND其它显示程序参见附录1NYNY有键闭合?KEY延时去抖动有键闭合?是何键?转相应键处理程序返回KEYYY图3-4 键处理流程图4.5 键盘处理程序KEY:ORL P1,#0FFH;键处理程序 MOV A,P1CPL AJZ RET_KEY;无键返回JNLCALL DISP;有键,延时去抖动ORL P1,#0FFHMOV A,P1CPL AJZ RET_KEY;无键返回ORL P1,#0FFH;有键,延时去抖动MOV A,P1JNB ACC.0,S1JNB

27、ACC.1,S2JNB ACC.2,S3JNB ACC.3,S4JNB ACC.4,S5JNB ACC.5,S6JNB ACC.6,S7JNB ACC.7,S8RET_KEY:RETS1: CPL 01H; 置预置标志JNB 01H,SAVE_TEM;01H=0,存储当前预置的温度MOV 45H,#44H; 01H=1,为预置状态,当前预置对象存放于45H单元S11: LCALL DISP ORL P1,#0FFH;等待按键释放 MOV A,P1 CPL A JNZ S11; 未释放,继续等待 RETSAVE_TEM:MOV A,44HANL A,#0FHMOV B,#10MUL ABADD

28、A,43HMOV 28H,ASJMP S114.6基于单片机的太阳能热水器控制系统的设计程序ORG 0000H LJMP MAINORG 000BHLJMP CT0;转定时器0中断服务程序ORG 0030H;主程序MAIN:MOV 30H,#00H;0.1秒单元MOV 20H,#00000100B;置相应标志位MOV P2,#0FFH;P2口不显示,电磁阀不通电,不加热MOV SP,#5FH;设置堆栈深度SETB EA;开中断SETB ET0;允许T0中断MOV TMOD,#01010001B;T0方式1定时,T1工作于方式1计数MOV TH0,#3CH;定时常数MOV TL0,#0B0HSE

29、TB TR0;启动定时定时器0MOV 28H,#60;设置初始温度为60度MOV 40H,#0FFH;转显示状态为全灭MOV 36H,#0;清温度存放单元MOV 2FH,#1;目标水位为1LOOP:LCALL WATER;水位检测LCALL KEY;键盘处理程序LCALL DISP;显示程序JMP LOOPCT0: MOV TH0,#3CH;重置时间初值MOV TL0,#0B0HPUSH ACC;保护现场PUSH PSWSETB RS0;选工作寄存器1组MOV R1,#30H;指向0.1秒单元INC R1CJNE R1,#10,RET_TIMEMOV R1,#00HCPL 00HLCALL T

30、EST_TEMP;调温度处理程序RET_TIME:POP PSW;恢复现场POP ACCRETI;中断返回TEST_TEMP:温度处理程序,将温度存放在27H单元,设置的温度存放于28H单元 JB 01H,RE_AD;若为设置状态,则不进处理MOV SCON,#00H ;置串口方式0,禁止接收CLR ES ;串口禁中CLR P3.6 ;片选0832MOV A,#06H ;置CH0通道配置ADC0: MOV SBUF,A ;启动A/DADC1: JNB TI,ADC1 ;串行发送启动及通道配置信号CLR TI ;清发送中断标志SETB REN ;允许(启动)串行接收ADC2: JNB RI,AD

31、C2 ;接收第一字节CLR RI ;清接收中断标志,同时启动接收第二字节MOV A,SBUF ;读第一字节数据MOV B,A ;暂存ADC3: JNB RI,ADC3 ;接收第二字节CLR RI ;清接收中断标志MOV A,SBUF ;读第二字节数据ANL A,#0FH ;第二字节屏蔽高4位ANL B,#0F0H ;第一字节屏蔽低4位ORL A,B ;组合SWAP A ;高低4位互换,组成正确的A/D数据MOV 36H,A ;存A/D数据CLR REN ;两通道A/D完毕,禁止接收SETB P3.6 ;清0832片选RET MOV 27H,36H MOV 42H,#00H JNC N05 MO

32、V 42H,#05H;显示小数0.5N05: JNB ACC.7,OK MOV A,#0OK: CJNE A,#64H,EADEAD: JNC ERRAD;温度超过100则显示99EAD1:MOV B,#10;转换成十进制数,送显示单元 DIV AB MOV 44H,A MOV 43H,B MOV 41H,#0CH;最后一位显示C CLR 05H JNB 02H,RE_AD MOV A,27HY CJNE A,28H,EADDEADD:JC BSH;未到设定温度,不上水 MOV A,2EH CJNE A,#04H,SWSW:JNC RE_AD JB 03H,RE_AD MOV 2FH,2EH;

33、未到设定温度,上至高一档水位 INC 2FH;目标水位 CLR P2.6 CLR P2.7 SETB 03HRE_AD:RETERRAD: MOV A,#63H;温度超过100则显示99 SJMP EAD1BSH: SETB P2.6 SETB P2.7 CLR 03 SJMP RE_ADWATER:;水位检测后存放于2EH单元,目标水位2FH单元 JNB P3.2,KS1 JNB P3.3,KS2 JNB P3.4,KS3 JNB P3.7,KS4 MOV 2EH,#0;无水 CLR P2.6 CLR P2.7 SETB 03H MOV 2FH,#1RE_WAT:JNB 02H,RRE_WA

34、T;手动方式则返回 MOV A,2EH CLR C SUBB A,2FH JNZ RRE_WAT CLR 03H;清上水标志 SETB P2.6;关电磁阀 SETB P2.7RRE_WAT:RETKS1:MOV 2EH,#4H JNB 03H,RE_WAT1 SETB P2.6;若水满则关电磁阀 SETB P2.7 CLR 03H;SJMP RE_WATRE_WAT1:SETB 05H SJMP RE_WATKS2:MOV 2EH,#3H SJMP RE_WATKS3:MOV 2EH,#2H SJMP RE_WATKS4:MOV 2EH,#1H SJMP RE_WATKEY: ORL P1,#

35、0FFH;键处理程序MOV A,P1CPL AJZ RET_KEY;无键返回LCALL DISP;有键,延时去抖动ORL P1,#0FFHMOV A,P1CPL AJZ RET_KEY;无键返回ORL P1,#0FFH;有键,延时去抖动MOV A,P1JNB ACC.0,S1JNB ACC.1,S2JNB ACC.2,S3JNB ACC.3,S4JNB ACC.4,S5JNB ACC.5,S6JNB ACC.6,S7JNB ACC.7,S8RET_KEY:RETS1: CPL 01H; 置预置标志JNB 01H,SAVE_TEM;01H=0,存储当前预置的温度MOV 45H,#44H; 01H

36、=1,为预置状态,当前预置对象存放于45H单元S11: LCALL DISP ORL P1,#0FFH;等待按键释放 MOV A,P1 CPL A JNZ S11; 未释放,继续等待 RETSAVE_TEM:MOV A,44HANL A,#0FHMOV B,#10MUL ABADD A,43HMOV 28H,ASJMP S11S2: JNB 01H,S11;未按预置键,不处理DEC 45HMOV R0,45HCJNE R0,#41H,S11MOV 45H,#44HSJMP S11S3: JNB 01H,S11;未按预置键,不处理MOV R0,45HINC R0;相应单元加1CJNE R0,#0

37、AH,S11MOV R0,#00H;加到10清零SJMP S11S4: JNB 01H,S11;未按预置键,不处理MOV R0,#09H;减到0后变为9SJMP S11S5: SETB P2.7 CPL P2.6SJMP S11S6: CPL 02H;自动标志,02H=1自动,02H=0手动SETB P2.6SETB P2.7CLR 03HCLR 04HSJMP S11S7: JB 02H,S77CPL 03H;上水标志,03H=1上水,03H=0停止JNB 03H,NO_ADD_WATERMOV A,2EHCLR CSUBB A,#4JZ S77CLR P2.6CLR P2.7S77:SJM

38、P S11NO_ADD_WATER:SETB P2.6 SETB P2.7 SJMP S77S8: JB 02H,S88 CPL 04H;04H加热标志,1-加热,0-不加热 JNB 04H,S8_RE MOV A,27H CJNE A,#78H,S81S81:JNC S8_RECLR P2.5S88:SJMP S77S8_RE:CLR 04H;清加热标志 SETB P2.5 SJMP S88DISP: MOV R0,#44H;显示温度及状态信息MOV DPTR,#TABDISP1:MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT1JNB 00H,NDOT1MOV R5,45

39、HCJNE R5,#44H,NDOT1MOV A,#0FFHNDOT1:MOV P0,ACLR P2.0LCALL D1MSSETB P2.0DECR0MOV A,R0MOVC A,A+DPTRJB 05H,NDOT22CLR ACC.7NDOT22:JNB 01H,NDOT2JNB 00H,NDOT2MOV R5,45HCJNE R5,#43H,NDOT2MOV A,#0FFHNDOT2: MOV P0,ACLR P2.1LCALL D1MSSETB P2.1DEC R0MOV A,R0MOVC A,A+DPTRJNB 01H,NDOT3JNB 00H,NDOT3MOV R5,45HCJNE

40、 R5,#42H,NDOT3MOV A,#0FFHNDOT3:MOV P0,ACLR P2.2LCALL D1MSSETB P2.2EC R0MOV A,R0MOVC A,A+DPTRMOV P0,ACLR P2.3LCALL D1MSSETB P2.3MOV A,#0FFHJNB 02H,ZDCLR ACC.7;显示自动标志ZD:JNB 03H,S_SHUI;CLR ACC.6;显示上水标志S_SHUI:JNB 04H,N_JRCLR ACC.1;显示加热标志N_JR: JNB 05H,N_CWCLR ACC.0;显示超温标志N_CW:ORL A,#03CHMOV R5,2EHCJNE R5,#4,W80anl a,#11000011bSJMP RE_DISPW80:CJNE R5,#3,W50 anl a,#11100011b SJMP RE_DISPW50:CJNE R5,#2,W20 anl a,#11110011b SJMP RE_DISPW20:CJNE R5,#1,RE_DISP anl a,#11111011bRE_DISP: MOV P0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1