附录
附录1
电源线插接说明:
所提供的电池盒,红线为正,黑线为负。板子所留出来的电源插口用VCC(表示电源正)和GND(表示电源负)标明。若没有标明,我们会刻有记号,刻有+号处为电源正。
24
附录2
主板电路图
- 25 -
附录3
程序代码
ORG 0000H TEMPER_L EQU 29H TEMPER_H EQU 28H
FLAG1 EQU 38H;是否检测到DS18B20标志位 A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H ;数码管十位数存放内存位置 XS EQU 30H MOV A,#00H MOV P2,A
MAIN:LCALL GET_TEMPER;调用读温度子程序 MOV A,29H MOV B,A CLR C RLC A CLR C RLC A CLR C RLC A CLR C RLC A SWAP A MOV 31H,A MOV A,B
MOV C,40H;将28H中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A
26
MOV C,43H RRC A MOV 29H,A
LCALL DISPLAY;调用数码管显示子程序 AJMP MAIN; 这是DS18B20复位初始化子程序 INIT_1820:SETB P1.0
NOP
CLR P1.0;主机发出延时537微秒的复位低脉冲 MOV R1,#3
TSR1:MOV R0,#107
DJNZ R0,$ DJNZ R1,TSR1
SETB P1.0;然后拉高数据线 NOP NOP NOP
MOV R0,#25H
TSR2:JNB P1.0,TSR3;等待DS18B20回应
DJNZ R0,TSR2 LJMP TSR4 ; 延时
TSR3:SETB FLAG1 ; 置标志位,表示DS1820存在
LJMP TSR5
TSR4:CLR FLAG1 ; 清标志位,表示DS1820不存在
LJMP TSR7 TSR5:MOV R0,#117
TSR6:DJNZ R0,TSR6 ; 时序要求延时一段时间 TSR7:SETB P1.0
RET; 读出转换后的温度值 GET_TEMPER:SETB P1.0
LCALL INIT_1820;先复位DS18B20 JB FLAG1,TSS2
RET ; 判断DS1820是否存在?若DS18B20不存在则返回
27
TSS2:MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ; 发出温度转换命令
LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结
束,12位的话750微秒
LCALL DISPLAY
LCALL INIT_1820;准备读温度前先复位 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820
MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820
LCALL READ_18200; 将读出的温度数据保存到35H/36H RET;写DS18B20的子程序(有具体的时序要求) WRITE_1820:MOV R2,#8;一共8位数据
CLR C
WR1:CLR P1.0
MOV R3,#6 DJNZ R3,$ RRC A MOV P1.0,C MOV R3,#23 DJNZ R3,$ SETB P1.0 NOP
DJNZ R2,WR1
RET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 READ_18200:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:MOV R2,#8;数据一共有8位 RE01:CLR C
SETB P1.0 NOP
28
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的温度控制系统 2(6)在线全文阅读。
相关推荐: