《热水器水温水位控制仪设计.doc》由会员分享,可在线阅读,更多相关《热水器水温水位控制仪设计.doc(45页珍藏版)》请在三一办公上搜索。
1、热水器水温水位控制仪设计摘要: 文中介绍了热水器水温水位控制仪系统的整体设计,并简述了设计中各单元电路的工作原理。该设计用汇编语言在P87LPC762BN 芯片上编程实现.系统由水位检测电路、水温检测电路、键盘控制、单片机控制模块、执行电路、显示电路和报警电路构成,共同实现水温水位控制功能。单片机控制模块的设计是整个系统设计的核心,文中详细介绍了单片机控制模块的软件设计。本设计的特点是成本较低,性能稳定,精度高,有一定的开发价值。关键词: 汇编语言 单片机控制 水温水位控制仪目 录第一章 整体方案2 1.1 设计要求 2 1.2 整体设计原理 2第二章 单元电路设计3 2.1 水位检测电路 3
2、 2.2 水温检测电路 3 2.3 单片机(P87LPC76x)简介3 2.4 其它单元电路的分析 4第三章 软件设计 5第四章 系统测试 7 4.1 调试 7 4.2 指标测试 7第五章 结论 7附录 8参考文献 12第一章 整体设计方案1.1 设计要求一 要技术指标:测温精度:测温范围:99水位分档: 5档二. 主要功能:1. 开机自检: 开机时发出滴的提示音,表示机器处于正常状态;2. 水位预置: 可预置加水水位:20、50、80、100;3. 水温指示: 显示热水器内部的实际水温;4. 水位指示: 显示热水器内部的实际水位;5. 温控上水: 当热水器未加满水,水温又偏高时(水温在601
3、00时),自动补水至合适水温50左右;6. 手动上水: 当水位低于预置水位时,按手动上水按键,则加水至预置水位;按ON/OFF按键则停止上水;7. 自动上水: 当缺水时,延时15分钟自动上水至预置水位,预置水位默认状态为50 档,启动时蜂长声,关水时短鸣三声;上水时水位滚动显示.8. 缺水报警: 当缺水时(处于缺水档)报警,延时15分钟自动进入自动上水;9. 正常工作: 正常工作时,水温、水位交替显示;三. 显示要求:1. 水温: 数字+;2. 水位: 缺水档一段发光管,其余两位;四. 故障显示:1 传感器接触不良,显示:- - 2 雷击破坏,显示:- - - 1.2 整体设计原理方案一:采用
4、模拟分立元件,可以实现水温和水位的控制。通过对实际水温和水位的测量,再与设定值相比较,判断加水方式,并对水位水温进行控制。但采用模拟器件由于元件的分散性太大,各电阻电容之间的影响很大,因所设计的系统指标不高。而且使用的器件较多,连接复杂,体积大,功耗大。电路中焊点和线路较多会,使成品的稳定度和精度大大降低。方案二:采用atmel公司的89C51系列单片机来制作,用汇编来设计程序控制C51实现热水器水温水位控制仪的设计。系统框图如图1.1所示,该系统的核心部分是单片机(MCU)控制的图1.1 热水器水温水位控制仪的系统框图设计,单片机根据不同的输入发出不同的响应。用户通过键盘控制可以选择上水的方
5、式和加水位置;实际的水位、水温通过水位测量电路和水温测量电路进入单片机,单片机对其进行分析判断,决定下一步该发出什么命令给其它电路。如果经过比较需要加水的话,就发出命令给执行电路,进行加水。正常状态时在显示电路中交替显示水位和水温的实际值。当缺水时(处于缺水档),单片机响应报警电路。总之,用单片机可以实现对各功能模块的控制,达到用户所需的要求。目前单片机的应用已经很成熟了,用它来实现对各电路的控制非常的简单方便,而且它的精度也能到达要求。应用单片机来设计产品,降低了成本,缩短了研发时间。根据以上的分析我们选择第二个方案来实现热水器水温水位控制仪的设计。第二章 单元电路设计热水器水温水位控制仪的
6、设计包含不少单元电路的设计,如:水位检测电路,水温检测电路,报警电路,稳压源电路,执行电路等。下面分别介绍各电路的工作原理及器件的选择。2.1 水位检测电路 该电路主要由电热调节器(thermistor)、三个信号放大器、两个电阻和一个电容组成。它的原理图如图2.1所示。水位的具体情况通过电热调节器转换成不同信号的输出,在经过反馈和放大,最终得到一稳定的信号输入单片机的P1.2口。图2.1 水位检测电路图2.2 水温检测电路 水温检测电路和水位检测电路的原理基本类似,它也是通过电热调节器(thermistor)将水温的变化转换成信号的变化并经反馈和放大得到较稳定的信号输入单片机的P0.7口。它
7、的电路原理图如图2.2所示。图2.2 水温检测电路图2.3 单片机(P87LPC76x)简介该系统设计中采用的是P87LPC76x系列单片机中的P87LPC762BN 芯片。P87LPC76x 是20 脚封装的单片机适合于许多要求高集成度低成本的场合可以满足许多方面的性能要求作为Philips 小型封装系列中的一员P87LPC76x 提供高速和低速的晶振和RC 振荡方式可编程选择具有较宽的操作电压范围可编程I/O 口线输出模式选择可选择施密特触发输入LED驱动输出有内部看门狗定时器P87LPC76x 采用80C51 加速处理器结构指令执行速度是标准80C51MCU 的两倍。管脚配置如图2.3所
8、示: 图2.3 P87LPC76x系列单片机的管脚配置图2.4 其它单元电路的分析稳压源电路是一个W78xx系列的三端集成稳压器电路。9V的直流输入电源经过用W7806 图2.4 热水器水位水温控制仪的总体电路原理图芯片制作的三端集成稳压电路后便得到6V的直流稳压电源。稳压源电路中还设置了去耦电容和二极管保护。报警电路中用了一个蜂鸣器(BUZZER)和三极管放大器。热水器水位水温控制仪的设计还有一些的单元电路,原理比较简单,可以根据电路的总原理图自行分析,在此就不介绍了。热水器水位水温控制仪的总体电路原理图如图2.4所示。第三章 软件设计 我们在Windows98的平台上,用广州致远有限公司和
9、广州周立功有限公司生产的MCS51仿真开发系统软件进行汇编语言程序设计来实现热水器水温水位控制仪的功能.它的系统软件设计流程图如图3.1所示。 是启动计时、计数器 否读取键盘状态 否 是 是上水 否 是交替显示水温水位值 否温控上水 否 是图3.1 热水器水温水位控制仪软件设计流程图 该软件设计中包括两个中断子程序模块,显示模块,延迟模块,还有十六进制与十进制之间的转换程序等等。1中断服务子程序 两个中断服务子程序分别是对水温、水位的检测和显示,两者的思路基本相似,只不过是所设置的定时工作方式不同而已。以;定时器0中断服务子程序(LEDINT0)为例,首先对现场进行压桟保护,然后计算水位输入的
10、频率,设定水位的显示时间(20s)并把所测频率的十六进制转换成十进制显示。它的程序流程图如图3.2所示,程序见附录。否 是重新对30H赋初值 否十六进制转换成十进制 是图3.2 中断服务子程序的流程图2显示模块程序设计 显示模块就是利用七段数码管交替显示水位和水温的实际值.显示模块采用的是动态显示,即一位一位的显示,为了使人眼能看到并且能分辨清楚,必须使每显示器显示的时间有一定的延迟但又不可过长,这样人眼既看到数据的显示又感觉输出显示是连续的这里所有的七段数码管都是低电平有效,因此要实现数据的显示需要将所要显示的数据译码,在设计中调用了一个显示程序,实际上就是一个数据的译码.例如要显示数字“5
11、0”就必须把数据译成“92h 0c0h”才会在数码管上显示出数字“50”。它的程序见附录。3 延迟模块设计 延迟模块主要是对显示模块的一个控制,其功能是实现数据的动态显示。延迟模块的延迟时间可以用公式:T=12/fosc*(2n-a)其中T是我们所要设定的时间周期,fosc是标准频率等于12MHz,n是常数与所设置的工作方式有关,a是时间常数即我们要求的编程数值。此程序中我们设T5ms,取n为16,通过公式计算得a为0EC77H。延迟模块的程序见附录。第四章 系统测试41 调试根据方案设计的要求,调试过程共分三大部分:硬件调试、软件调试和软硬联调。电路按模块调试,各模块逐个调试通过后再联调。单
12、片机软件先在最小系统板上调试,确保外部EPROM及RAM工作正常之后,再与硬件联调。 1硬件调试硬件调试时分小模块进行调试,整个系统可分为若干个小模块,例如:水温检测模块,水位检测模块,执行电路,报警电路的检测和调试等等。2软件调试本系统的软件系统不是很大,全部是用汇编语言来编写的,仿真采用的是西南C51仿真软件进行调试仿真。首先对所编写的程序进行语法差错和逻辑差错,然后装载到仿真头中进行调试。采用自下向上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统调试。3 软硬调试该系统中软硬件间的联系比较紧密,首先要把硬件所测的数据和键盘输入送入单片机中,经过软件的计算、比较和判断等,然
13、后输出信号去控制硬件电路,达到显示、上水和报警的目的。但总体来看,此系统中软硬调试也不是很难。42 指标测试1测试仪器频率计:GFG-8016G稳压电源:DF1731/SL数字万用表:UNI-T2指标测试(1)显示水温精度的测量 在电源为5V的条件下,进行水温精度的测量。输入输出预置水位水温检测()水位检测(档)显示水温()显示水位(档)150149124024123303293445444470小于10071ADD由表可见,测量精度超过了题目所给的要求。性能指标或功能,测试方法和步骤,仪器型号名称(厂家)测试记录的数据,图表,曲线第五章 结论采用单片机来作系统的控制部分,完全可以实现热水器水
14、温水位控制仪的功能并达到精度要求。目前,单片机技术的应用已经很成熟,而且单片机的价格比较便宜,开发的时间又短。在能达到要求的情况下,用单片机来实现热水器水位水温控制仪的设计较为经济实惠。但对于程序设计者来说就必须对硬件要有足够的了解,软硬件结合,这样编出的程序才是最优化的。附 录ORG 0000HJMP MAIN org 000bhjmp LEDINT0org 001bhjmp ledint1ORG 0100HPP5:JMP PP1PP7:JMP PP2MAIN: MOV 34H,#0FFH MOV 35H,#0FFH MOV 36H,#00H MOV 37H,#00H clr p1.6 se
15、tb p1.7MOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#51H ;定时器0工作于方式定时器1作为计数器MOV TH0,#0ECH ;给计数寄存器的高8位赋初值MOV TL0,#77H ;给计数寄存器的低8位赋初值 MOV 30H,#20 mov 31h,#10 MOV 32H,#20 mov 33h,#10 mov th1,#00h mov tl1,#00h MOV IE,#82H SETB TR0 ;计时开始 setb tr1 ;开始计数 mov r0,#0 mov r1,#0 mov r2,#0 mov r3,#0 mov r4,#0LOOP: mov dptr,#0a
16、100h ;读取键盘状态 movx a,dptr MOV 21H,A ;把A的内容赋给缓冲区21H,再比较判断然后输出 JNB 21H.7,PP3 ;加水到50 JNB 21H.6,PP7 ;加水到80 JNB 21H.5,PP5 ;加水到100 MOV A,34H CLR C SUBB A,#1 JC PP3 ;C是1 转PP3 JZ TTL4 ;A=0 转TTL4 AJMP BB ;无条件转移 TTL4:MOV A,35H CLR C SUBB A,#10 JC PP3 MOV A,36H CLR C SUBB A,#5 JC BB JZ TTL5 AJMP PP6 TTL5:MOV A,
17、37H CLR C SUBB A,#10 JC BB AJMP PP6 BB: MOV A,R0 LCALL XIANSHI MOV DPTR , #0A000h MOVx DPTR,A lcall delay MOV A,R1 LCALL XIANSHI MOV DPTR , #0A001h MOVx DPTR,A lcall delay MOV A,R2 LCALL XIANSHI MOV DPTR , #0A002h MOVx DPTR,A lcall delay MOV A,R3 LCALL XIANSHI MOV DPTR , #0A003h MOVx DPTR,A lcall de
18、lay MOV A,R4 LCALL XIANSHI MOV DPTR , #0A004h MOVx DPTR,A lcall delay ajmp loop pp3: MOV A,#0 LCALL XIANSHI MOV DPTR , #0A000h MOVx DPTR,A lcall delay MOV A,#5 LCALL XIANSHI MOV DPTR , #0A001h MOVx DPTR,A lcall delay MOV A,34H CLR C SUBB A,#1 JC PP3 JZ TTL TTL:MOV A,35H CLR C SUBB A,#55 JC PP3 JMP L
19、OOPpp2: MOV A,#8 LCALL XIANSHI MOV DPTR , #0A001h MOVx DPTR,A lcall delay MOV A,#0 LCALL XIANSHI MOV DPTR , #0A000h MOVx DPTR,A lcall delay MOV A,34H CLR C SUBB A,#2 JC PP2 JZ TTL1TTL1:MOV A,35H CLR C SUBB A,#55 JC PP2JMP LOOPPP6: MOV A,#10 LCALL XIANSHI MOV DPTR , #0A002h MOVx DPTR,A lcall delay MO
20、V A,#13 LCALL XIANSHI MOV DPTR , #0A001h MOVx DPTR,A lcall delay MOV A,#13 LCALL XIANSHI MOV DPTR , #0A000h MOVx DPTR,A lcall delay MOV A,34H CLR C SUBB A,#4 JC PP6 JZ TTL6 JMP LOOP TTL6:MOV A,35H CLR C SUBB A,#55 JC PP6 JMP LOOPpp1: MOV A,#9 LCALL XIANSHI MOV DPTR , #0A000h MOVx DPTR,A lcall delay
21、MOV A,#9 LCALL XIANSHI MOV DPTR , #0A001h MOVx DPTR,A lcall delay MOV A,34H CLR C SUBB A,#4 JC PP1 JZ TTL2TTL2:MOV A,35H CLR C SUBB A,#55 JC PP1JMP LOOP ;*;定时器0中断服务子程序;*LEDINT0: PUSH PSW ;压栈保护现场 PUSH ACCclr ET0 ;防止连续中断CLR TR0 ;禁止定时器计数 CLR TR1 MOV TH0,#3CH ;重新给计数器赋初值MOV TL0,#0B0HDJNZ 30H,LEDRET ;定时1s
22、到了吗?djnz 31h,ibtd ;水温水位分别显示20秒CLR ET0MOV TMOD,#15H ;定时器1工作于方式定时器0作为计数器MOV TH1,#0ECH ;给计数寄存器的高8位赋初值MOV TL1,#77H ;给计数寄存器的低8位赋初值MOV 32H,#20mov 33h,#10 mov th0,#00hmov tl0,#00hMOV IE,#88H ;IE是寄存器,88H的输入设置了中断-setb tr1 SETB TR0 ;开始计数mov r0,#0mov r1,#0mov r2,#0mov r3,#0mov r4,#0POP PSWPOP ACCRETIIBTD:MOV 3
23、0H,#20 ;是,则重新赋初值MOV A,TH1MOV 34H,AMOV R2,AMOV A,TL1MOV 35H,AMOV R3,A MOV TH1,#00HMOV TL1,#00H CLR A MOV R4,AMOV R5,AMOV R6,AMOV R7,#16PP0: CLR C MOV A,R3 RLC A MOV R3,AMOV A,R2RLC A ;把十六进制数转换成十进制数MOV R2,AMOV A,R6ADDC A,R6DA A MOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,
24、PP0 ;转换完毕MOV A,R4 ;把R4,R5,R6中的十进制数一位一位的存放于R4,R3,R2,R1,R0中MOV R4,AMOV A,R5SWAP AANL A,#0FHMOV R3,AMOV A,R5ANL A,#0FHMOV R2,AMOV A,R6SWAP AANL A,#0FHMOV R1,AMOV A,R6ANL A,#0FHMOV R0,ALEDRET:SETB TR0 SETB TR1 ;启动定时器 ;启动计数器MOV IE,#82HPOP ACC ;出栈POP PSWRETI ;中断返回ledint1:PUSH PSW ;压栈保护现场PUSH ACCclr ET1 ;防
25、止连续中断 CLR TR0 ;禁止定时器计数 CLR TR1 MOV TH1,#3CH ;重新给计数器赋初值MOV TL1,#0B0HDJNZ 32H,LEDRET1 ;定时1s到了吗?djnz 33h,IBTD1 ;显示水位时间到了没有啊?;到就去显示水温MOV TMOD,#51H ;定时器0工作于方式定时器1作为计数器MOV TH0,#0ECH ;给计数寄存器的高8位赋初值MOV TL0,#77H ;给计数寄存器的低8位赋初值MOV 30H,#20mov 31h,#10 mov th1,#00hmov tl1,#00hMOV IE,#82HSETB TR0 ;计时开始setb tr1 ;开
26、始计数mov r0,#0mov r1,#0mov r2,#0mov r3,#0mov r4,#0POP PSWPOP ACCRETI IBTD1:MOV 32H,#20 ;是,则重新赋初值;*;将十六进制转换为BCD码 *; * MOV A,TH0 MOV 36H,A MOV R2,A MOV A,TL0 MOV 37H,A MOV R3,A MOV TH0,#00H MOV TL0,#00H CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#16PP4: CLR C MOV A,R3 RLC A MOV R3,AMOV A,R2RLC AMOV R2,AMOV
27、 A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,PP4 ;转换完毕MOV A,R4MOV R4,AMOV A,R5SWAP AANL A,#0FHMOV R3,AMOV A,R5ANL A,#0FHMOV R2,AMOV A,R6SWAP AANL A,#0FHMOV R1,AMOV A,R6ANL A,#0FHMOV R0,ALEDRET1:SETB TR0 ;启动定时器SETB TR1 ;启动计数器 setb et1 setb ea POP ACC ;出栈 POP PSW RETI ;中断返回delay: mov r7,#15TM: mov r6,#10AA: djnz r6,AA djnz r7,TM RET XIANSHI: inc a movc a,a+pc ret db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h, 0f8h,80h,90h ;数据显示分别 为:0,1,2,3,4,5,6,7,8,9db 88h,83h,0c6h,0a1h,86h,8eh,0ffh, 0f7h ;为显示ADD而用的数据 END
链接地址:https://www.31ppt.com/p-2931309.html