📄 12864.lst
字号:
A51 MACRO ASSEMBLER 12864 09/16/2007 22:36:02 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 12864.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 12864.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;12864(带字库汉字显示演示程序)
2 ;***************************************************************************
3 ;* sxj1974@163.com (51c51 test web) www.8951.com *
4 ;* Create by :石学军 www.51c51.com 更多例程请登陆网站 *
5 ;***************************************************************************
6
00A0 7 RS EQU P2.0
00A1 8 RW EQU P2.1
00A2 9 E EQU P2.2
00A3 10 PSB EQU P2.3
00A5 11 RST EQU P2.5
12 ;-----------------------------------------------
0030 13 LCD_X EQU 30H
0031 14 LCD_Y EQU 31H
0032 15 COUNT EQU 32H
0033 16 COUNT1 EQU 33H
0034 17 COUNT2 EQU 34H
0035 18 COUNT3 EQU 35H
19 ;-----------------------------------------------
0036 20 LCD_DATA EQU 36H
0037 21 LCD_DATA1 EQU 37H
0038 22 LCD_DATA2 EQU 38H
0039 23 STORE EQU 39H
24
25 ;-----------------------------------------------
0000 26 ORG 0000H
0000 020100 27 LJMP MAIN
0100 28 ORG 0100H
29 ;-----------------------------------------------
0100 30 MAIN:
0100 75815F 31 MOV SP,#5FH
0103 C2A5 32 CLR RST ;复位
0105 1202DB 33 LCALL DELAY4
0108 D2A5 34 SETB RST
010A 00 35 NOP
010B D2A3 36 SETB PSB ;通讯方式为8位数据并口
37
38 ;********************初始化**********************
010D 7434 39 LGS0: MOV A,#34H ;34H--扩充指令操作
010F 12028C 40 LCALL SEND_I
0112 7430 41 MOV A,#30H ;30H--基本指令操作
0114 12028C 42 LCALL SEND_I
0117 7401 43 MOV A,#01H ;清除显示
0119 12028C 44 LCALL SEND_I
011C 7406 45 MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
011E 12028C 46 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1
0121 740C 47 MOV A,#0CH ;开显示,关光标,不闪烁
0123 12028C 48 LCALL SEND_I
49 ;===============================================
0126 50 TU_PLAY1:
0126 900347 51 MOV DPTR,#TU_TAB1 ;显示图形
0129 1201A7 52 LCALL PHO_DISP
012C 1202BC 53 LCALL DELAY3
54
55 ;=================================================
56 ;;显示汉字和字符
57 ;加入80ms的延时,使你能够看清楚显示的过程
58 ;根据汉字显示坐标分段写入(顺序写入)
A51 MACRO ASSEMBLER 12864 09/16/2007 22:36:02 PAGE 2
59 ;=================================================
012F 60 HAN_WR2:
012F 12025F 61 LCALL CLEAR_P
0132 62 HAN_WR2A:
0132 9002F1 63 MOV DPTR,#TAB1A ;显示汉字和字符
0135 753210 64 MOV COUNT,#10H ;地址计数器设为16。
0138 7480 65 MOV A,#80H ;第一行起始地址
013A 12028C 66 LCALL SEND_I
013D 12026F 67 LCALL QUSHU
0140 68 HAN_WR2B:
0140 900329 69 MOV DPTR,#TAB1B ;显示汉字和字符
0143 753210 70 MOV COUNT,#10H ;地址计数器设为16。
0146 7490 71 MOV A,#90H ;第二行起始地址
0148 12028C 72 LCALL SEND_I
014B 12026F 73 LCALL QUSHU
014E 74 HAN_WR2C:
014E 900319 75 MOV DPTR,#TAB1C ;显示汉字和字符
0151 753210 76 MOV COUNT,#10H ;地址计数器设为16。
0154 7488 77 MOV A,#88H ;第三行起始地址
0156 12028C 78 LCALL SEND_I
0159 12026F 79 LCALL QUSHU
015C 80 HAN_WR2D:
015C 900337 81 MOV DPTR,#TAB1D ;显示汉字和字符
015F 753210 82 MOV COUNT,#10H ;地址计数器设为16。
0162 7498 83 MOV A,#98H ;第四行起始地址
0164 12028C 84 LCALL SEND_I
0167 12026F 85 LCALL QUSHU
016A 1202BC 86 LCALL DELAY3
016D 120236 87 LCALL FLASH
0170 12025F 88 LCALL CLEAR_P
0173 8009 89 JMP TU_PLAY2
90 ;----------------------------------------------
91 ;TU_PLAY1:
0175 900347 92 MOV DPTR,#TU_TAB1 ;显示图形
0178 1201A7 93 LCALL PHO_DISP
017B 1202BC 94 LCALL DELAY3
95
96 ;----------------------------------------------
017E 97 TU_PLAY2:
017E 900747 98 MOV DPTR,#TU_TAB2 ;显示图形
0181 1201A7 99 LCALL PHO_DISP
0184 1202BC 100 LCALL DELAY3
101
102 ;----------------------------------------------
0187 103 TU_PLAY3:
0187 900B47 104 MOV DPTR,#TU_TAB4 ;显示图形
018A 1201A7 105 LCALL PHO_DISP
018D 1202BC 106 LCALL DELAY3
107
108 ;-----------------------------------------------
109 ;显示点阵
110 ;-----------------------------------------------
0190 111 LATPLAY1:
0190 7401 112 MOV A,#01H ;清屏
0192 12028C 113 LCALL SEND_I
0195 7537CC 114 MOV LCD_DATA1,#0CCH ;显示点阵
0198 7538CC 115 MOV LCD_DATA2,#0CCH
019B 1201E2 116 LCALL LAT_DISP
019E 1202BC 117 LCALL DELAY3
01A1 12025F 118 LCALL CLEAR_P
119
01A4 120 KU_PLAY2:
121
01A4 020126 122 LJMP TU_PLAY1
123
124 ;===============================================
A51 MACRO ASSEMBLER 12864 09/16/2007 22:36:02 PAGE 3
125 ;全屏显示图形子程序
126 ;===============================================
01A7 127 PHO_DISP:
01A7 753502 128 MOV COUNT3,#02H
01AA 753080 129 MOV LCD_X,#80H
01AD 130 PHO_DISP1:
01AD 753180 131 MOV LCD_Y,#80H
01B0 753420 132 MOV COUNT2,#20H
01B3 133 PHO_DISP2:
01B3 753310 134 MOV COUNT1,#10H
01B6 120221 135 LCALL WR_ZB
01B9 136 PHO_DISP3:
01B9 E4 137 CLR A
01BA 93 138 MOVC A,@A+DPTR
01BB 12027C 139 LCALL SEND_D
01BE A3 140 INC DPTR
01BF D533F7 141 DJNZ COUNT1,PHO_DISP3
01C2 0531 142 INC LCD_Y
01C4 D534EC 143 DJNZ COUNT2,PHO_DISP2
01C7 753088 144 MOV LCD_X,#88H
01CA D535E0 145 DJNZ COUNT3,PHO_DISP1
146
01CD 7436 147 MOV A,#36H
01CF 12028C 148 LCALL SEND_I
01D2 7430 149 MOV A,#30H
01D4 12028C 150 LCALL SEND_I
01D7 22 151 RET
152 ;----------------------------------------------
01D8 153 CLRRAM:
01D8 753700 154 MOV LCD_DATA1,#00H ;GDRAM写0子程序
01DB 753800 155 MOV LCD_DATA2,#00H
01DE 1201E2 156 LCALL LAT_DISP
01E1 22 157 RET
158 ;==============================================
159 ;显示点阵子程序
160 ;==============================================
01E2 161 LAT_DISP:
01E2 753502 162 MOV COUNT3,#02H
01E5 753080 163 MOV LCD_X,#80H
01E8 164 LAT_DISP1:
01E8 753180 165 MOV LCD_Y,#80H
01EB C2D5 166 CLR F0
01ED 753420 167 MOV COUNT2,#20H
01F0 168 LAT_DISP2:
01F0 753310 169 MOV COUNT1,#10H
01F3 120221 170 LCALL WR_ZB
01F6 171 LAT_DISP3:
01F6 20D505 172 JB F0,LAT_DISP32
01F9 853736 173 MOV LCD_DATA,LCD_DATA1
01FC 4101 174 AJMP LAT_DISP31
01FE 175 LAT_DISP32:
01FE 853836 176 MOV LCD_DATA,LCD_DATA2
0201 177 LAT_DISP31:
0201 E536 178 MOV A,LCD_DATA
0203 12027C 179 LCALL SEND_D
0206 D533F8 180 DJNZ COUNT1,LAT_DISP31
0209 0531 181 INC LCD_Y
020B B2D5 182 CPL F0
020D D534E0 183 DJNZ COUNT2,LAT_DISP2
0210 753088 184 MOV LCD_X,#88H
0213 D535D2 185 DJNZ COUNT3,LAT_DISP1
186
0216 7436 187 MOV A,#36H
0218 12028C 188 LCALL SEND_I
021B 7430 189 MOV A,#30H
021D 12028C 190 LCALL SEND_I
A51 MACRO ASSEMBLER 12864 09/16/2007 22:36:02 PAGE 4
0220 22 191 RET
192 ;---------------------------------------------
0221 193 WR_ZB:
0221 7434 194 MOV A,#34H
0223 12028C 195 LCALL SEND_I
0226 E531 196 MOV A,LCD_Y
0228 12028C 197 LCALL SEND_I
022B E530 198 MOV A,LCD_X
022D 12028C 199 LCALL SEND_I
0230 7430 200 MOV A,#30H
0232 12028C 201 LCALL SEND_I
0235 22 202 RET
203
204 ;===============================================
0236 205 FLASH:
0236 7408 206 MOV A,#08H ;关闭显示
0238 12028C 207 LCALL SEND_I
023B 1202E4 208 LCALL DELAY5
023E 740C 209 MOV A,#0CH ;开显示,关光标,不闪烁
0240 12028C 210 LCALL SEND_I
0243 1202E4 211 LCALL DELAY5
0246 7408 212 MOV A,#08H ;关闭显示
0248 12028C 213 LCALL SEND_I
024B 1202E4 214 LCALL DELAY5
024E 740C 215 MOV A,#0CH ;开显示,关光标,不闪烁
0250 12028C 216 LCALL SEND_I
0253 1202E4 217 LCALL DELAY5
0256 7408 218 MOV A,#08H ;关闭显示
0258 12028C 219 LCALL SEND_I
025B 1202E4 220 LCALL DELAY5
025E 22 221 RET
222 ;==================================================
223 ;清屏
224 ;==================================================
025F 225 CLEAR_P:
025F 7401 226 MOV A,#01H ;清屏
0261 12028C 227 LCALL SEND_I
0264 7434 228 MOV A,#34H
0266 12028C 229 LCALL SEND_I
0269 7430 230 MOV A,#30H
026B 12028C 231 LCALL SEND_I
026E 22 232 RET
233 ;==================================================
234 ;查表取数据送显示
235 ;==================================================
026F 236 QUSHU:
026F E4 237 CLR A
0270 93 238 MOVC A,@A+DPTR ;查表取数据
0271 12027C 239 LCALL SEND_D ;送显示
0274 A3 240 INC DPTR
0275 1202DB 241 LCALL DELAY4 ;延时80ms,
0278 D532F4 242 DJNZ COUNT,QUSHU
027B 22 243 RET
244
245 ;===============================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -