热水器水温水位控制仪设计(编辑修改稿)内容摘要:

图 热水器水温水位控制仪软件设计流程图 该软件设计中包括两个中断子程序模块,显示模块,延迟模块,还有十六进制与十进制之间的转换程序等等。 1.中断服务子程序 两个中断服务子程序分别是对水温、水位的检测和显示,两者的思路开始 初始化 启动计时、计数器 读取键盘状态 实际水位、水温的计算 定时 1 秒是否已到即是否响应中断 是否缺水 交替显示水温水位值 报警自动上水 水温是否偏高 温控上水 热 水器 是否 加满 了水 是否手动上水 上水 6 基本相似,只不过是所设置的定时工作方式不同而已。 以。 定时器 0 中断服务子程序( LEDINT0)为例,首先对现场进行压桟保护,然后计算水位输入的频率,设定水位的显示时间( 20s)并把所测频率的十六进制转换成十进制显示。 它的程序流程图如图 所示,程序见附录。 否 是 否 是 图 中断服务子程序的流程图 2.显示模块程序设计 显示模块就是利用七段数码管交替显示水位和水温的实际值 .显示模块采用的是动态显示 ,即一位一位的显示 ,为了使人眼能看到并且能分辨清楚 ,必须使每 显示器显示的时间有一定的延迟但又不可过长,这样人眼既看到数据的显示又感觉输出显示是连续的.这里所有的七段数码管都是低电平有效,因此要实现数据的显示需要将所要显示的数据译码 ,在设计中调用了一个显示程序 ,实际上就是一个数据的译码 .例如要显示数字“ 50”就必须把数据译成“ 92h 0c0h”才会在数码管上显示出数字“ 50”。 它的程序见附录。 3. 延迟模块设计 延迟模块主要是对显示模块的一个控制,其功能是实现数据的动态显示。 延迟模块的延迟时间可以用公式 : T=12/fosc*(2na) 其中 T是我们所要设定的 时间周期, fosc是标准频率等于 12MHz, n 是常数与所设置的工作方式有关, a 是时间常数即我们要求的编程数值。 此程序中我们设 T= 5ms,取 n为 16,通过公式计算得 a 为 0EC77H。 延迟模块的程序见附录。 压桟保护现场 中断请求位、计数器、计时器清零 20s 定时是否已到 重新对 30H 赋初值 十六进制转换成十进制 数据存入 R4,R3,R2, R1,R0 (以便显示) 中断返回 水温显示 弹出压桟地址 定时 1s 是否已到 7 第四章 系统测试 4. 1 调试 根据方案设计的要求,调试过程共分三大部分:硬件调试、软件调试和软硬联调。 电路按模块调试,各模块逐个调试通过后再联调。 单片机软件先在最小系统板上调试,确保外部 EPROM及 RAM工作正常之后,再与硬件联调。 1.硬件调试 硬件调试时分小模块进行调试,整个系统可 分为若干个小模块,例如:水温检测模块,水位检测模块,执行电路,报警电路的检测和调试等等。 2.软件调试 本系统的软件系统不是很大,全部是用汇编语言来编写的,仿真采用的是西南 C51仿真软件进行调试仿真。 首先对所编写的程序进行语法差错和逻辑差错,然后装载到仿真头中进行调试。 采用自下向上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统调试。 3. 软硬调试 该系统中软硬件间的联系比较紧密,首先要把硬件所测的数据和键盘输入送入单片机中,经过软件的计算、比较和判断等,然后输出信号去控制硬件电路,达到显示、上水 和报警的目的。 但总体来看,此系统中软硬调试也不是很难。 4. 2 指标测试 1.测试仪器 频率计: GFG8016G 稳压电源: DF1731/SL 数字万用表: UNIT 2.指标测试 ( 1)显示水温精度的测量 在电源为+ 5V的条件下,进行水温精度的测量。 输入 输出 预置水位 水温检测(℃) 水位检测(档) 显示水温(℃) 显示水位(档) 1 50 1 49 1 2 40 2 41 2 3 30 3 29 3 4 45 4 44 4 70 小于 100% 71 ADD 由表可见,测 量精度超过了题目所给的要求。 性能指标或功能 ,测试方法和步骤 ,仪器型号名称 (厂家 ) 测试记录的数据 ,图表 ,曲线 第五章 结论 采用单片机来作系统的控制部分,完全可以实现热水器水温水位控制仪的功能并达到精度要求。 目前,单片机技术的应用已经很成熟,而且单片机的价格比较便宜,开发的时间又短。 在能达到要求的情况下,用单片机来实现热水器水位水温控制仪的设计较为经济实惠。 但对于程序设计者来说就必须对硬件要有足够的了解,软硬件结合,这样编出的程序才是最优化的。 8 附 录 ORG 0000H JMP MAIN 000bh jmp LEDINT0 001bh jmp ledint1 ORG 0100H PP5:JMP PP1 PP7:JMP PP2MAIN: MOV 34H,0FFH MOV 35H,0FFH MOV 36H,00H MOV 37H,00H clr setb MOV 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,0 LOOP: mov dptr,0a100h。 读取键盘状态 movx a,@dptr MOV 21H,A。 把 A的内容赋给缓冲区 21H,再比较判断然后输出 JNB ,PP3。 加水到 50 JNB ,PP7。 加水到 80 JNB ,PP5。 加水 到 100 MOV A,34H CLR C SUBB A,1 JC PP3。 C是 1 转 PP3 JZ TTL4。 A=0 转 TTL4。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。