精确温度显示的温控自动风扇系统正式版 - 图文(5)

2019-08-30 19:19

;-------------------------------------------------- MAIN: MOV SP,#30H

MOV TMOD,#01H ;T0,方式1 MOV TIMER_L,#00H ;50ms定时值 MOV TIMER_H,#4CH

MOV TIMER_COUN,#00H ;中断计数 MOV IE,#82H ;EA=1,ET0=1 LCALL READ_E2 MOV 20H,#00H SETB BEEP SETB C1 setb C2

MOV 7FH,#0AH ;熄灭符

CALL RESET ;复位与检测DS18B20

JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在 JMP START

MAIN1: CALL RESET

JB FLAG1,START

LCALL BEEP_BL ;DS18B20错误,报警 JMP MAIN1 START:

MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE

MOV A,#044H ; 发出温度转换命令 CALL WRITE

CALL RESET

MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE

MOV A,#0BEH ; 发出读温度命令 CALL WRITE

CALL READ ;读温度数据 CALL CONVTEMP CALL DISPBCD CALL DISP1 CALL SCANKEY LCALL TEMP_COMP JMP MAIN1

;===================================================== ;DS18B20 复位与检测子程序

21

;FLAG1=1 OK, FLAG1=0 ERROR

;====================================================== RESET:

SETB DATA_LINE NOP

CLR DATA_LINE

MOV R0,#64H ;主机发出延时600微秒的复位低脉冲 MOV R1,#03H RESET1: DJNZ R0,$ MOV R0,#64H DJNZ R1,RESET1

SETB DATA_LINE ;然后拉高数据线 NOP

MOV R0,#25H

RESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回应 DJNZ R0,RESET2

JMP RESET4 ; 延时

RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在 JMP RESET5

RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在 JMP RESET6 RESET5: MOV R0,#064H

DJNZ R0,$ ; 时序要求延时一段时间 RESET6: SETB DATA_LINE RET

;=========================================================== ;

;=========================================================== WRITE: MOV R2,#8 ;一共8位数据 CLR CY WR1:

CLR DATA_LINE ;开始写入DS18B20总线要处于复位(低)状态

MOV R3,#09

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

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

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

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

22

;============================================================ ;从DS18B20中读出温度低位、高位和动作温度设定值TH、TL ;存入26H、27H、28H、29H

;============================================================

READ: MOV R4,#4 ; 将温度高位和低位从DS18B20中读出 MOV R1,#26H ; 存入26H、27H、28H、29H RE00: MOV R2,#8 RE01: CLR C

SETB DATA_LINE NOP NOP

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

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

MOV C,DATA_LINE ;从DS18B20总线读得一个BIT MOV R3,#23

DJNZ R3,$ ;等待46微妙

RRC A ;把读得的位值环移给A DJNZ R2,RE01 ;读下一个BIT MOV @R1,A INC R1

DJNZ R4,RE00 RET

;-------------------------------------------- ;200ms对闪动标记取反一次

;-------------------------------------------- INT_T0:

PUSH ACC PUSH PSW

MOV TL0,TIMER_L MOV TH0,TIMER_H INC TIMER_COUN MOV A,TIMER_COUN CJNE A,#04H,INT_END MOV TIMER_COUN,#00H CPL FLAG2 INT_END:

POP PSW POP ACC RETI

23

;========================================================== ;重新对 DS18B20 初始化

;将设定的动作温度设定值写入 DS18B20

;========================================================== RE_18B20:

JB FLAG1,RE_18B20A RET RE_18B20A:

CALL RESET

MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE

MOV A,#4EH ;写暂存寄存器 LCALL WRITE

MOV A,TEMP_TH ;TH(动作上限温度) LCALL WRITE

MOV A,TEMP_TL ;TL(动作下限温度) LCALL WRITE

MOV A,#7FH ;12位精确度 LCALL WRITE RET

;==================================================== ;功能键扫描子程序

;==================================================== SCANKEY:

MOV P1,#0F0H JB K1,SCAN_K2 CALL BEEP_BL SCAN_K1: CALL ALERT_TL CALL ALERT_PLAY JB K1,SCAN_K1 CALL BEEP_BL SCAN_K11: CALL ALERT_TH CALL ALERT_PLAY JB K1,SCAN_K11 CALL BEEP_BL SCAN_K2: JB K2,SCAN_K3 CALL BEEP_BL

SCAN_K3: JB K3,SCAN_END CALL BEEP_BL

LCALL RESET_ALERT LCALL RE_18B20 LCALL WRITE_E2 SCAN_END: RET

24

;================================================ ;设置动作温度值TL,TH

;================================================ RESET_ALERT:

CALL ALERT_TL CALL ALERT_PLAY

JNB K3,$ ;K3为位移键 SETB TR0 RESET_TL:

CALL ALERT_PLAY JNB FLAG2,R_TL01

mov 75H,7fh ;送入熄灭符 mov 76H,7fh

CALL ALERT_PLAY JMP R_TL02 R_TL01: CALL ALERT_TL

mov 75h,7Eh ;送设定值 mov 76h,7Dh

CALL ALERT_PLAY ;显示设定值 R_TL02: JNB K1,K011A JNB K2,K011B JNB K3,RESET_TH JMP RESET_TL K011A:

INC TEMP_TL MOV A,TEMP_TL

CJNE A,#120,K012A ;没有到设定上限值,转 MOV TEMP_TL,#0 K012A: CALL TL_DEL JMP RESET_TL K011B:

MOV A,TEMP_TL

CJNE A,#00H,K ;没有到设定下限值,转

MOV TEMP_TL,#120 K: DEC TEMP_TL K012B: CALL TL_DEL JMP RESET_TL

;------------------------------------------------------- RESET_TH:

CALL BEEP_BL JNB K3,$

25


精确温度显示的温控自动风扇系统正式版 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:应用文写作试题及答案

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

马上注册会员

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