温度控制系统(8)

2019-05-18 20:26

唐山学院毕业设计

;================================================== DIS_TEMP1: MOV A,TEMP_AL ;显示已设定的温度报警值

MOV B,#10 DIV AB

MOV TEMP_AL2,A ;保存温度报警值的十位数 MOV LCD_X,#3 ;设置位置

CALL SHOW_DIG2 ;显示报警温度值的十位 INC LCD_X

MOV A,TEMP_AL MOV B,#10 DIV AB

MOV TEMP_AL1,A ;保存温度报警值的个位数 RET

MOV A,B ;个位

CALL SHOW_DIG2 ;显示报警温度值的个位

START: CALL RE_18B20_1 ;检测通道1的DS18B20是否存在,并设置12位精确度

CALL RESET1 ;18B20复位子程序,检测18B20是否存在

JNB FLAG1,START11 ;如果DS1820不存在则跳START11 ; CALL MENU_OK1 ; MOV A,#0CEH

; CALL TEMP_BJ ;显示温度摄示度的标记 JMP START21

START11: CALL MENU_ERROR1 ;如果不存在则显示ERROR MOV A,#0CBH

CALL TEMP_BJ ;显示温度摄示度的标记 JMP START

START21: ;检查到有温度传感器后的处理 CALL RESET1 否存在

JNB FLAG1,START11 ;DS1820不存在则转到START11报错

;18B20复位子程序,再次检测18B20是;如果存在则显示OK

31

唐山学院毕业设计

MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE1

MOV A,#44H ; 发出温度转换命令 CALL WRITE1 CALL RESET1

MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE1

MOV A,#0BEH ; 发出读温度命令 CALL WRITE1 CALL READ1

M1: CAll CONVTEMP 存放到TEMPHC、TEMPLC

CAll DISPBCD

;显示区BCD码温度值刷新子程序,即把

BCD转为十六进制 6FH-73H,;其中70H存放小数点,6FH存放十分位数,71H存放个位数,72H存放十位数,73H存入百位数

MOV A,72H ;跳过85.0摄氏度

DISPLAY: CALL DELAY2

;读出温度值到TEMPH、TEMPL

LJMP M1 ;跳到温度处理、显示程序

;处理温度BCD码子程序,并将处理结果

CJNE A,#8,DISPLAY MOV A,71H CJNE A,#5,DISPLAY MOV A,6FH CJNE A,#0,DISPLAY LJMP START

CALL CONV MOV A,#0C5H

;将采集到的温度在LCD1602显示出来

;显示已设定的温度报警值

;LCALL DIS_TEMP1

CALL TEMP_BJ ;显示报警温度摄示度的标记

LCALL DIS_WATER ;显示当前水位的值 MOV 20H,#0 LCALL KEY

;调用按键扫描程序

32

唐山学院毕业设计

JNB 20H.0,DEC_WATER

;当前水位与水位上限值80比较

LCALL DIS_WATER ;显示当前水位的值 AJMP COMPARE1 DEC WATER

ADD_WATER:INC WATER

DEC_WATER:JNB 20H.1,COMPARE1 ;当前水位与水位上限值80比较

;水位减1

LCALL DIS_WATER ;显示当前水位的值 COMPARE1: CLR C

;当前水位与水位上限值80比较

MOV A,WATER_AL2 ;取得当前水位的十位数 CJNE A,#8,NEXT11 ;十位数比较 AJMP LOOP1

;如果十位数相等,则转去比较个位数

;如果十位数小于8,转去比较下限值

NEXT11: JC COMPARE2 CLR SPK

;如果十位数大于8就报警

SETB WATER-SW-H ;关闭给水泵 CLR RED

SETB flag CLR SPK

;报警标记置位

;如果个位数大于0就报警

SETB GREEN AJMP COMPARE3

;转去当前温度与设定的报警温度比较

LOOP1: CLR C

MOV A,WATER_AL1 ;取得当前水位的个位数 JZ COMPARE3

;如果个位数等于0去比较温度

SETB GREEN CLR RED

SETB WATER-SW-H ;当前水位高于上限值关闭给水泵开关

;当前水位与下限比较

;取得当前水位的十位数

AJMP COMPARE3 COMPARE2: CLR C

MOV A,WATER_AL2

AJMP COMPARE3

CJNE A,#2,NEXT12 ;个数比较

;如果十位数等于2,则表明水位大于或等于

;十位数大于2就转去当前温度与设定的

20就转去比较温度

NEXT12: JNC COMPARE3

33

唐山学院毕业设计

报警温度比较

SETB FLAG

;报警标记置位

;如果十位数小于2就报警

CLR SPK

CLR WATER_SW_H ;如果当前水位低于下限值就打开给水泵开关 CLR BOILER_SW ;当前温度超过温度报警值关闭锅炉燃烧器开关,停

止加热

CLR RED

SETB GREEN

;转去当前温度与设定的报警温度比较

;当前温度与设定的报警温度比较

AJMP COMPARE3 COMPARE3: CLR C

MOV A,72H

CJNE A,TEMP_AL2,NEXT1 ;实际温度值与报警温度值的十位数比较 AJMP NEXT ;SETB flag CLR SPK

;十位数相等时就转去比较个位数

;实际温度值的十位数少时则转START0 ;报警标记置位

NEXT1: JC START0

;实际温度值的十位数高于报警温度值的十位数就报警

SETB BOILER_SW ;当前温度超过温度报警值关闭锅炉燃烧器开

关,停止加热 SETB RED

;SETB flag

;报警标记置位

CLR SPK ;十位数相等时,实际温度值的个位数高于报警温度值的个位数就报警

SETB BOILER_SW ;如果当前温度超过温度报警值时就关闭锅炉燃烧器开关,停止加热

34

CLR GREEN

CLR BOILER_SW ;打开锅炉燃烧器开关,继续加热 LJMP START MOV A,71H

CJNE A,TEMP_AL1,NEXT2 ;实际温度值与报警温度值的个位数比较 AJMP NEXT0

;个位数相等时就转去比较十分位数

;实际温度值的个位数少时则转START0 ;比较完毕,重新采集温度和水位

NEXT: CLR C

NEXT2: JC START0

唐山学院毕业设计

CLR RED SETB GREEN

LJMP START ;比较完毕,重新采集温度和水位

;实际温度值的十分位数等于0时则转START0

NEXT0: MOV A,6FH JZ START0 警

SETB BOILER_SW ;如果当前温度超过温度报警值时就关闭锅炉 CLR RED SETB GREEN LJMP START

;比较完毕,重新采集温度和水位

;如果水位出现报警但温度没有出现报警时就继

燃烧器开关,停止加热

;SETB flag CLR SPK

;报警标记置位

;十位数和个位数相等时,实际温度值的十分位数大于0就报

START0:

JB flag,LOOP4 续采集温度和水位 SETB SPK 后继续采集温度和水位

SETB RED CLR GREEN

;如果水位和温度都没有出现报警时就使绿灯亮,然

LOOP4: LJMP START

;====================================================================

;==============================================

;================================================ LP:

ORL P1,#03H;逻辑或,检测水位 MOV A,P1;读P1口

JNB ACC.3,LP1, P1.3=0跳转到LP1

JB ACC.4,LP2;当P1.4=0表示实际水位在下限,跳转 BK: MOV A #20 ACALL D2S;调延时2S子程序 AJMP LP

35


温度控制系统(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:智能变电站 220KV(母联)分段保护标准化作业指导书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: