数字温度传感器测温显示系统说明书 下载本文

北京交通大学

机械与电子控制工程学院

附录

源程序

KEY1 BIT P1.2 KEY2 BIT P1.3 KEY3 BIT P1.4 KEY4 BIT P1.5 MINH DATA 6CH MINL DATA 6DH MAXH DATA 6EH MAXL DATA 6FH DQ BIT P1.0 ORG 0000H AJMP MAIN ORG 0030H

MAIN: MOV SP,#60H ;

MOV DPTR,#0100H ;赋命令/状态寄存器地址

MOV A,#00001110B ;设置A、B口为基本输入输出口,并B口为输出口,C口为输出口

MOVX @DPTR,A

MOV 6CH,#09H ;给最低温度限赋初值 MOV 6DH,#05H

MOV 6EH,#09H ;给最高限温度赋初值 MOV 6FH,#09H MOV A,6CH MOV B,#10 MUL AB ADD A,6DH MOV 30H,A

MOV A,6EH MOV B,#10 MUL AB ADD A,6FH MOV 31H,A UP: MOV A,31H

21 北京交通大学

机械与电子控制工程学院

CJNE A,30H,GONOW ;比较最高限温度与最低限温度值 UP2: ACALL DISPLAY2 ;两温度相等调用显示错误程序 ACALL KEY

ACALL CHECK SJMP UP ;不断进行比较

GONOW: JC UP2 ;判断进位标志是否为1,如果为1,

即最高限温度小于最低限温度,也调用显示错误程序

CLR P1.6 ;位清零,灯灭 CLR P1.7 ; START: LCALL READT ;调用温度值子程序

LCALL PRODATA ;调用数据处理子程序,组合温度数据 MOV 24H,#20H ;显示温度值并延时 LOOP: ACALL KEY

ACALL DISPLAY ;调用显示子程序

ACALL CHECK ;调用检测温度是否超过范围程序 DJNZ 24H,LOOP AJMP START READT: PUSH ACC PUSH PSW SETB DQ LCALL INI

;DS18B20初始化

MOV A,#0CCH ;跳过ROM序列码匹配 LCALL WR18B20 MOV A,#44H LCALL WR18B20 LCALL INI

;DS18B20初始化

MOV A,#0CCH ;跳过ROM序列码匹配 LCALL WR18B20

MOV A,#0BEH ;发送读温度命令 LCALL WR18B20

LCALL RD18B20 ;读俩字节温度值 POP PSW POP ACC RET

22 ;转至start循环

;发送温度转换命令

北京交通大学

机械与电子控制工程学院

;温度转换子程序

PRODATA:PUSH ACC PUSH PSW MOV A,20H ANL A,#0F0H MOV R5,A MOV A,21H ANL A,#0FH ORL A,R5 SWAP A MOV 22H,A

MOV A,22H ;温度值存入22H单元

MOV B,#0AH ;将22H单元的温度值转换为BCD码 DIV AB MOV 70H,A MOV 71H,B POP PSW POP ACC RET

INI: SETB DQ NOP CLR DQ MOV R0,#0FBH DJNZ R0,$ SETB DQ MOV R0,#24H DJNZ R0,$

JNB DQ,TSR1 ;DQ是否为一,有无应答信号 LJMP TSR2 TSR1: SETB F0 LJMP TSR3 TSR2: CLR F0 LJMP TSR4 TSR3: MOV R0,#96H DJNZ R0,$

23 ;取两字节温度值组合存入22H单元

;取第一字节的高4位

;取第二字节的低4位

;十位数存入70H单元 ;个位数存入71H单元

;DS18B20初始化子程序

;置标志位,表示DS18B20存在 ;清标志位,表示DS18B20不存在

北京交通大学

机械与电子控制工程学院

TSR4: SETB DQ RET

WR18B20: MOV R2,#08H ;编写18B20子程序 CLR C WR1: CLR DQ MOV R3,#06H DJNZ R3,$ RRC A MOV DQ,C MOV R3,#10H DJNZ R3,$ SETB DQ NOP

DJNZ R2,WR1 SETB DQ RET

RD18B20: MOV R4,#02H 和21H单元

RD1: MOV R2,#08H RD2: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#07H DJNZ R3,$ MOV C,DQ MOV R3,#16H DJNZ R3,$ RRC A

24 ;延时13us

;延时43us

;读18B20子程序

MOV R1,#20H ;从18B20读两字节数据,存入20H

;延时15us

;延时45us