基于单片机的锅炉温度控制系统的设计(10)

2019-08-03 13:30

辽宁科技大学本科生毕业设计 第42页

DB \ \

;==================================================== RESET1:

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

SETB DATE_LINE1

NOP

CLR DATE_LINE1

MOV R0,#6BH ;主机发出延时复位低脉冲 MOV R1,#04H TSR11: DJNZ R0,$ MOV R0,#6BH DJNZ R1,TSR11

SETB DATE_LINE1 ;然后拉高数据线 NOP NOP NOP

MOV R0,#32H

TSR21: JNB DATE_LINE1,TSR31 ;等待DS18B20回应 DJNZ R0,TSR21

JMP TSR41 ; 延时

TSR31: SETB FLAG1 ; 置标志位,表示DS1820存在 JMP TSR51

TSR41: CLR FLAG1 ; 清标志位,表示DS1820不存在 JMP TSR71 TSR51: MOV R0,#06BH

TSR61: DJNZ R0,$ ; 时序要求延时一段时间 TSR71: SETB DATE_LINE1 RET

;======================================================= RE_18B20_1:

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

JB FLAG1,RE_18B20A1 RET RE_18B20A1:

辽宁科技大学本科生毕业设计 第43页

CALL RESET1 ;检测DS18B20是否存在 MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE1 ;调用传感器1写数据或命令子程序,下同 MOV A,#7FH ;12位精确度 LCALL WRITE1 RET

;-------------------------------------------------------------- ;将自定义字符写入LCD1602的CGRAM中 ;-------------------------------------------------------------- STORE_DATA:

MOV A,#40H CALL WCOM MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00H S_DATA:

MOV A,R3

MOVC A,@A+DPTR

CALL WDATA ;写入数据 INC R3

DJNZ R2,S_DATA RET

D_DATA:

DB 0CH,12H,12H,0CH,00H,00H,00H,00H

;============================================================== WRITE1:

;传感器1写数据或命令子程序

MOV R2,#8 ;一共8位数据

CLR C WR1:

CLR DATE_LINE1 ;开始写入DS18B20总线要处于复位(低)状态 MOV R3,#07

辽宁科技大学本科生毕业设计 第44页

DJNZ R3,$ ;总线复位保持16微妙以上

RRC A ;把一个字节DATA 分成8个BIT环移给C MOV DATE_LINE1,C ;写入一个BIT MOV R3,#3CH

DJNZ R3,$ ;等待100微妙 SETB DATE_LINE1 ;重新释放总线 NOP

DJNZ R2,WR1 ;写入下一个BIT SETB DATE_LINE1 RET

;============================================================== READ1:

;读取传感器1的温度子程序

MOV R4,#2 ; 将温度低位、高位从DS18B20中读出存入TEMPH、

TEMPL

MOV R1,#TEMPL RE00: MOV R2,#8 RE01: CLR CY

SETB DATE_LINE1 NOP NOP

CLR DATE_LINE1 ;读前总线保持为低 NOP NOP NOP

SETB DATE_LINE1 ;开始读总线释放 MOV R3,#09 ;延时18微妙 DJNZ R3,$

MOV C,DATE_LINE1 ;从DS18B20总线读得一个BIT MOV R3,#3CH

DJNZ R3,$ ;等待100微妙

RRC A ;把读得的位值环移给A

辽宁科技大学本科生毕业设计 第45页

DJNZ R2,RE01 ;读下一个BIT MOV @R1,A INC R1 DJNZ R4,RE00 RET

;******************按键检测程序****************************

KEY: JB K1,L1 ;判断K1是被否按下,否则转移L1

MOV R5,#1 LCALL DELAY JB K1,L1

;确认是否按下

JNB K1,$ ;等待键释放

SETB 20H.0 ;值增加置位 AJMP L2

L1: JB K2,L2 ; 判断K2是被否按下,否则转移L2

MOV R5,#1 LCALL DELAY JB K2,L2

;确认是否按下

JNB K2,$ ;等待键释放

SETB 20H.1 ;值减少置位

L2: JB K3,L3 ; 判断K2是被否按下,否则转移L3

MOV R5,#1 LCALL DELAY JB K3,L3

;确认是否按下

JNB K3,$ ;等待键释放

SETB 20H.2 ;值确定置位 L3:

RET

;***************************************************** ; 处理温度 BCD 码子程序

;**************************************************** CONVTEMP: MOV A,TEMPH ;判温度是否零下

辽宁科技大学本科生毕业设计 第46页

ANL A,#80H

JZ TEMPC1 ;温度零上转 CLR C

MOV A,TEMPL ;二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H

TEMPC1: TEMPC11:

MOV TEMPL,A MOV A,TEMPH CPL A ADDC A,#00H MOV TEMPH,A SJMP TEMPC11 MOV TEMPHC,#0AH MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL

ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR

MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H ;取出高四位 SWAP A MOV TEMPL,A

MOV A,TEMPH ;取出低四位 ANL A,#0FH SWAP A

ORL A,TEMPL ;重新组合 MOV TEMP_ZH,A

;实时温度存放单元


基于单片机的锅炉温度控制系统的设计(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:好习惯案例(江菊)

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

马上注册会员

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