单线数字温度传感器DS18B20汇编程序.doc
文本预览下载声明
QQ : 1962269986
功能说明:
使用单线数字温度传感器DS18B20,把温度信号直接转换成数字信号输入单片机,经单片机处理后,将实时温度显示在两个7段LED数码管上。
01 A_BIT EQU 20H ;存放个位数变量
02 B_BIT EQU 21H ;存放十位数变量
03 FLAG EQU 38H ;DS18B20是否存在标志
04 DQ EQU P2.5 ;DQ引脚由P2.5控制
05 MAIN: ;
06 ACALL RE_TEMP ;调用读取温度子程序
07 ACALL TURN ;数据转化子程序
08 ACALL DISPLAY ;显示子程序
09 JMP MAIN ;循环 主程序
10
11 RE_TEMP: ;初始化及读取温度值
12 SETB DQ
13 ACALL RESET_1820 ;调用复位子程序
14 JB FLAG, ST ;判断DS1820是否存在?
15 RET
16 ST: ;DS18B20存在
17 MOV A,#0CCH ;跳过ROM匹配
18 ACALL WRITE_1820 ;调用写入数据子程序
19 MOV A,#44H ;发出温度转换命令
20 ACALL WRITE_1820 ;调用写入数据子程序
21 ACALL RESET_1820 ;准备读温度前先复位
22 MOV A,#0CCH ;跳过ROM匹配
23 ACALL WRITE_1820 ;调用写入数据子程序
24 MOV A,#0BEH ;发出读温度命令
25 ACALL WRITE_1820 ;调用写入数据子程序
26 ACALL READ_1820 ;调用读取数据子程序 设置传感器
27 RET 读取温度数据
28
29 RESET_1820: ;复位(有具体的时序要求)
30 SETB DQ
31 NOP
32 CLR DQ
33 ;――――――――――――
34 ;主机发出复位低脉冲
35 MOV R1,#3
36 DLY: MOV R0,#107
37 DJNZ R0,$
38 DJNZ R1,DLY
39 ;――――――――――――
40 ;然后拉高数据线
41 SETB DQ
42 NOP
43 NOP
44 NOP
45 ;――――――――――――
46 ;等待DS18B20回应
47 MOV R0,#25H
48 T2: JNB DQ ,T3
49 DJNZ R0, T2
50 JMP T4
51 ;――――――――――――
52 ;标志位FLAG=1,表示DS1820存在
53 T3: SETB FLAG
54 JMP T5
55 ;――――――――――――
56;标志位FLAG=0,表示DS1820不存在
57 T4: CLR FLAG
58 JMP T7
59 ;――――――――――――
60 ;时序要求延时一段时间
61 T5: MOV R0,#117
62 T6: DJNZ R0,T6
63 ;――――――――――――
64 T7: SET
显示全部