📄 12864.src
字号:
DB 030H
DB 060H
DB 0C0H
DB 080H
DB 000H
DB 007H
DB 007H
DB 004H
DB 004H
DB 004H
DB 007H
DB 007H
DB 000H
list0:
DB 'l' ,'c' ,'d' ,000H
list1:
DB '1' ,'2' ,'8' ,'6' ,'4' ,000H
list2:
DB '2' ,'0' ,'0' ,'6' ,000H
list3:
DB '2' ,'0' ,'0' ,'6' ,000H
str1:
DB '2' ,'0' ,'0' ,'6' ,',' ,'9' ,000H
str2:
DB 'Y' ,'U' ,'Z' ,'J' ,' ' ,'p' ,'r' ,'o' ,'d' ,'u'
DB 'c' ,'t' ,'i' ,'o' ,'n' ,'s' ,000H
_?ix1000:
DB 'g' ,'l' ,'2' ,'u' ,' ' ,'f' ,'o' ,'r' ,' ' ,'2'
DB '0' ,'0' ,'6' ,000H
_?ix1001:
DB 'G' ,'o' ,'o' ,'d' ,' ' ,'L' ,'u' ,'c' ,'k' ,000H
RSEG ?C_INITSEG
DB 001H
DB cxw
DB 008H
DB 001H
DB cyw
DB 001H
DB 001H
DB cxb
DB 018H
DB 001H
DB cyb
DB 000H
DB 001H
DB pt
DB 001H
DB 001H
DB Wide
DB 008H
DB 001H
DB High?
DB 010H
; //******************************//
; //**欢迎大家继续完善,共同学习**//
; //******************************//
; //qq:36202948
; #include <reg52.H>
; #include<absacc.h>
; #include <math.h>
; #include <bmp.h>
; #include <hz.h>
; #include <Asc8X16E.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define dateio P0
; sbit DI12864=P2^2;
; sbit E12864=P2^0;
; sbit WR12864=P2^1;
; sbit CSA12864=P2^5;
; sbit CSB12864=P2^4;
; sbit reset =P1^0;
; unsigned char cxw=8,cyw=1,cxb=24,cyb=0;
; unsigned char pt=1;
; unsigned char code list0[]={"lcd"},
; list1[]={"12864"},
; list2[]={"2006"},
; list3[]={"2006"};
;
; uchar code str1[]={"2006,9"},
; str2[]={"YUZJ productions"};
;
; #define Set_Disp_On 0x3F
; #define Set_Disp_Off 0x3E
; #define Set_Column 0x40
; #define Set_Page 0xB8
; #define Set_Start_Line 0xC0
;
; //延时子程序
; void delay(unsigned char t)
RSEG ?PR?_delay?12864
_delay:
USING 0
; SOURCE LINE # 37
;---- Variable 't?040' assigned to Register 'R7' ----
; {
; SOURCE LINE # 38
; unsigned char n=0xff;
; SOURCE LINE # 39
;---- Variable 'n?041' assigned to Register 'R6' ----
MOV R6,#0FFH
?C0001:
; while(--t){
; SOURCE LINE # 40
DEC R7
MOV A,R7
JZ ?C0005
?C0003:
; while(--n);
; SOURCE LINE # 41
DJNZ R6,?C0003
?C0004:
; n=0xff;
; SOURCE LINE # 42
MOV R6,#0FFH
; }
; SOURCE LINE # 43
SJMP ?C0001
; }
; SOURCE LINE # 44
?C0005:
RET
; END OF _delay
;
;
; //指令寄存器写入函数
;
; Write_12864_Reg(uchar Reg_Code)
RSEG ?PR?_Write_12864_Reg?12864
_Write_12864_Reg:
; SOURCE LINE # 49
;---- Variable 'Reg_Code?142' assigned to Register 'R7' ----
; {
; SOURCE LINE # 50
; DI12864=0;
; SOURCE LINE # 51
CLR DI12864
; WR12864=0;
; SOURCE LINE # 52
CLR WR12864
; dateio=Reg_Code;
; SOURCE LINE # 53
MOV P0,R7
; E12864=1;
; SOURCE LINE # 54
SETB E12864
; E12864=0;
; SOURCE LINE # 55
CLR E12864
; }
; SOURCE LINE # 56
RET
; END OF _Write_12864_Reg
;
;
; // 显示数据写入函数
;
; Write_12864_Data(uchar Disp_Data)
RSEG ?PR?_Write_12864_Data?12864
_Write_12864_Data:
; SOURCE LINE # 61
;---- Variable 'Disp_Data?243' assigned to Register 'R7' ----
; {
; SOURCE LINE # 62
; DI12864=1;
; SOURCE LINE # 63
SETB DI12864
; WR12864=0;
; SOURCE LINE # 64
CLR WR12864
; E12864=1;
; SOURCE LINE # 65
SETB E12864
; dateio=Disp_Data;
; SOURCE LINE # 66
MOV P0,R7
;
; E12864=0;
; SOURCE LINE # 68
CLR E12864
; }
; SOURCE LINE # 69
RET
; END OF _Write_12864_Data
;
;
; // 读取8显示数据函数
;
; uchar Read_12864_Data()
RSEG ?PR?Read_12864_Data?12864
Read_12864_Data:
USING 0
; SOURCE LINE # 74
; {
; SOURCE LINE # 75
; uchar Disp_Data;
;
; DI12864=1;
; SOURCE LINE # 78
SETB DI12864
; WR12864=1;
; SOURCE LINE # 79
SETB WR12864
; dateio=0xff;
; SOURCE LINE # 80
MOV P0,#0FFH
; E12864=1;
; SOURCE LINE # 81
SETB E12864
; Disp_Data=dateio;
; SOURCE LINE # 82
;---- Variable 'Disp_Data?344' assigned to Register 'R7' ----
MOV R7,P0
; E12864=0;
; SOURCE LINE # 83
CLR E12864
; return (Disp_Data);
; SOURCE LINE # 84
; }
; SOURCE LINE # 85
?C0008:
RET
; END OF Read_12864_Data
;
;
;
; //设置XY地址,X用页表示,Y用行表示
;
; void Set_XY(unsigned char X_PageColumn, unsigned char Y_Column)
RSEG ?PR?_Set_XY?12864
_Set_XY:
USING 0
; SOURCE LINE # 91
;---- Variable 'Y_Column?446' assigned to Register 'R5' ----
;---- Variable 'X_PageColumn?445' assigned to Register 'R7' ----
; {
; SOURCE LINE # 92
; Write_12864_Reg(Set_Page+X_PageColumn);
; SOURCE LINE # 93
MOV A,R7
ADD A,#0B8H
MOV R7,A
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Column+Y_Column);
; SOURCE LINE # 94
MOV A,R5
ADD A,#040H
MOV R7,A
LJMP _Write_12864_Reg
; END OF _Set_XY
; }
;
;
; // 12864初始化
;
; Init_12864()
RSEG ?PR?Init_12864?12864
Init_12864:
USING 0
; SOURCE LINE # 100
; {
; SOURCE LINE # 101
; CSA12864=1;
; SOURCE LINE # 102
SETB CSA12864
; CSB12864=1;
; SOURCE LINE # 103
SETB CSB12864
; delay(100);
; SOURCE LINE # 104
MOV R7,#064H
LCALL _delay
; Write_12864_Reg(Set_Disp_Off);
; SOURCE LINE # 105
MOV R7,#03EH
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Start_Line);
; SOURCE LINE # 106
MOV R7,#0C0H
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Page);
; SOURCE LINE # 107
MOV R7,#0B8H
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Column);
; SOURCE LINE # 108
MOV R7,#040H
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Disp_On);
; SOURCE LINE # 109
DEC R7
LJMP _Write_12864_Reg
; END OF Init_12864
; }
;
;
; // 清屏
; Clr_Screen()
RSEG ?PR?Clr_Screen?12864
Clr_Screen:
USING 0
; SOURCE LINE # 114
; {
; SOURCE LINE # 115
; unsigned char j,k;
;
; CSA12864=1;
; SOURCE LINE # 118
SETB CSA12864
; CSB12864=1;
; SOURCE LINE # 119
SETB CSB12864
; for(k=0;k<8;k++)
; SOURCE LINE # 120
;---- Variable 'k?648' assigned to Register 'R6' ----
CLR A
MOV R6,A
?C0011:
; {
; SOURCE LINE # 121
; Write_12864_Reg(Set_Page+k);
; SOURCE LINE # 122
MOV A,R6
ADD A,#0B8H
MOV R7,A
LCALL _Write_12864_Reg
; Write_12864_Reg(Set_Column);
; SOURCE LINE # 123
MOV R7,#040H
LCALL _Write_12864_Reg
; for(j=0;j<64;j++) Write_12864_Data(0x00);
; SOURCE LINE # 124
;---- Variable 'j?647' assigned to Register 'R5' ----
CLR A
MOV R5,A
?C0014:
CLR A
MOV R7,A
LCALL _Write_12864_Data
INC R5
CJNE R5,#040H,?C0014
; }
; SOURCE LINE # 125
?C0013:
INC R6
CJNE R6,#08H,?C0011
; }
; SOURCE LINE # 126
?C0017:
RET
; END OF Clr_Screen
;
; unsigned char Wide=8,High=16;//字符尺寸设置
; //显示一个字符
; //*****************************************
; void displayasc(uchar x,uchar y,uchar k)
RSEG ?PR?_displayasc?12864
_displayasc:
USING 0
; SOURCE LINE # 131
MOV y?750,R5
MOV k?751,R3
;---- Variable 'x?749' assigned to Register 'R7' ----
; {
; SOURCE LINE # 132
; uchar i;
; uchar rline=x,rcol=y;
; SOURCE LINE # 134
;---- Variable 'rline?753' assigned to Register 'R4' ----
MOV R4,AR7
;---- Variable 'rcol?754' assigned to Register 'R3' ----
MOV R3,y?750
; k=k-0x20;
; SOURCE LINE # 135
MOV A,#0E0H
ADD A,k?751
MOV k?751,A
; if(rcol>128-Wide) {rline=rline+2;rcol=0;}
; SOURCE LINE # 136
CLR C
MOV A,#080H
SUBB A,Wide
MOV R7,A
MOV A,R3
SETB C
SUBB A,R7
JC ?C0018
INC R4
INC R4
CLR A
MOV R3,A
?C0018:
; for(i=0;i<Wide*High/8;i++)
; SOURCE LINE # 137
;---- Variable 'i?752' assigned to Register 'R2' ----
CLR A
MOV R2,A
?C0019:
MOV A,Wide
MOV B,High?
MUL AB
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV A,R2
CLR C
SUBB A,R7
JNC ?C0025
; { if(i!=0&&i%8==0){rline++;rcol=y;}
; SOURCE LINE # 138
MOV A,R2
JZ ?C0022
ANL A,#07H
JNZ ?C0022
INC R4
MOV R3,y?750
?C0022:
; if(rcol<64)
; SOURCE LINE # 139
MOV A,R3
CLR C
SUBB A,#040H
JNC ?C0023
; {
; SOURCE LINE # 140
; CSA12864=1;
; SOURCE LINE # 141
SETB CSA12864
; CSB12864=0;
; SOURCE LINE # 142
CLR CSB12864
; Set_XY(rline,rcol);
; SOURCE LINE # 143
MOV R7,AR4
MOV R5,AR3
;
; Write_12864_Data(*(nAsciiDot+i+Wide*High/8*k));
; SOURCE LINE # 145
; rcol=rcol+1;
; SOURCE LINE # 146
; }
; SOURCE LINE # 147
SJMP ?C0101
?C0023:
; else
; {
; SOURCE LINE # 149
; CSA12864=0;
; SOURCE LINE # 150
CLR CSA12864
; CSB12864=1;
; SOURCE LINE # 151
SETB CSB12864
; Set_XY(rline,rcol-64);
; SOURCE LINE # 152
MOV R7,AR4
MOV A,R3
ADD A,#0C0H
MOV R5,A
?C0101:
LCALL _Set_XY
;
; Write_12864_Data(*(nAsciiDot+i+Wide*High/8*k));
; SOURCE LINE # 154
MOV A,Wide
MOV B,High?
MUL AB
RRC A
RRC A
RRC A
ANL A,#01FH
MOV B,k?751
MUL AB
MOV R7,A
MOV A,#LOW (nAsciiDot)
ADD A,R2
MOV DPL,A
CLR A
ADDC A,#HIGH (nAsciiDot)
MOV DPH,A
MOV A,DPL
ADD A,R7
MOV DPL,A
MOV A,DPH
ADDC A,B
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R7,A
LCALL _Write_12864_Data
; rcol=rcol+1;
; SOURCE LINE # 155
INC R3
; }
; SOURCE LINE # 156
; }
; SOURCE LINE # 157
?C0021:
INC R2
SJMP ?C0019
; }
; SOURCE LINE # 158
?C0025:
RET
; END OF _displayasc
;
;
; //显示字符串
; void displaystr(uchar x,uchar y,uchar *str)
RSEG ?PR?_displaystr?12864
L?0107:
USING 0
MOV R3,#0FFH
MOV R5,#01EH
_displaystr:
USING 0
; SOURCE LINE # 162
MOV str?857,R3
MOV str?857+01H,R2
MOV str?857+02H,R1
;---- Variable 'y?856' assigned to Register 'R5' ----
;---- Variable 'x?855' assigned to Register 'R7' ----
; {
; SOURCE LINE # 163
; unsigned char i=0;
; SOURCE LINE # 164
CLR A
MOV i?858,A
; unsigned char xx=x,yy=y;
; SOURCE LINE # 165
MOV xx?859,R7
;---- Variable 'yy?860' assigned to Register 'R6' ----
MOV R6,AR5
; for(;xx<8;xx++,xx++)
; SOURCE LINE # 166
?C0026:
MOV A,xx?859
CLR C
SUBB A,#08H
JNC ?C0034
; {
; SOURCE LINE # 167
; for(;yy<120;yy+=8)
; SOURCE LINE # 168
?C0029:
MOV A,R6
CLR C
SUBB A,#078H
JNC ?C0030
; {
; SOURCE LINE # 169
; if(*(str+i)=='\0')break;
; SOURCE LINE # 170
MOV R3,str?857
MOV R2,str?857+01H
MOV R1,str?857+02H
MOV DPL,i?858
MOV DPH,#00H
LCALL ?C?CLDOPTR
MOV R3,A
JZ ?C0030
?C0032:
; displayasc(xx,yy,*(str+i));
; SOURCE LINE # 171
MOV R5,AR6
MOV R7,xx?859
LCALL _displayasc
; i++;
; SOURCE LINE # 172
INC i?858
; }
; SOURCE LINE # 173
MOV A,#08H
ADD A,R6
MOV R6,A
SJMP ?C0029
?C0030:
; yy=0;
; SOURCE LINE # 174
CLR A
MOV R6,A
; if(*(str+i)=='\0')break;
; SOURCE LINE # 175
MOV R3,str?857
MOV R2,str?857+01H
MOV R1,str?857+02H
MOV DPL,i?858
MOV DPH,A
LCALL ?C?CLDOPTR
JZ ?C0034
; }
; SOURCE LINE # 176
?C0028:
INC xx?859
INC xx?859
SJMP ?C0026
; }
; SOURCE LINE # 177
?C0034:
RET
; END OF _displaystr
;
;
;
;
; //显示一个汉字
; void displayhz(unsigned char x,unsigned char y,unsigned char c,uchar code *value)
RSEG ?PR?_displayhz?12864
_displayhz:
USING 0
; SOURCE LINE # 183
MOV x?961,R7
MOV c?963,R3
;---- Variable 'y?962' assigned to Register 'R1' ----
MOV R1,AR5
; {
; SOURCE LINE # 184
; unsigned char j,k=2,n;
; SOURCE LINE # 185
MOV k?966,#02H
; for(n=0;n<c/8;n++)
; SOURCE LINE # 186
;---- Variable 'n?967' assigned to Register 'R6' ----
CLR A
MOV R6,A
?C0035:
MOV A,c?963
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
MOV A,R6
CLR C
SUBB A,R7
JNC ?C0043
; {
; SOURCE LINE # 187
; for(j=0;j<c;j++)
; SOURCE LINE # 188
;---- Variable 'j?965' assigned to Register 'R4' ----
CLR A
MOV R4,A
?C0038:
MOV A,R4
CLR C
SUBB A,c?963
JNC ?C0037
; {
; SOURCE LINE # 189
; if(y+j<64)
; SOURCE LINE # 190
MOV A,R4
MOV R3,A
MOV A,R1
ADD A,R3
MOV R3,A
CLR A
RLC A
MOV R2,A
CLR C
MOV A,R3
SUBB A,#040H
MOV A,R2
XRL A,#080H
SUBB A,#080H
JNC ?C0041
; {
; SOURCE LINE # 191
; CSA12864=1;
; SOURCE LINE # 192
SETB CSA12864
; CSB12864=0;
; SOURCE LINE # 193
CLR CSB12864
; Set_XY(x+n,y+j);
; SOURCE LINE # 194
MOV A,x?961
ADD A,R6
MOV R7,A
MOV A,R1
ADD A,R4
; }
; SOURCE LINE # 195
SJMP ?C0102
?C0041:
; else
; {
; SOURCE LINE # 197
; CSA12864=0;
; SOURCE LINE # 198
CLR CSA12864
; CSB12864=1;
; SOURCE LINE # 199
SETB CSB12864
; Set_XY(x+n,y+j-64);
; SOURCE LINE # 200
MOV A,x?961
ADD A,R6
MOV R7,A
MOV A,R1
ADD A,R4
ADD A,#0C0H
?C0102:
MOV R5,A
LCALL _Set_XY
; }
; SOURCE LINE # 201
?C0042:
; Write_12864_Data(*(value+k));
; SOURCE LINE # 202
MOV A,value?964+01H
ADD A,k?966
MOV DPL,A
CLR A
ADDC A,value?964
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R7,A
LCALL _Write_12864_Data
; k++;
; SOURCE LINE # 203
INC k?966
; }
; SOURCE LINE # 204
INC R4
SJMP ?C0038
; }
; SOURCE LINE # 205
?C0037:
INC R6
SJMP ?C0035
;
; }
; SOURCE LINE # 207
?C0043:
RET
; END OF _displayhz
; displaybmp(unsigned char setx,unsigned char sety ,unsigned char nx,unsigned char ny,unsigned char *ch)
RSEG ?PR?_displaybmp?12864
_displaybmp:
USING 0
; SOURCE LINE # 208
MOV setx?1068,R7
MOV sety?1069,R5
MOV nx?1070,R3
; {
; SOURCE LINE # 209
; unsigned char x,y;
; unsigned int k=0;
; SOURCE LINE # 211
CLR A
MOV k?1075,A
MOV k?1075+01H,A
; for(y=0+sety;y<ny+sety;y++)
; SOURCE LINE # 212
MOV y?1074,sety?1069
?C0044:
MOV A,ny?1071
ADD A,sety?1069
MOV R7,A
CLR A
RLC A
MOV R6,A
CLR C
MOV A,y?1074
SUBB A,R7
MOV A,R6
XRL A,#080H
MOV R0,A
MOV A,#080H
SUBB A,R0
JNC ?C0052
; {
; SOURCE LINE # 213
; for(x=0+setx;x<nx+setx;x++)
; SOURCE LINE # 214
MOV x?1073,setx?1068
?C0047:
MOV A,nx?1070
ADD A,setx?1068
MOV R7,A
CLR A
RLC A
MOV R6,A
CLR C
MOV A,x?1073
SUBB A,R7
MOV A,R6
XRL A,#080H
MOV R0,A
MOV A,#080H
SUBB A,R0
JNC ?C0046
; {
; SOURCE LINE # 215
; if(x<64)
; SOURCE LINE # 216
MOV A,x?1073
CLR C
SUBB A,#040H
JNC ?C0050
; {
; SOURCE LINE # 217
; Set_XY(y,x);
; SOURCE LINE # 218
MOV R5,x?1073
MOV R7,y?1074
LCALL _Set_XY
; CSA12864=1;
; SOURCE LINE # 219
SETB CSA12864
; CSB12864=0;
; SOURCE LINE # 220
CLR CSB12864
; }
; SOURCE LINE # 221
SJMP ?C0051
?C0050:
; else
; {
; SOURCE LINE # 223
; Set_XY(y,x-64);
; SOURCE LINE # 224
MOV A,x?1073
ADD A,#0C0H
MOV R5,A
MOV R7,y?1074
LCALL _Set_XY
; CSA12864=0;
; SOURCE LINE # 225
CLR CSA12864
; CSB12864=1;
; SOURCE LINE # 226
SETB CSB12864
; }
; SOURCE LINE # 227
?C0051:
; Write_12864_Data(*(ch+k));
; SOURCE LINE # 228
MOV R3,ch?1072
MOV R2,ch?1072+01H
MOV R1,ch?1072+02H
MOV DPL,k?1075+01H
MOV DPH,k?1075
LCALL ?C?CLDOPTR
MOV R7,A
LCALL _Write_12864_Data
; k++;
; SOURCE LINE # 229
INC k?1075+01H
MOV A,k?1075+01H
JNZ ?C0098
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -