📄 3.txt
字号:
MOV DPTR,#M_OK4 ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#98H ;第四行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
RET
;==============================================================
;显示恒温水温度值子程序
;==============================================================
SHOW_G: MOV A,#86H ;设置显示位置
LCALL SEND_I
MOV A,SDWDG
MOV B,#0AH
DIV AB
ADD A,#30H ;十位数转换为 ASCII 码
LCALL SEND_D ;送显示
MOV A,B ;个位数
ADD A,#30H ;个位数转换为 ASCII 码
LCALL SEND_D ;送显示 ;显示恒温水温度值子程序
MOV A,#87H ;设置显示位置
LCALL SEND_I
MOV A,#0A1H ;显示温度标记℃
LCALL SEND_D
MOV A,#0E6H
LCALL SEND_D
SHOW_D: MOV A,#96H ;设置显示位置
LCALL SEND_I
MOV A,SDWDD
MOV B,#0AH
DIV AB
ADD A,#30H ;十位数转换为 ASCII 码
LCALL SEND_D ;送显示
MOV A,B ;个位数
ADD A,#30H ;个位数转换为 ASCII 码
LCALL SEND_D ;送显示 ;显示恒温水温度值子程序
MOV A,#97H ;设置显示位置
LCALL SEND_I
MOV A,#0A1H ;显示温度标记℃
LCALL SEND_D
MOV A,#0E6H
LCALL SEND_D
RET
;==============================================================
; LCD12864 显示实际温度值子程序
;==============================================================
SHOW_S: MOV A,#8DH ;设置显示位置
LCALL SEND_I
MOV A,75H ;加载十位数据
CJNE A,#00H,CONV2
CONV1: MOV A,#" " ;十位数等于0显示空格
LCALL SEND_D ;送显示
JMP CONV3
CONV2: ADD A,#30H ;十位数转换成ASCII码
LCALL SEND_D ;显示数据
CONV3: MOV A,74H ;个位
ADD A,#30H ;个位数转换成ASCII码
CALL SEND_D ;送显示
MOV A,#'.'
CALL SEND_D ;送显示
MOV A,73H ;加载小数位
ADD A,#30H ;小数位转换成ASCII码
CALL SEND_D ;送显示
MOV A,#8FH ;显示温度标记℃
CALL SEND_I
MOV A,#0A1H
CALL SEND_D
MOV A,#0E6H
CALL SEND_D
RET
;==============================================================
;取数子程序
;==============================================================
QUSHU: CLR A
MOVC A,@A+DPTR ;查表取数据
LCALL SEND_D ;送显示
INC DPTR
DJNZ COUNT,QUSHU
RET
;==============================================================
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;==============================================================
SEND_D: LCALL CHK_BUSY ;写数据子程序
SETB RS
CLR RW
MOV P0,A
SETB E
NOP
NOP
CLR E
RET
;--------------------------------------------------------------
MING1: SETB P3.7
LCALL YS
CLR P3.7
RET
YS: MOV R5,#8FH
YS1: MOV R6,#0FFH
YS2: DJNZ R6,$
DJNZ R5,YS1
RET
;=============================================================
; W
;=============================================================
;************************按键程序***********************
ANJIAN: JB K3,ANJIAN_0 ;按键K3确定修改
LCALL YS ;防抖动
JB K3,ANJIAN_0
LCALL MING1
LCALL BBBB
JNB K3,$
ANJI_1: JB K2,JIAN_2 ;按键K2设定值加1
LCALL YS ;防抖动
JB K2,JIAN_2
LCALL MING1
MOV A,SDWDG
INC A
MOV SDWDG,A
CLR C
CJNE A,#63H,JIAN_01
JMP JIAN_02
JIAN_01: JC JIAN_02
MOV SDWDG,#00H
JIAN_02:
LCALL BBBB
JNB K2,$
JIAN_2: JB K1,ANJI_3 ;按键K1设定值减1
LCALL YS ;防抖动
JB K1,ANJI_3
LCALL MING1
MOV A,SDWDG
DEC A
MOV SDWDG,A
CLR C
CJNE A,#63H,JIAN_21
JIAN_21: JC JIAN_22
MOV SDWDG,#63H
JIAN_22: JNB K1,$
LCALL BBBB
ANJI_3: JB K3,ANJI_1 ;按键K3确定退出
LCALL YS ;防抖动
JB K3,ANJI_1
LCALL MING1
LCALL CCCC
JNB K3,$
LJMP ANJI_4
ANJIAN_0:LJMP ANJIAN_9
ANJI_4: JB K2,JIAN_5 ;按键K2设定值加1
LCALL YS ;防抖动
JB K2,JIAN_5
LCALL MING1
MOV A,SDWDD
INC A
MOV SDWDD,A
CLR C
CJNE A,#63H,JIAN_31
JMP JIAN_32
JIAN_31: JC JIAN_32
MOV SDWDD,#00H
JIAN_32: LCALL CCCC
JNB K2,$
JIAN_5: JB K1,ANJI_6 ;按键K1设定值减1
LCALL YS ;防抖动
JB K1,ANJI_6
LCALL MING1
MOV A,SDWDD
DEC A
MOV SDWDD,A
CLR C
CJNE A,#63H,JIAN_41
JIAN_41: JC JIAN_42
MOV SDWDD,#63H
JIAN_42: JNB K1,$
LCALL CCCC
ANJI_6: JB K3,ANJI_4 ;按键K3确定退出
LCALL YS ;防抖动
JB K3,ANJI_4
LCALL MING1
JNB K3,$
ANJIAN_9:LCALL CUN
RET
;==============================================================
;重新对 DS18B20 初始化
;将设定的温度报警值写入 DS18B20
;==============================================================
CUN: LCALL W18b20
MOV A,#0CCH ;跳过ROM匹配
LCALL XIEB20
MOV A,#4EH ;写暂存寄存器
LCALL XIEB20
MOV A,SDWDG
LCALL XIEB20
MOV A,SDWDD
LCALL XIEB20
; MOV A,#7FH ;12位精确度
; LCALL XIEB20
LCALL W18B20 ;把 DS18B20 暂存器里的温度报警值拷贝到EEROM
MOV A,#0CCH ;跳过ROM匹配
LCALL XIEB20
MOV A,#48H ;把暂存器里的温度报警值拷贝到EEROM
LCALL XIEB20
RET
;--------------------------------------------------------------
SHOW_G1: MOV A,#93H ;设置显示位置
LCALL SEND_I
MOV A,SDWDG
MOV B,#0AH
DIV AB
ADD A,#30H ;十位数转换为 ASCII 码
LCALL SEND_D ;送显示
MOV A,B ;个位数
ADD A,#30H ;个位数转换为 ASCII 码
LCALL SEND_D ;送显示 ;显示恒温水温度值子程序
MOV A,#94H ;设置显示位置
LCALL SEND_I
MOV A,#0A1H ;显示温度标记℃
LCALL SEND_D
MOV A,#0E6H
LCALL SEND_D
RET
BBBB:
MOV DPTR,#M_ERRORA ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#80H ;第一行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
MOV DPTR,#M_ERRORB ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#90H ;第二行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
lcall show_g1
LJMP DDDD
CCCC:
MOV DPTR,#M_ERRORC ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#80H ;第一行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
MOV DPTR,#M_ERRORD ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#90H ;第二行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
lcall show_d
DDDD: MOV DPTR,#M_ERROR3 ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#88H ;第三行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
MOV DPTR,#M_ERROR4 ;指针指到显示信息区
MOV COUNT,#10H ;地址计数器设为16
MOV A,#98H ;第四行起始地址
LCALL SEND_I ;调用写指令子程序
LCALL QUSHU
RET
;--------------------------------------------------------------
M_OK1: DB '设定低温度: ' ;显示在第一行
M_OK2: DB '设定高温度: ' ;显示在第二行
M_OK3: DB '实际温度: ' ;显示在第三行
M_OK4: DB ' 毕业设计 ' ;显示在第四行
M_ERRORA: DB ' 设定高温度! ' ;显示在第一行
M_ERRORB: DB ' ' ;显示在第二行
M_ERRORC: DB ' 设定低温度! ' ;显示在第一行
M_ERRORD: DB ' ' ;显示在第二行
M_ERROR1: DB ' 温度探头错误!' ;显示在第一行
M_ERROR2: DB ' 请检查! ' ;显示在第二行
M_ERROR3: DB ' 欢迎使用 ' ;显示在第三行
M_ERROR4: DB ' 毕业设计 ' ;显示在第四行
;*************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -