DS18B20温度控制数码管显示(汇编非常详细).doc
《DS18B20温度控制数码管显示(汇编非常详细).doc》由会员分享,可在线阅读,更多相关《DS18B20温度控制数码管显示(汇编非常详细).doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、!-; DS18B20温度控制数码管显示(汇编非常详细) *;* 1、P1.6= 进入设定温度报警值 TL 状态: *;* L20 *;* 2、P1.6 进入设定温度报警值 TH 状态: *;* H28 *;* 3、P1.6 返回 *;* 4、设定过程: P1.4 加键 (UP), P1.5 减键 (DOWN),可快速调。 *;* * TIMER_L DATA 23H TIMER_H DATA 24H TIMER_COUN DATA 25H TEMPL DATA 26H TEMPH DATA 27H TEMP_TH DATA 28H TEMP_TL DATA 29H TEMPHC DATA 2
2、AH TEMPLC DATA 2BH TEMP_ZH DATA 2CH BEEP EQU P3.7 DATA_LINE EQU P3.3 RELAY EQU P1.3 FLAG1 EQU 20H.0 FLAG2 EQU 20H.1;- K1 EQU P1.4 K2 EQU P1.5 K3 EQU P1.6 K4 EQU P1.7;= ORG 0000H JMP MAIN ORG 000BH AJMP INT_T0;-MAIN: MOV SP,#30H MOV TMOD,#01H ;T0,方式1 MOV TIMER_L,#00H ;50ms定时值 MOV TIMER_H,#4CH MOV TIM
3、ER_COUN,#00H ;中断计数 MOV IE,#82H ;EA=1,ET0=1 LCALL READ_E2 ;LCALL RE_18B20 MOV 20H,#00H SETB BEEP SETB RELAY MOV 7FH,#0AH ;熄灭符 CALL RESET ;复位与检测DS18B20 JNB FLAG1,MAIN1 ;FLAG1=0,DS18B20不存在 JMP STARTMAIN1: CALL RESET JB FLAG1,START LCALL BEEP_BL ;DS18B20错误,报警 JMP MAIN1START: MOV A,#0CCH ; 跳过ROM匹配 CALL W
4、RITE 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 复位与检测子程序;FLAG1=1 OK, FLAG1=0 ERROR;=RESET: SETB DATA_LINE NOP CLR DATA_LINE MOV
5、R0,#64H ;主机发出延时600微秒的复位低脉冲 MOV R1,#03HRESET1: DJNZ R0,$ MOV R0,#64H DJNZ R1,RESET1 SETB DATA_LINE ;然后拉高数据线 NOP MOV R0,#25HRESET2: JNB DATA_LINE,RESET3 ;等待DS18B20回应 DJNZ R0,RESET2 JMP RESET4 ; 延时RESET3: SETB FLAG1 ; 置标志位,表示DS1820存在 JMP RESET5RESET4: CLR FLAG1 ; 清标志位,表示DS1820不存在 JMP RESET6RESET5: MOV
6、R0,#064H DJNZ R0,$ ; 时序要求延时一段时间RESET6: SETB DATA_LINE RET;=;=WRITE: MOV R2,#8 ;一共8位数据 CLR CYWR1: 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 ;写入下一个B
7、IT SETB DATA_LINE RET;=;从DS18B20中读出温度低位、高位和报警值TH、TL;存入26H、27H、28H、29H;=READ: MOV R4,#4 ; 将温度高位和低位从DS18B20中读出 MOV R1,#26H ; 存入26H、27H、28H、29HRE00: MOV R2,#8RE01: 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 ;从DS1
8、8B20总线读得一个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 FLAG2INT_END: POP PSW POP ACC R
9、ETI;=;重新对 DS18B20 初始化;将设定的温度报警值写入 DS18B20;=RE_18B20: JB FLAG1,RE_18B20A RETRE_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,#0F0
10、H JB K1,SCAN_K2 CALL BEEP_BLSCAN_K1: CALL ALERT_TL CALL ALERT_PLAY JB K1,SCAN_K1 CALL BEEP_BLSCAN_K11: CALL ALERT_TH CALL ALERT_PLAY JB K1,SCAN_K11 CALL BEEP_BLSCAN_K2: JB K2,SCAN_K3 CALL BEEP_BLSCAN_K3: JB K3,SCAN_K4 CALL BEEP_BL LCALL RESET_ALERT LCALL RE_18B20 LCALL WRITE_E2SCAN_K4: JB K4,SCAN_EN
11、D CALL BEEP_BLSCAN_END: RET;=;设置温度报警值;=RESET_ALERT: CALL ALERT_TL CALL ALERT_PLAY JNB K3,$ ;K3为位移键 SETB TR0RESET_TL: CALL ALERT_PLAY JNB FLAG2,R_TL01 mov 75H,7fh ;送入熄灭符 mov 76H,7fh CALL ALERT_PLAY JMP R_TL02R_TL01: CALL ALERT_TL mov 75h,7Eh ;送设定值 mov 76h,7Dh CALL ALERT_PLAY ;显示设定值R_TL02: JNB K1,K011
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ds18b20 温度 控制 节制 数码管 显示 汇编 非常 无比 详细
限制150内