单片机花卉温室控制系统 第8页
图21 温度检测子程序流程图
温度检测子程序TIN:
TIN : MOV TEMP0,#00H ;清检测温度缓冲区
MOV R2,304H ;取样次数送R2
MOV DPTR ,#7FF8H ;指向A/D转换器0通道
LTIN1 : MOVX @DPTR,A ;启动转换
HERE : JNB IE1,HERE ;等待转换结果
MOVX A,@DPTR ;读转换结果
ADD A,TEMP0 ;累加
若图片无法显示请联系QQ752018766 MOV TEMP0 ,A
DJNZ R2,LIIN1 ;4次采样完否,未读完继续
CLR C ;累加结果除2
MOV A,TEMP0
RRC A
MOV TEMP0 ,A
RET
(4)温度控制模块
将当前温度与预置温度比较,当前温度小于预置温度时,继电器闭合,接通电阻丝加热;当前温度大于预置温度时,继电器断开,停止加热;当二者相等时电炉保持原来状态;当前温度低到比预置温度低10时,再重新启动加热;当前温度超出报警上下限时将启动报警,并停止加热。由于电炉开始加热时,当前温度可能低于报警下限,为了防止误报,在未达到预置温度时,不允许报警,为此设置了报警允许标志F0。模块流程图见图22。
图22 模块流程图
温度控制子程序CONT :
CONT : MOV A,TEMP0 ;当前温度-预置温度
CLR C
SUBB A,ST0
MOV B,A ;相减的差值暂存B
JNC LOFF ;无借位,表示当前温度预置温度,转LOFF
JNB F0,LON ;当前温度 预置温度,判是否达到过预置温度
MOV A,B ;若达到过预置温度,判二者差值事故大于10
CLR C
SUBB A,#0AH
JNC ACC.7, ;差值不大于10,转LOFF
LON : 若图片无法显示请联系QQ752018766CLR P1.7 ;开电炉
SJMP EXIT ;返回
LOFF : SETB F0 ;设置允许报警标志
SETB P1.7 ;关电炉
EXIT : RET
(5)温度越限报警模块
报警上限温度为预置温度+
若图片无法显示请联系QQ752018766
图23 报警子程序流程图
报警子程序ALARM:
ALARM: MOV A,TEMPO ;当前温度→A
CLR C
SUBB A,STO ;(当前温度—预置温度)→A
MOV B, A ; 相减结果送B暂存
JC LAO ;有借位,当前温度小于预置温度转LAO
SETB F0 ;当前温度≥预置温度,允许报警
AJMP LA1
LAO : MOV A, STO ;预置温度→A
CLR C
SUBB A,TEMPO ;(预置温度—当前温度)→A
MOV B, A ;相减结果送B暂存
LA1 : CLR C
SUBB A,#OA ;(相减结果-10)→A
若图片无法显示请联系QQ752018766 JC LA2 ;相减结果小于10,不报警返回
JNB FO,LA2 ;相减结果≥10,判是否允许报警,
不允许则返回
CLR P1.6 ;启动报警
SETB P1.7 ;关电炉
LCALL D0.6s ;报警延时0.6s
SETB P1.6 ;关报警
LA2 : RET
D0.6s : (略) ;延时0.6s子程序
(6)主程序和中断、服务子程序
主程序采用中断嵌套方式设计,各功能,模块可直接调用。主程序完成系统初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。定时器0中断服务子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动A/D转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出可控硅的控制脉冲等)。中断有定时器0产生,根据需要每隔15 s中断一次,即每15 s采样控制一次。但系统采用6MHZ晶振,最大定时为130ms,为实现15 s定时,这里另行设了一个软件计数器。主程序和中断服务子程序的流程图24所示。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页