📄 lcd1602_temp_v1.1.lst
字号:
A51 MACRO ASSEMBLER LCD1602_TEMP_V1_1 09/17/2007 14:00:32 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN LCD1602_TEMP_v1.1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE LCD1602_TEMP_v1.1.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 00H
0000 802E 2 JMP INPORT
000B 3 ORG 0BH
4 ;JMP TM0
0030 5 ORG 30H
0030 6 INPORT:
0029 7 TMP_H EQU 29H ;温度高字节
0028 8 TMP_L EQU 28H
00B0 9 RS EQU P3.0;确定具体硬件的连接方式
00B1 10 RW EQU P3.1 ;确定具体硬件的连接方式
00B2 11 E EQU P3.2 ;确定具体硬件的连接方式
0091 12 KEY_SET EQU P1.1
0090 13 KEY_UP EQU P1.0
0092 14 KEY_DOWN EQU P1.2
0070 15 DS18B20_FLAG EQU 70h
0001 16 SET_FLAG EQU 01H
0002 17 FLASH_FLAG EQU 02H
0003 18 K_ON EQU 03H
0030 7525FF 19 MOV 25H,#0FFH ;位00h-07h全部置1
0033 7C0E 20 MOV R4,#14
0035 758901 21 MOV TMOD,#01H
0038 758AB0 22 MOV TL0,#0B0H
003B 758C3C 23 MOV TH0,#3CH
003E 75A882 24 MOV IE,#10000010B ;(8:总控,2:定时0溢出中断控制位)
25
26
0041 27 LCD_INIT:
28 ;15MS
0041 7E1E 29 MOV R6,#30
0043 912D 30 CALL DELAY_BY_R6 ;15ms
0045 758038 31 MOV P0,#38H ;写38h
0048 5160 32 ACALL WRITE_NOT_CHECK_BUSY
004A 7E0A 33 MOV R6,#10
004C 912D 34 CALL DELAY_BY_R6 ;5ms
004E 758038 35 MOV P0,#38H
0051 5160 36 ACALL WRITE_NOT_CHECK_BUSY
0053 7E0A 37 MOV R6,#10
0055 912D 38 CALL DELAY_BY_R6 ;5ms
39 ;-----设转初始值
0057 D2B2 40 SETB E
0059 758001 41 MOV P0,#00000001B ;清屏并光标复位
005C 516B 42 ACALL ENABLE;调用写入命令子程序
005E 758038 43 MOV P0,#00111000B ;8位2行5x7点阵
0061 516B 44 ACALL ENABLE ;调用写入命令子程序
0063 75800E 45 MOV P0,#00001110B ;显示器开、光标开、光标允许闪烁
0066 516B 46 ACALL ENABLE ;调用写入命令子程序
0068 758006 47 MOV P0,#00000110B;文字不动,光标自动右移
006B 516B 48 ACALL ENABLE ;调用写入命令子程序
49
50
006D 51 STORE_DEFINE_DATA: ;把自定义字符存入CGRAM
006D 758040 52 MOV P0,#40H ;CGRAM起始地址
0070 516B 53 ACALL ENABLE
0072 7A08 54 MOV R2,#8
0074 90045B 55 MOV DPTR,#DEFINE_DATA
0077 7B00 56 MOV R3,#0
A51 MACRO ASSEMBLER LCD1602_TEMP_V1_1 09/17/2007 14:00:32 PAGE 2
0079 57 NEXTP:
0079 EB 58 MOV A,R3
007A 93 59 MOVC A,@A+DPTR
007B F580 60 MOV P0,A
007D 518E 61 CALL WRITE_DATA_TO_LCD
007F 0B 62 INC R3
0080 DAF7 63 DJNZ R2,NEXTP
64
65 ;****************主程序*******************
0082 66 START:
0082 31FA 67 CALL RESET
0084 30700E 68 JNB 70h,MAIN1
0087 7580C0 69 MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
008A 516B 70 ACALL ENABLE ;调用写入命令子程序
71
008C 72 DS18B20_NOT_READY:
008C 71AB 73 CALL DISPLAY_18B20_ERROR
74
008E 75 LOOP1:
008E 31FA 76 CALL RESET
0090 307002 77 JNB 70h,MAIN1
0093 80F9 78 JMP LOOP1 ;如果栓测不到18b20程序下面不执行
79
0095 80 MAIN1:
0095 758001 81 MOV P0,#00000001B ;清屏并光标复位
0098 516B 82 ACALL ENABLE;调用写入命令子程序
009A 71BA 83 CALL DISPLAY_WATING ;等待第一次结果.
009C 31E6 84 CALL SKIP_ROM
009E 31F0 85 CALL TEMP_CONV
00A0 913F 86 CALL DELAY_600MS
00A2 758001 87 MOV P0,#00000001B ;清屏并光标复位
00A5 516B 88 ACALL ENABLE;调用写入命令子程序
89
90
91
92
00A7 93 MAIN :
00A7 31FA 94 CALL RESET
00A9 31E6 95 CALL SKIP_ROM
00AB 31EB 96 CALL RECALL_EPROM ;调入温度限值.
00AD 97 MAIN_MAIN:
00AD 31D2 98 CALL READ_TEMP ;读18b20的内部温度
00AF 2070DA 99 JB 70h,DS18B20_NOT_READY ;中途失败!
00B2 519D 100 CALL DATA_CONV ; 数据转换
00B4 7104 101 CALL DISPLAY_18B20_TEMP
00B6 7149 102 CALL DISPLAY_18B20_TEMP_XZ;显示限值.
00B8 11BF 103 CALL CONTROL
00BA 30910E 104 JNB KEY_SET,S1
00BD 80EE 105 JMP MAIN_MAIN
106
107
00BF 108 CONTROL:
00BF 300305 109 JNB 03H,CONTROL1
00C2 120419 110 LCALL DISPLAY_OFF
00C5 01CA 111 AJMP CONTROL_END
00C7 112 CONTROL1:
00C7 12040A 113 LCALL DISPLAY_ON
00CA 114 CONTROL_END:
00CA 22 115 RET
116
00CB 117 S1:
00CB 120434 118 LCALL DELAY_2MS ;延时消抖
00CE 2091D6 119 JB KEY_SET,MAIN
00D1 3091FD 120 JNB KEY_SET,$
00D4 1200D9 121 LCALL KEY ;有键输入
00D7 01A7 122 AJMP MAIN
A51 MACRO ASSEMBLER LCD1602_TEMP_V1_1 09/17/2007 14:00:32 PAGE 3
123
124
125 ;***************键处理程序******************
00D9 D201 126 KEY: SETB 01H
00DB 127 KEY_IN:;有键输入的程序
00DB 758001 128 MOV P0,#00000001B ;清屏并光标复位
00DE 516B 129 ACALL ENABLE;调用写入命令子程序
00E0 300122 130 JNB 01H,DSP_SET_L ;01如果是0,则显示L:
00E3 131 DSP_SET_H: ;显示高温的限值
00E3 758080 132 MOV P0,#10000000B
00E6 71E2 133 ACALL DISPLAY_SETING_TEMP_H ;显示SETING_TEMP:H ..
00E8 900463 134 MOV DPTR,#LED_DATA
00EB A942 135 MOV R1,42H ;码表初值
00ED 7801 136 MOV R0,#1;字数
00EF 5156 137 CALL DISPLAY
138 ;---------------显示温度限值低位
00F1 900463 139 MOV DPTR,#LED_DATA
00F4 A941 140 MOV R1,41H ;码表初值
00F6 7801 141 MOV R0,#1;字数
00F8 5156 142 CALL DISPLAY
143 ;---------------显示温度限值低位
00FA 900463 144 MOV DPTR,#LED_DATA
00FD A940 145 MOV R1,40H ;码表初值
00FF 7801 146 MOV R0,#1;字数
0101 5156 147 CALL DISPLAY
0103 2127 148 AJMP KEY_SELECT
149
0105 150 DSP_SET_L:;显示低温的限值
0105 758080 151 MOV P0,#10000000B
0108 71F6 152 ACALL DISPLAY_SETING_TEMP_L ;显示SETING_TEMP:L ..
010A 900463 153 MOV DPTR,#LED_DATA
010D A945 154 MOV R1,45H ;码表初值
010F 7801 155 MOV R0,#1;字数
0111 5156 156 CALL DISPLAY
157 ;---------------显示温度限值低位
0113 900463 158 MOV DPTR,#LED_DATA
0116 A944 159 MOV R1,44H ;码表初值
0118 7801 160 MOV R0,#1;字数
011A 5156 161 CALL DISPLAY
162 ;---------------显示温度限值低位
011C 900463 163 MOV DPTR,#LED_DATA
011F A943 164 MOV R1,43H ;码表初值
0121 7801 165 MOV R0,#1;字数
0123 5156 166 CALL DISPLAY
0125 2127 167 AJMP KEY_SELECT
168
169
0127 170 KEY_SELECT:
0127 309108 171 JNB KEY_SET,K_SET
012A 309020 172 JNB KEY_UP,K_UP
012D 30923D 173 JNB KEY_DOWN,K_DOWN
0130 2127 174 AJMP KEY_SELECT
175
176
0132 177 K_SET:
0132 120434 178 LCALL DELAY_2MS
0135 120434 179 lcall delay_2ms
0138 120434 180 lcall delay_2ms
013B 2091E9 181 JB KEY_SET,KEY_SELECT
182
183
013E 7DFA 184 MOV R5,#250
0140 185 KSET_LOOP:
0140 20916B 186 JB KEY_SET,KEY_CPL
0143 120434 187 LCALL DELAY_2MS
0146 120434 188 LCALL DELAY_2MS
A51 MACRO ASSEMBLER LCD1602_TEMP_V1_1 09/17/2007 14:00:32 PAGE 4
0149 DDF5 189 DJNZ R5,KSET_LOOP
014B 21B2 190 AJMP EXT_KEY
191
192
014D 193 K_UP:
014D 120434 194 LCALL DELAY_2MS
0150 120434 195 lcall delay_2ms
0153 2090D1 196 JB KEY_UP,KEY_SELECT
0156 30010A 197 JNB 01H,K_UP_LOW
198
0159 199 K_UP_HIGH:
0159 3090FD 200 JNB KEY_UP,$
015C E52A 201 MOV A,2AH
015E 04 202 INC A
015F F52A 203 MOV 2AH,A
0161 8025 204 JMP K_UP_DOWN_END
205
0163 206 K_UP_LOW:
0163 3090FD 207 JNB KEY_UP,$
0166 E52B 208 MOV A,2BH
0168 04 209 INC A
0169 F52B 210 MOV 2BH,A
016B 801B 211 JMP K_UP_DOWN_END
212
213 ;*********************
214
016D 215 K_DOWN:
016D 120434 216 LCALL DELAY_2MS
0170 2092B4 217 JB KEY_DOWN,KEY_SELECT
0173 30010A 218 JNB 01H,K_DOWN_LOW
219
0176 220 K_DOWN_HIGH:
0176 3092FD 221 JNB KEY_DOWN,$
0179 E52A 222 MOV A,2AH
017B 14 223 DEC A
017C F52A 224 MOV 2AH,A
017E 8008 225 JMP K_UP_DOWN_END
226
0180 227 K_DOWN_LOW:
0180 3092FD 228 JNB KEY_DOWN,$
0183 E52B 229 MOV A,2BH
0185 14 230 DEC A
0186 F52B 231 MOV 2BH,A
232
0188 233 K_UP_DOWN_END:
234
0188 E52A 235 MOV A,2AH
018A 75F00A 236 MOV B,#10
018D 84 237 DIV AB
018E 85F040 238 MOV 40H,B ;高温限值个位
0191 75F00A 239 MOV B,#10
0194 84 240 DIV AB
0195 85F041 241 MOV 41H,B;十位
0198 F542 242 MOV 42H,A;百位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -