右图为DS18B20 引脚图DS18S20采用3脚PR35封装(或8脚SOIC封装),DQ为数据输入/输出脚,VDD为电源电压。
五 汇编程序
TEMP_ZH EQU 24H 元
TEMPL EQU 25H TEMPH EQU 26H TEMP_TH EQU 27H 元
TEMP_TL EQU 28H TEMPHC EQU 29H 11
;实测温度值存放单 ;高温报警值存放单;低温报警值存放单元 ;正、负温度值标记
TEMPLC EQU 2AH TEMPFC EQU 2BH K1 EQU P1.4 ;查询按键 K2 EQU P1.5 ;设置/调整键 K3 EQU P1.6 ;调整键 号
志
志
MAIN: K4 EQU P1.7 ;确定键 BEEP
EQU P3.7 ;蜂鸣器
RELAY EQU P1.3 ;指示灯
LCD_X EQU 2FH ;LCD 字符显示位置 LCD_RS EQU P2.0 ;LCD 寄存器选择信 LCD_RW EQU P2.1 ;LCD 读写信号 LCD_EN EQU P2.2 ;LCD 允许信号 FLAG1 EQU 20H.0 ;DS18B20是否存在标 KEY_UD EQU 20H.1 ;设定按键的增、减标 DQ
EQU P3.3 ;DS18B20数据信号
ORG 0000H LJMP MAIN ORG 0030H
MOV SP,#60H
12
MOV A,#00H
MOV R0,#20H 零
MOV R1,#10H CLEAR: MOV @R0,A INC R0
DJNZ R1,CLEAR LCALL SET_LCD LCALL RE_18B20 START: LCALL RST 程序
JNB FLAG1,START1 LCALL MENU_OK 示正确信息子程序
MOV TEMP_TH,#055H MOV TEMP_TL,#019H LCALL RE_18B20A
;设置TH初值85度 ;设置TL初值25度
;DS1820不存在 ;调用18B20复位子;将20H~2FH 单元清
;DS1820存在,调用显
;调用暂存器操作子程序
;写入DS18B20
LCALL WRITE_E2
LCALL TEMP_BJ ;显示温度标记 JMP START2
START1: LCALL MENU_ERROR 信息子程序
13
;调用显示出错
LCALL TEMP_BJ ;显示温度标记 SJMP $ START2: LCALL RST
;调用DS18B20复位子程序
;DS18B20不存在 ;跳过ROM匹配命
JNB FLAG1,START1 MOV A,#0CCH 令
LCALL WRITE MOV A,#44H LCALL WRITE LCALL RST
MOV A,#0CCH LCALL WRITE
MOV A,#0BEH LCALL WRITE LCALL READ 取操作子程序
LCALL CONVTEMP 处理子程序
LCALL DISPBCD 程序
LCALL CONV 序
14
;温度转换命令
;跳过ROM匹配
;读温度命令
;调用DS18B20数据读
;调用温度数据BCD 码
;调用温度数据显示子
;调用LCD显示处理子程
LCALL TEMP_COMP 设定温度值比较子程序
;调用实测温度值与
LCALL PROC_KEY ;调用键扫描子程序 SJMP START2
;循环 ;*************************** 键
*****************************
PROC_KEY:JB K1,PROC_K1 LCALL BEEP_BL JNB K1,$
MOV DPTR,#M_ALAX1 MOV A,#1
LCALL LCD_PRINT LCALL LOOK_ALARM JB K3,$
LCALL BEEP_BL JMP PROC_K2 PROC_K1: JB K2,PROC_END LCALL BEEP_BL JNB K2,$
MOV DPTR,#RST_A1 MOV A,#1
LCALL LCD_PRINT
15
扫
描
子
程
序