📄 temperaturecontrol.asm
字号:
mov code,#0
lcall writeleft2
LCALL DELAY1
mov column4,#0 ;度
mov pagef4,#2
mov code,#1
lcall writeright2
LCALL DELAY1
RET
DISPLAY3:
mov column2,#16
mov pagef2,#2
mov code,#10
lcall writeright
;显示预设的温度
mov column2,#24
mov pagef2,#2
mov code,48H
lcall writeright
mov column2,#32
mov pagef2,#2
mov code,55H
lcall writeright
mov column2,#40
mov pagef2,#2 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#2
mov code,56H
lcall writeright
RET
DISPLAY4: ;显示"实际温度"
mov column3,#16 ;实
mov pagef3,#4
mov code,#10
lcall writeleft2
LCALL DELAY1
mov column3,#32 ;际
mov pagef3,#4
mov code,#11
lcall writeleft2
LCALL DELAY1
mov column3,#48 ;温
mov pagef3,#4
mov code,#0
lcall writeleft2
LCALL DELAY1
mov column3,#0 ;度
mov pagef3,#4
mov code,#1
lcall writeright2
LCALL DELAY1
RET
DISPLAY5: ;显示实际的温度
MOV A,29H
MOV C,40H ;28的位地址
RRC A
MOV C,41H
RRC A
MOV C,42H
RRC A
MOV C,43H
RRC A
MOV 51H,A
ANL 29H,#0FH
MOV A,29H
MOV B,#6
MUL AB
MOV 50H,A
mov a,51H
mov b,#10
div ab
mov 43H,a
mov 42H,b
MOV A,50H
MOV B,#10
DIV AB
MOV 41H,A
MOV 40H,B
mov column2,#16
mov pagef2,#4
mov code,#10
lcall writeright
mov column2,#24 ;实际温度
mov pagef2,#4
mov code,43h
lcall writeright
mov column2,#32
mov pagef2,#4
mov code,42h
lcall writeright
mov column2,#40
mov pagef2,#4 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#4
mov code,41h
lcall writeright
RET
DISPLAY6:
mov column3,#24
mov pagef3,#6 ;状
mov code,#13
lcall writeleft2
LCALL DELAY1
mov column3,#40
mov pagef3,#6 ;态
mov code,#14
lcall writeleft2
LCALL DELAY1
mov column,#56
mov pagef,#6 ; :
mov code,#10
lcall writeleft
LCALL DELAY1
mov column4,#0
mov pagef4,#6 ;加
mov code,#15
lcall writeright2
LCALL DELAY1
mov column4,#16
mov pagef4,#6 ;热
mov code,#16
lcall writeright2
LCALL DELAY1
mov column4,#32
mov pagef4,#6 ; !
mov code,#19
lcall writeright2
LCALL DELAY1
RET
DISPLAY7:
mov column3,#24
mov pagef3,#6 ;状
mov code,#13
lcall writeleft2
LCALL DELAY1
mov column3,#40
mov pagef3,#6 ;态
mov code,#14
lcall writeleft2
LCALL DELAY1
mov column,#56
mov pagef,#6 ; :
mov code,#10
lcall writeleft
LCALL DELAY1
mov column4,#0
mov pagef4,#6 ;降
mov code,#17
lcall writeright2
LCALL DELAY1
mov column4,#16
mov pagef4,#6 ;温
mov code,#0
lcall writeright2
LCALL DELAY1
mov column4,#32
mov pagef4,#6 ;!
mov code,#19
lcall writeright2
LCALL DELAY1
RET
DISPLAY8:
mov column2,#24
mov pagef2,#2
mov code,48H
lcall writeright
LCALL DELAY
LCALL DELAY
mov column2,#24
mov pagef2,#2
mov code,#12
lcall writeright
RET
DISPLAY9:
mov column2,#32
mov pagef2,#2
mov code,55H
lcall writeright
LCALL DELAY
LCALL DELAY
mov column2,#32
mov pagef2,#2
mov code,#12
lcall writeright
RET
DISPLAY10:
mov column2,#48
mov pagef2,#2
mov code,56H
lcall writeright
LCALL DELAY
LCALL DELAY
mov column2,#48
mov pagef2,#2
mov code,#12
lcall writeright
RET
DISPLAY11:
mov column3,#24
mov pagef3,#6 ;状
mov code,#13
lcall writeleft2
LCALL DELAY1
mov column3,#40
mov pagef3,#6 ;态
mov code,#14
lcall writeleft2
LCALL DELAY1
mov column,#56
mov pagef,#6 ; :
mov code,#10
lcall writeleft
LCALL DELAY1
mov column4,#0
mov pagef4,#6 ;降
mov code,#20
lcall writeright2
LCALL DELAY1
mov column4,#16
mov pagef4,#6 ;温
mov code,#21
lcall writeright2
LCALL DELAY1
mov column4,#32
mov pagef4,#6 ;!
mov code,#19
lcall writeright2
LCALL DELAY1
RET
DISPLAY:
mov column2,#24
mov pagef2,#2
mov code,48H
lcall writeright
mov column2,#32
mov pagef2,#2
mov code,55H
lcall writeright
mov column2,#40
mov pagef2,#2 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#2
mov code,56H
lcall writeright
MOV A,29H
MOV C,40H ;28的位地址
RRC A
MOV C,41H
RRC A
MOV C,42H
RRC A
MOV C,43H
RRC A
MOV 51H,A
ANL 29H,#0FH
MOV A,29H
MOV B,#6
MUL AB
MOV 50H,A
mov a,51H
mov b,#10
div ab
mov 43H,a
mov 42H,b
MOV A,50H
MOV B,#10
DIV AB
MOV 41H,A
MOV 40H,B
mov column2,#24 ;实际温度
mov pagef2,#4
mov code,43h
lcall writeright
mov column2,#32
mov pagef2,#4
mov code,42h
lcall writeright
mov column2,#40
mov pagef2,#4 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#4
mov code,41h
lcall writeright
RET
;***********************DS18B20复位初始化子程序***********
INIT_1820:
SETB P3.1
NOP
CLR P3.1;主机发出延时537微秒的复位低脉冲
MOV R1,#3
TSR1: MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB P3.1 ;然后拉高数据线
NOP
NOP
NOP
MOV R0,#25H
TSR2: JNB P3.1,TSR3 ;等待DS18B20回应
DJNZ R0,TSR2
LJMP TSR4 ; 延时
TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在
LJMP TSR5
TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在
LJMP TSR7
TSR5: MOV R0,#117
TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间
TSR7: SETB P3.1
RET ; 读出转换后的温度值
;***********************读温度子程序*****************
GET_TEMPER:
SETB P3.1
LCALL INIT_1820;先复位DS18B20
JB FLAG1,TSS2
RET ; 判断DS1820是否存在?若DS18B20不存在则返回
TSS2:
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ; 发出温度转换命令
LCALL WRITE_1820;通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
LCALL DISPLAY
LCALL INIT_1820;准备读温度前先复位
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ; 发出读温度命令
LCALL WRITE_1820
LCALL READ_18200
RET
;*************************写命令子程序**********
WRITE_1820:
MOV R2,#8
CLR C
WR1: CLR P3.1
MOV R3,#6
DJNZ R3,$
RRC A
MOV P3.1,C
MOV R3,#23
DJNZ R3,$
SETB P3.1
NOP
DJNZ R2,WR1
SETB P3.1
RET
;***********************读命令子程序***********
READ_18200:
MOV R4,#2
MOV R1,#29H
RE00: MOV R2,#8
RE01: CLR C
SETB P3.1
NOP
NOP
CLR P3.1
NOP
NOP
NOP
SETB P3.1
MOV R3,#9
RE10: DJNZ R3,RE10
MOV C,P3.1
MOV R3,#23
RE20: DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
;**********************左半屏写入数字子程序**************8
writeleft:
mov dptr,#table1
push column
mov cpage,#2
mov ccolumn,#0
mov a,pagef
anl a,#07h
orl a,#0b8h ;页地址,第0页
mov com,a
lcall prm0
mov a,column
anl a,#3fh
orl a,#40h ;列地址,第0列
mov com,a
lcall prm0
mov a,code
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp1:
mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn
mov a,ccolumn
inc dptr
cjne a,#8,lp1
dec cpage
inc pagef
mov a,cpage
jz over1
mov a,pagef
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column
mov a,column
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn,#0
ljmp lp1
over1:
ret
;************右半屏写入数字子程序*******************
writeright:
mov dptr,#table1
push column2
mov cpage2,#2
mov ccolumn2,#0
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -