标题:
DS18B20温度传感器多点测温Proteus仿真+单片机汇编语言程序
[打印本页]
作者:
fanli
时间:
2019-7-2 15:36
标题:
DS18B20温度传感器多点测温Proteus仿真+单片机汇编语言程序
温度传感器是ds1621的
多点测温是ds18B20的
希望对大家有所帮助
另外,求ds1621的多点测温
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(42.78 KB, 下载次数: 57)
下载附件
2019-7-5 04:37 上传
单片机汇编语言源程序如下:
DQ BIT P1.0
FLAG BIT 00H
FLAG_NEG BIT 01H
TEMP_L EQU 30H
TEMP_H EQU 31H
TEMP_INT EQU 32H
TEMP_DP EQU 33H
TEMP_100 EQU 34H
TEMP_10 EQU 35H
TEMP_1 EQU 36H
WR_LCD BIT P3.6
RD_LCD BIT P3.7
ORG 0000H
LJMP START
ORG 1000H
START: MOV SP,#60H
LCALL INIT
MAIN: LCALL READ_TEMP
LCALL PROC_TEMP
LJMP MAIN
;*********************************
READ_TEMP:
SETB DQ
LCALL INI_DQ
JB FLAG,RE_0
RET
RE_0: MOV A,#0CCH
LCALL WRITE_DQ
MOV A,#44H
LCALL WRITE_DQ
LCALL DISPLAY ;调用lcd显示程序,并起延时作用
LCALL INI_DQ
MOV A,#0CCH
LCALL WRITE_DQ
MOV A,#0BEH
LCALL WRITE_DQ
LCALL READ_DQ
RET
;************DS18B20初始化程序***************
INI_DQ:
SETB DQ
NOP
NOP
CLR DQ
MOV R1,#3
INI_0: MOV R0,#80
DJNZ R0,$
DJNZ R1,INI_0
SETB DQ
NOP
NOP
NOP
MOV R7, #25
INI_1: JNB DQ,INI_2
DJNZ R7,INI_1 ;延时
LJMP INI_3
INI_2: SETB FLAG ;标志位
LJMP INI_4
INI_3: CLR FLAG
LJMP INI_5
INI_4: MOV R0,#80
DJNZ R0,[ DISCUZ_CODE_1 ]nbsp; ;时序要求延时一段时间
INI_5: SETB DQ
RET
;**************DS18B20写命令******************
WRITE_DQ:
MOV R6, #8
CLR C
Tloop: CLR DQ
MOV R2,#6
DJNZ R2,$
RRC A ;最低位移到C中
MOV DQ,C
MOV R2,#23
DJNZ R2,$
SETB DQ
NOP
DJNZ R6,Tloop
SETB DQ
RET
;**************读DS18B20数据函数*************
READ_DQ:
MOV R5, #2
MOV R0, #30H
READ_0: MOV R6, #8
READ_1: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
NOP
SETB DQ
MOV R2,#9
DJNZ R2,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R6, READ_1
MOV @R0,A
INC R0
DJNZ R5,READ_0
SETB DQ
RET
;***************温度数据处理程序*****************
PROC_TEMP:
CLR FLAG_NEG
MOV A,TEMP_L
SWAP A
ORL A,#0F0H
MOV TEMP_INT,A
MOV A,TEMP_H
SWAP A
ORL A,#0FH
ANL TEMP_INT,A
MOV A,TEMP_H
JB ACC.7,NEGTIVE
MOV A,TEMP_L
ANL A,#0FH
MOV DPTR,#TAB3
MOVC A,@A+DPTR
MOV TEMP_DP,A
LJMP PRO_0
NEGTIVE: ;温度值为负时处理程序,按实际情况,处理过程比较复杂
SETB FLAG_NEG
MOV A,TEMP_L
CPL A
ANL A,#0FH
MOV R1,A
CJNE R1,#0FH,PRO_1
PUSH ACC
MOV A,TEMP_INT
SUBB A,#1
MOV TEMP_INT,A
POP ACC
MOV TEMP_DP,#00H
LJMP PRO_2
PRO_1: ADD A,#1
MOV DPTR,#TAB3
MOVC A,@A+DPTR
MOV TEMP_DP,A
PRO_2: MOV A,TEMP_INT
CPL A
MOV TEMP_INT,A
PRO_0: MOV A,TEMP_INT
MOV B,#100
DIV AB
MOV TEMP_100,A
MOV A,B
MOV B,#10
DIV AB
MOV TEMP_10,A
MOV TEMP_1,B
RET
;**************LED显示***********************
;**************LCD初始化**********************
INIT: MOV DPTR,#8000H
SETB WR_LCD
SETB RD_LCD
MOV A,#01H
ACALL F_BUSY
MOVX @DPTR,A
ACALL F_BUSY
MOV A,#38H
MOVX @DPTR,A
ACALL F_BUSY
MOV A,0EH
MOVX @DPTR,A
ACALL F_BUSY
MOV A,#0CH
MOVX @DPTR,A
RET
;***********写LCD函数*************************
DISPLAY: MOV DPTR,#8000H ;写第一行数据
MOV A,#80H
ACALL F_BUSY
MOVX @DPTR,A
MOV DPTR,#8100H
MOV R1,#0
D1: LCALL TRANS1;
ACALL F_BUSY
MOVX @DPTR,A
INC R1
CJNE R1,#16,D1
MOV DPTR,#8000H ;写第二行数据
MOV A,#0C0H
ACALL F_BUSY
MOVX @DPTR,A
MOV DPTR,#8100H
LCALL WRITE_NEGTIVE
ACALL F_BUSY
MOVX @DPTR,A
MOV A,TEMP_100
LCALL WRITE_INT
ACALL F_BUSY
MOVX @DPTR,A
MOV A,TEMP_10
LCALL WRITE_INT
ACALL F_BUSY
MOVX @DPTR,A
MOV A,TEMP_1
LCALL WRITE_INT
ACALL F_BUSY
MOVX @DPTR,A
MOV A,#2EH
ACALL F_BUSY
MOVX @DPTR,A
MOV A,TEMP_DP
LCALL WRITE_INT
ACALL F_BUSY
MOVX @DPTR,A
MOV A,#20H
ACALL F_BUSY
MOVX @DPTR,A
MOV A,#0DFH
ACALL F_BUSY
MOVX @DPTR,A
MOV A,#43H
ACALL F_BUSY
MOVX @DPTR,A
RET
;**************显示第一行******************
TRANS1: PUSH DPH
PUSH DPL
MOV A,R1
MOV DPTR,#TAB1;
MOVC A,@A+DPTR
POP DPL
POP DPH
RET
;**************显示第二行******************
WRITE_NEGTIVE:
JB FLAG_NEG,WN
MOV A,#20H
RET
WN: MOV A,#2DH
RET
WRITE_INT:
PUSH DPH
PUSH DPL
MOV DPTR,#TAB2
MOVC A,@A+DPTR
POP DPL
POP DPH
RET
;***********判断LCD是否忙******************
F_BUSY: PUSH DPH
PUSH DPL
PUSH PSW
PUSH Acc
LOOP: MOV DPTR,#8200H
MOVX A,@DPTR
JB Acc.7,LOOP
POP Acc
POP PSW
POP DPL
POP DPH
RET
DELAY_10MS:
MOV R3,#20
DEL_1: MOV R4,#248
DJNZ R4,$
DJNZ R3,DEL_1
RET
TAB1: DB 20H,20H,20H,'T','e','m','p','r','e','t','u','r','e',20H,20H,20H
;**************LCD数字字模
TAB2: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
;**********小数位转换********************
TAB3: DB 00H,01H,01H,02H
DB 02H,03H,04H,04H
DB 05H,06H,06H,07H
DB 07H,08H,09H,09H
;************无小数点位的段码******************
TAB4: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;*****************有小数点**********************
TAB5: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
END
复制代码
所有资料51hei提供下载:
rogerjordan-5028051-多点测温.rar
(50.47 KB, 下载次数: 41)
2019-7-2 15:34 上传
点击文件名下载附件
下载积分: 黑币 -5
hs07zdhgj-3012459-24 DS1621温度传感器实验.rar
(40.63 KB, 下载次数: 35)
2019-7-2 15:34 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1