您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页时序

时序

来源:宝玛科技网


功能说明:

使用单线数字温度传感器DS18B20,把温度信号直接转换成数字信号输入单片机,经单片机处理后,将实时温度显示在两个7段LED数码管上。

程序:DA1405.ASM

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 ;―――――――――――― T7: SETB DQ

65 RET 复位子程序 66

67 WRITE_1820: ;写入DS18B20(有具体的时序要求) 68 MOV R2,#8 ;一共8位数据 69 CLR C ;C=0 70 WR1:

71 CLR DQ ;总线低位,开始写入 72 MOV R3,#7

73 DJNZ R3,$ ;保持16微秒以上 74 RRC A ;把字节DATA分成8个BIT环移给C 75 MOV DQ, C ;写入一个BIT 76 MOV R3,#23

77 DJNZ R3,$ ;等待

78 SETB DQ ;重新释放总线 79 NOP

80 DJNZ R2,WR1 ;写入下一个BIT 81 SETB DQ

82 RET 写入子程序

83

84 READ_1820: ;将温度高位和低位读出 85 MOV R4,#2 ;读出两个字节的数据 86 MOV R1,#29H ;低位存入29H,高位存入28h 87 RE0:

88 MOV R2,#8 ;数据一共有8位 RE1: 90 CLR C

91 SETB DQ 92 NOP

93 NOP

94 CLR DQ ;95 NOP 96 NOP 97 NOP

98 SETB DQ ;99 MOV R3,#9 100 RE2:

101 DJNZ R3,RE2 ;102 MOV C, DQ ;103 MOV R3,#23

104 RE3: ;

105 DJNZ R3,RE3 ;106 RRC A ;107 DJNZ R2,RE1 ;108 MOV @R1,A 109 DEC R1 110 DJNZ R4,RE0

111 RET 112

113 TURN:

114 MOV A,29H

115 MOV C,40H ;116 RRC A 117 MOV C,41H 118 RRC A 119 MOV C,42H 120 RRC A 121 MOV C,43H 122 RRC A 123 MOV 29H,A

124 RET 125

读前总线保持为低 开始读总线释放 延时18微妙

从总线读到一个BIT 等待50微妙

把读得的位值环移给A 读下一个BIT 读取子程序 将28中的最低位移入C 数据转化子程序 126 DISPLAY: ;将29H中的十六进制数成10进制 127 MOV A,29H

128 MOV B,#10 ;10进制/10=10进制 129 DIV AB

130 MOV B_BIT, A ;十位在A 131 MOV A_BIT, B ;个位在B

132 MOV DPTR,#TABLE ;指定查表启始地址 133 MOV R0,#4 134 DP1:

135 MOV R1,#250 ;显示1000次 136 LOOP:

137 MOV A,A_BIT ;取个位数

138 MOVC A,@A+DPTR ;查个位数的7段代码 139 MOV P0,A ;送出个位的7段代码 140 CLR P2.3 ;开个位显示 141 ACALL DELAY ; 142 SETB P2.3

143 MOV A,B_BIT ;取十位数

144 MOVC A,@A+DPTR ;查十位数的7段代码 145 MOV P0,A ;送出个十位的7段代码 146 CLR P2.2 ;开十位显示 147 ACALL DELAY ;显示1MS 148 SETB P2.2

149 DJNZ R1,LOOP ;250次没完循环 150 DJNZ R0,DP1 ;4个250次没完循环

151 RET 温度显示子程序 152

153 DELAY: ; 154 MOV R7,#80 155 DJNZ R7,$

156 RET 延时子程序 157

158 TABLE: ;数码管共阳极0~9代码 159 DB 0C0H,0F9H,0A4H,0B0H,99H

160 DB 92H,82H,0F8H,80H,90H 代码表 161

162 END 程序结束

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务