单片机花卉温室控制系统 第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] 下一页