⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kechengsheji.txt

📁 1) 定时开2小时
💻 TXT
字号:
附录A:程序清单
FLAG1 BIT F0                      ;DS18B20存在标志位
DQ BIT P1. 7                       ;DS18B20 I/O 口
JDQ BIT P1.6                          ;继电器控制口
FMQ BIT P1.4                         ;蜂鸣器控制口
DY BIT P1.5                           ;电压比较输入口
ORG 0000H
LJMP MAIN_1
ORG 000BH                        ;T0定时器中断入口
LJMP INT_T0

MAIN_1:
MOV SP,#67H
MOV TMOD ,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#82H
SETB TR0
SETB DY
MOV R7,#30H
MOV R0,#20H
M_0:CLR A
MOV @R0,A
INC R0
DJNZ R7,M_0
ACALL INT_79                     ;7279初始化
AJMP MAIN_2
MAIN_2:
LCALL DYBJ                             ;电压比较,大于250?
LCALL bcd1                         ;29h内容转化为两位非压缩BCD,十位40H,个位41H
LCALL BAOJING                  ;温度高于28度报警
ACALL DIR_0                       ;7279显示处理
ACALL DIR                           ;7279显示
LCALL INIT_18B20              ;18B20初始化
LCALL GET_TEMPER          ;读温度子程序
LCALL  CHANGE                      ;18B20温度转换
SJMP MAIN_2
;***************************电压比较*********************************
DYBJ:
MOV C,DY
JC lllp0
CLR JDQ
CLR FMQ
MOV C,DY
lllp0:JNC lllp                          ;电压高于250V,报警断电
SETB JDQ
SETB FMQ
lllp:RET

;******************DS18B20初始化 *********************************
INIT_18B20: SETB DQ
NOP
CLR DQ
MOV R0,#80H
TSR1: DJNZ R0,TSR1          ;延时
SETB DQ
MOV R0,#50
TSR2: JNB DQ ,TSR3
DJNZ R0,TSR2
clr FLAG1
sjmp TSR5
TSR3:setb FLAG1
TSR5: MOV R0,#120
TSR6: DJNZ R0,TSR6
SETB DQ                             ;表明18B20不存在
ret


; ******************DS18B20读温度 *********************************
GET_TEMPER:
SETB DQ
LCALL INIT_18B20
JB FLAG1,TSS2
RET                                     ;若不存在则返回
TSS2: MOV A,#0CCH           ;跳过ROM
LCALL WRITE_18B20
MOV A,#44H                        ;发出温度转换命令
LCALL WRITE_18B20
LCALL INIT_18B20
MOV A,#0CCH                      ;跳过ROM
LCALL WRITE_18B20
MOV A,#0BEH                      ;发出读温度换命令
LCALL WRITE_18B20
LCALL READ2_18B20          ;读两个字节的温度
RET

;****************************写ds18b20汇编程序************
WRITE_18B20:
MOV R2,#8
CLR C
WR1:
CLR DQ
MOV R3,#3                         ;延时约14us
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#20                       ;延时约80us
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET

; ***********读18B20程序,读出两个字节的温度*********************
READ2_18B20:
MOV R4,#2                            ;低位存在29 H,高位存在28H
MOV R1,#29H
RE00: MOV R2,#8
RE01: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#4                           ;延时15us
DJNZ R3,$
MOV C,DQ
MOV R3,#10                        ;延时40us
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET

;***********************************温度处理**********************
CHANGE: 
MOV A,29H
MOV C,28H.0                      ;将28H中的最低位移入C
RRC A
MOV C,28H.1
RRC A
MOV C,28H.2
RRC A
MOV C,28H.3
RRC A
MOV 29H,A
mov a,29h                         ;温度存于29h
lr1:ret

;*******************************温度BCD转换**********************
BCD1:
MOV A,29H                       ;将29h中的16进制数转化为2个BCD码,分别保存在40H,41H单元中
MOV R0,#41H
MOV R7,#2
LP:MOV B,#0AH
DIV AB
XCH A,B
MOV @R0,A
XCH A,B
DEC R0
DJNZ R7,LP
RET

;**********************温度高于28度报警*********************
BAOJING:
MOV A,40H
CJNE A,#3,BJ1
MOV A,41H
CJNE A,#1,BJ2
SJMP BJ3
BJ1:JNC BJ3
SJMP BJ4
BJ2:JNC BJ3
SJMP BJ4
BJ3:                            ;温度高于28度,报警断电
CLR jdq
clr fmq
BJ4:RET

;**************** *********** T0定时中断**************************
INT_T0:
PUSH ACC
PUSH PSW
MOV PSW,#08H
MOV TH0,#3CH
MOV TL0,#0B0H
INC 33H
MOV A,33H
CJNE A,#0AH,L2
L2:JC L6
MOV 33H,#00H
MOV A,32H
ADD A,#01H                        ; 秒加1
DA A
MOV 32H,A
CJNE A,#60H,L3
L3:JC L6
MOV 32H,#00H
MOV A,31H
ADD A,#01H                       ;分加1
DA A
MOV 31H,A
CJNE A,#02H,l4
CLR JDQ
l4:MOV A,31h
CJNE A,#03H,l6
MOV 31H,#00H
SETB JDQ
L6:POP PSW
POP ACC
RETI
;************************7279显示处理***************************
DIR_0:
MOV R0,#42H
MOV A,30H
ACALL A_R0
MOV A,31H
ACALL A_R0
MOV A,32H
ACALL A_R0
MOV A,43H
ADD A,#0AH
MOV 43H,A
MOV  A,45H
ADD A,#0AH
MOV 45H,A
D_1:RET
A_R0:
MOV R2,A
SWAP A
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R2
ANL A,#0FH
MOV @R0,A
INC R0
RET
;**************************7279显示*******************************
DIR:
MOV R5,#08H
MOV R0,#40H
MOV R1,#97H
LP1:CLR P1.0
MOV R6,#0CH
DJNZ R6,$
MOV A,R1
ACALL STFS
MOV R6,#04H
DJNZ R6,$
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
ACALL STFS
MOV R6,#02H
DJNZ R6,$
SETB P1.0
INC R0
DEC R1
DJNZ R5,LP1
RET
TAB: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BH
DB 0FEH,0B0H,0EDH,0F9H,0B3H,0DBH,0DFH,0F0H,0FFH,0FBH

;********************************7279发送***************************
STFS:
MOV R7,#08H
Q1:RLC A
MOV P1.2,C
SETB P1.1
MOV R6,#02H
DJNZ R6,$
CLR P1.1
MOV R6,#02H
DJNZ R6,$
DJNZ R7,Q1
RET
;****************************7279初始化*****************************
INT_79:
CLR P1.0
MOV R6,#0CH
DJNZ R6,$
MOV A,#0A4H
ACALL STFS 
MOV R6,#02H
DJNZ R6,$
SETB P1.0
RET
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -