⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd12864.src

📁 *名称:LCD12864显示程序 功能:显示英文
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\lcd12864.SRC generated from: lcd12864.c
; COMPILER INVOKED BY:
;        E:\Program Files\C51\BIN\C51.EXE lcd12864.c LARGE BROWSE DEBUG OBJECTEXTEND SRC(.\lcd12864.SRC)

$NOMOD51

NAME	LCD12864

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
T2	BIT	090H.0
EA	BIT	0A8H.7
rdlcd	BIT	0B0H.7
IE	DATA	0A8H
EXF2	BIT	0C8H.6
RD	BIT	0B0H.7
ES	BIT	0A8H.4
IP	DATA	0B8H
RI	BIT	098H.0
INT0	BIT	0B0H.2
CY	BIT	0D0H.7
TI	BIT	098H.1
INT1	BIT	0B0H.3
RCAP2H	DATA	0CBH
PS	BIT	0B8H.4
SP	DATA	081H
T2EX	BIT	090H.1
OV	BIT	0D0H.2
RCAP2L	DATA	0CAH
C_T2	BIT	0C8H.1
WR	BIT	0B0H.6
RCLK	BIT	0C8H.5
TCLK	BIT	0C8H.4
SBUF	DATA	099H
PCON	DATA	087H
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
lck	BIT	0B0H.5
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
CP_RL2	BIT	0C8H.0
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
TF2	BIT	0C8H.7
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
TB8	BIT	098H.3
EX1	BIT	0A8H.2
IT1	BIT	088H.2
TH2	DATA	0CDH
P	BIT	0D0H.0
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
TL2	DATA	0CCH
PT0	BIT	0B8H.1
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
PT2	BIT	0B8H.5
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
TR2	BIT	0C8H.2
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
EXEN2	BIT	0C8H.3
REN	BIT	098H.4
T2CON	DATA	0C8H
USB	BIT	090H.0
enable	BIT	090H.5
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?main?LCD12864    SEGMENT CODE 
?PR?MCUinitial?LCD12864                  SEGMENT CODE 
?PR?_delay?LCD12864  SEGMENT CODE 
?PR?delay1s?LCD12864 SEGMENT CODE 
?PR?Lcminit?LCD12864 SEGMENT CODE 
?PR?Lcmcls?LCD12864  SEGMENT CODE 
?PR?_WrL?LCD12864    SEGMENT CODE 
?PR?_WrR?LCD12864    SEGMENT CODE 
?PR?LcdbuzyL?LCD12864                    SEGMENT CODE 
?PR?LcdbuzyR?LCD12864                    SEGMENT CODE 
?PR?_Locatexy?LCD12864                   SEGMENT CODE 
?PR?_Wrdata?LCD12864 SEGMENT CODE 
?BI?LCD12864         SEGMENT BIT 
?DT?LCD12864         SEGMENT DATA 
?DT?Lcminit?LCD12864 SEGMENT DATA OVERLAYABLE 
?DT?Lcmcls?LCD12864  SEGMENT DATA OVERLAYABLE 
?DT?_Locatexy?LCD12864                   SEGMENT DATA OVERLAYABLE 
	EXTRN	CODE (?C_STARTUP)
	PUBLIC	xy
	PUBLIC	statu
	PUBLIC	simple
	PUBLIC	_Wrdata
	PUBLIC	_Locatexy
	PUBLIC	LcdbuzyR
	PUBLIC	LcdbuzyL
	PUBLIC	_WrR
	PUBLIC	_WrL
	PUBLIC	Lcmcls
	PUBLIC	Lcminit
	PUBLIC	delay1s
	PUBLIC	_delay
	PUBLIC	MCUinitial
	PUBLIC	main

	RSEG  ?BI?LCD12864
         simple:   DBIT   1
             xy:   DBIT   1

	RSEG  ?DT?LCD12864
          statu:   DS   1

	RSEG  ?DT?Lcminit?LCD12864
      cbyte?442:   DS   1

	RSEG  ?DT?Lcmcls?LCD12864
          i?543:   DS   1

	RSEG  ?DT?Lcmcls?LCD12864
          j?544:   DS   1

	RSEG  ?DT?_Locatexy?LCD12864
         x?1049:   DS   1

	RSEG  ?DT?_Locatexy?LCD12864
         y?1050:   DS   1

	RSEG  ?DT?_Locatexy?LCD12864
     right?1051:   DS   1
; #include <reg52.h>
; #include <math.h>
; #include  <string.h>
; #include  <absacc.h>
; #include <INTRINS.H>
; #define uchar unsigned char
; 
; /**********鹰脚定义*********/
; 
; sbit lck = P3^5;//锁存信号
; sbit enable = P1^5;//HC245使能信号
; sbit USB  = P1^0;//USBD12选中信号
; sbit rdlcd = P3^7;//读写控制
; 
; 
; 
; /********常用命令及参数定义********/
; #define DISPON     0x3f
; #define DISPOFF    0x3e
; #define DISPFIRST  0xc0
; #define SETX       0x40
; #define SETY       0xb8
; #define LCDBUZY    0x80
; #define L          0x00
; #define R          0x40
; #define LIMIT      0x80
; 
; #define ENABLED    enable =0
; #define DISABLED   enable =1
; #define READ       rdlcd = 0
; #define WRITE      rdlcd = 1
; 
; 
; /**********全局变量************/
; 
; uchar data statu;
; bit xy,simple;
; 
; /**************函数******************/
; 
; void uDelay(uchar MS);
; void WrL(uchar x);
; void WrR(uchar x);
; void Lcmcls(void);
; void LcdbuzyR(void);
; void LcdbuzyL(void);
; void delay1s(void);
; void Lcminit (void);
; void Putpicture(void);
; void MCUinitial();
; void delay(unsigned int time);
; void VtoH8x16change(uchar *hzbuf);
; void Puthalf(uchar *strch,uchar row,uchar col);
; void Wrdata(uchar x,uchar row,uchar col);
; void Puthz(uchar *str,uchar row,uchar col);
; void VtoHchange(uchar *hzbuf);
; void Locatexy(uchar row,uchar col);
; void out16hz(uchar *p, uchar  xdata ucXArray[]);
; void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag);
; void vWrite16x16Chinese(uchar *ch,uchar row,uchar col,bit flag);
; void vWrite8x16String(uchar  *str,uchar col, uchar row, bit flag);
; void out16hz(uchar *p, uchar  data ucXArray[]);
; 
; 
; extern uchar  code  char_Table[95][16];
; extern uchar  code picture[];
; 
; 
; /***********主程序***************/
; void main(void)

	RSEG  ?PR?main?LCD12864
main:
	USING	0
			; SOURCE LINE # 70
; {  
			; SOURCE LINE # 71
;     P1 = 0xff;
			; SOURCE LINE # 72
	MOV  	P1,#0FFH
;     simple = 1;
			; SOURCE LINE # 73
	SETB 	simple
;     MCUinitial();
			; SOURCE LINE # 74
	LCALL	MCUinitial
;     Lcminit();
			; SOURCE LINE # 75
	LCALL	Lcminit
?C0001:
;     while(1){
			; SOURCE LINE # 76
; 
;    /*  vWrite8x16String("ELITE-I", 0, 32,0);
;      vWrite8x16String("实验开发系统" ,2, 16,0);
;      vWrite8x16String("无忧电子开发网", 4, 8,0);
;      vWrite8x16String("www.51kaifa.com", 6, 0,0);
;      delay1s();
;      Lcmcls();
;      simple = 0;
;      vWrite8x16String("ELITE-I", 0, 32,0);
;      vWrite8x16String("实验开发系统" ,2, 16,0);
;      vWrite8x16String("无忧电子开发网", 4, 8,0);
;      vWrite8x16String("www.51kaifa.com", 6, 0,0);
;      simple = 1;
;      delay1s();
;      Lcmcls();
;      Putpicture();
;      delay1s();
;      Lcmcls();*/
;     }   
			; SOURCE LINE # 95
	SJMP 	?C0001
; END OF main

; 
; }
; 
; /***************初始化单片机I/O口*****************/
; void  MCUinitial()

	RSEG  ?PR?MCUinitial?LCD12864
MCUinitial:
			; SOURCE LINE # 100
; {
			; SOURCE LINE # 101
;     P0 = 0x00;
			; SOURCE LINE # 102
	CLR  	A
	MOV  	P0,A
;     lck = 0;
			; SOURCE LINE # 103
	CLR  	lck
;     P1 = 0x25;
			; SOURCE LINE # 104
	MOV  	P1,#025H
;     P2 = 0x00;
			; SOURCE LINE # 105
	MOV  	P2,A
;     lck = 1;
			; SOURCE LINE # 106
	SETB 	lck
;     lck = 0;
			; SOURCE LINE # 107
	CLR  	lck
;     P1 = 0x25;
			; SOURCE LINE # 108
	MOV  	P1,#025H
;     P2 = 0x01;
			; SOURCE LINE # 109
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 110
	SETB 	lck
;     P0 = 0xff;
			; SOURCE LINE # 111
	MOV  	P0,#0FFH
;     P1 = 0x21;
			; SOURCE LINE # 112
	MOV  	P1,#021H
;     P2 = 0xff;
			; SOURCE LINE # 113
	MOV  	P2,#0FFH
;  }
			; SOURCE LINE # 114
	RET  	
; END OF MCUinitial

; 
; /***************微秒级延时*****************/
; void delay(unsigned int  time)

	RSEG  ?PR?_delay?LCD12864
L?0054:
	USING	0
	LCALL	_delay
	LCALL	_delay
	LCALL	_delay
_delay:
	USING	0
			; SOURCE LINE # 117
;---- Variable 'time?240' assigned to Register 'R6/R7' ----
; { unsigned int i;
			; SOURCE LINE # 118
;     for(i=0;i<time;i++);
			; SOURCE LINE # 119
;---- Variable 'i?241' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0005:
	CLR  	C
	MOV  	A,R5
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0008
	INC  	R5
	CJNE 	R5,#00H,?C0053
	INC  	R4
?C0053:
	SJMP 	?C0005
;  }
			; SOURCE LINE # 120
?C0008:
	RET  	
; END OF _delay

; 
; /***************约5S延时********************/
; void delay1s(void)

	RSEG  ?PR?delay1s?LCD12864
delay1s:
	USING	0
			; SOURCE LINE # 123
; {
			; SOURCE LINE # 124
;     delay(50000);
			; SOURCE LINE # 125
	MOV  	R7,#050H
	MOV  	R6,#0C3H
;     delay(50000);
			; SOURCE LINE # 126
;     delay(50000);
			; SOURCE LINE # 127
;     delay(50000);
			; SOURCE LINE # 128
	LCALL	L?0054
;     delay(50000);
			; SOURCE LINE # 129
	LCALL	_delay
;     delay(50000);
			; SOURCE LINE # 130
;     delay(50000);
			; SOURCE LINE # 131
;     delay(50000);
			; SOURCE LINE # 132
;     delay(50000);
			; SOURCE LINE # 133
	LCALL	L?0054
;     delay(50000);
			; SOURCE LINE # 134
	LJMP 	_delay
; END OF delay1s

; }
; 
; //***********初始化LCD*******************/
; 
; void Lcminit (void)

	RSEG  ?PR?Lcminit?LCD12864
Lcminit:
	USING	0
			; SOURCE LINE # 139
; { uchar data cbyte;
			; SOURCE LINE # 140
;     cbyte=DISPOFF;
			; SOURCE LINE # 141
	MOV  	cbyte?442,#03EH
;     WrL(cbyte);
			; SOURCE LINE # 142
	MOV  	R7,cbyte?442
	LCALL	_WrL
;     WrR(cbyte);
			; SOURCE LINE # 143
	MOV  	R7,cbyte?442
	LCALL	_WrR
;     cbyte=DISPON;
			; SOURCE LINE # 144
	MOV  	cbyte?442,#03FH
;     WrL(cbyte);
			; SOURCE LINE # 145
	MOV  	R7,cbyte?442
	LCALL	_WrL
;     WrR(cbyte);
			; SOURCE LINE # 146
	MOV  	R7,cbyte?442
	LCALL	_WrR
;     cbyte=DISPFIRST;
			; SOURCE LINE # 147
	MOV  	cbyte?442,#0C0H
;     WrL(cbyte);
			; SOURCE LINE # 148
	MOV  	R7,cbyte?442
	LCALL	_WrL
;     WrR(cbyte);
			; SOURCE LINE # 149
	MOV  	R7,cbyte?442
	LCALL	_WrR
;     Lcmcls();
			; SOURCE LINE # 150
	LCALL	Lcmcls
;     Locatexy(0,0);
			; SOURCE LINE # 151
	CLR  	A
	MOV  	R5,A
	MOV  	R7,A
	LJMP 	_Locatexy
; END OF Lcminit

; }
; 
; 
; /***************LCD清屏********************/
; void Lcmcls(void)

	RSEG  ?PR?Lcmcls?LCD12864
Lcmcls:
	USING	0
			; SOURCE LINE # 156
; { uchar data i,j;
			; SOURCE LINE # 157
;     for(i=0;i<8;i++){
			; SOURCE LINE # 158
	CLR  	A
	MOV  	i?543,A
?C0011:
;       delay(6);
			; SOURCE LINE # 159
	MOV  	R7,#06H
	MOV  	R6,#00H
	LCALL	_delay
;         for(j=0;j<LIMIT;j++){
			; SOURCE LINE # 160
	CLR  	A
	MOV  	j?544,A
?C0014:
;           delay(6);
			; SOURCE LINE # 161
	MOV  	R7,#06H
	MOV  	R6,#00H
	LCALL	_delay
;           Wrdata(0x55,i,j);
			; SOURCE LINE # 162
	MOV  	R3,j?544
	MOV  	R5,i?543
	MOV  	R7,#055H
	LCALL	_Wrdata
;          }
			; SOURCE LINE # 163
	INC  	j?544
	MOV  	A,j?544
	CLR  	C
	SUBB 	A,#080H
	JC   	?C0014
;      }
			; SOURCE LINE # 164
?C0013:
	INC  	i?543
	MOV  	A,i?543
	CLR  	C
	SUBB 	A,#08H
	JC   	?C0011
; }
			; SOURCE LINE # 165
?C0017:
	RET  	
; END OF Lcmcls

; 
; 
; 
; /**************写左区**************/
; 
; void WrL(uchar x)

	RSEG  ?PR?_WrL?LCD12864
_WrL:
			; SOURCE LINE # 171
;---- Variable 'x?645' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 172
;     //LcdbuzyL();
;    DISABLED;
			; SOURCE LINE # 174
	SETB 	enable
;    WRITE;
			; SOURCE LINE # 175
	SETB 	rdlcd
; 
;    P0=0xFF;//P0口送FF,准备读
			; SOURCE LINE # 177
	MOV  	P0,#0FFH
; 
;    READ;
			; SOURCE LINE # 179
	CLR  	rdlcd
;    lck = 0;
			; SOURCE LINE # 180
	CLR  	lck
;    P1 = 0x96;//ELCD=1,RSTLOW=1(低电平复位无效),R/W=1(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 181
	MOV  	P1,#096H
;    P2 = 0x01;
			; SOURCE LINE # 182
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 183
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 184
	MOV  	P1,#0A1H
;    ENABLED;
			; SOURCE LINE # 185
	CLR  	enable
?C0018:
;    while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
			; SOURCE LINE # 186
	MOV  	A,P0
	JB   	ACC.7,?C0018
?C0019:
;    DISABLED;
			; SOURCE LINE # 187
	SETB 	enable
;    lck = 0;
			; SOURCE LINE # 188
	CLR  	lck
;    P1 = 0x44;//ELCD=0,RSTLOW=1(低电平复位无效),R/W=0(读),CS138=1(无效),CSB=1,CSA=0
			; SOURCE LINE # 189
	MOV  	P1,#044H
;    P2 = 0x01;//避免LCKMOTOR产生上升沿
			; SOURCE LINE # 190
	MOV  	P2,#01H
;    lck = 1;
			; SOURCE LINE # 191
	SETB 	lck
;    P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 192
	MOV  	P1,#0A1H
; 
; 
;     ENABLED;
			; SOURCE LINE # 195
	CLR  	enable
;     WRITE;
			; SOURCE LINE # 196
	SETB 	rdlcd
; 
;     P0 = x;
			; SOURCE LINE # 198
	MOV  	P0,R7
;     lck = 0;
			; SOURCE LINE # 199
	CLR  	lck
;     P1 = 0xc6;//ELCD=1,RSTLOW=1(低电平复位无效),RW = 0(写),CS138无效,CSB=1,CSA=0
			; SOURCE LINE # 200
	MOV  	P1,#0C6H
;     P2 = 0x01;
			; SOURCE LINE # 201
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 202
	SETB 	lck
;     P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 203
	MOV  	P1,#0A1H
; 
;     lck = 0;
			; SOURCE LINE # 205
	CLR  	lck
;     P1 = 0x44;//ELCD=0,RSTLOW=1(低电平复位无效),CS138无效,CSB=0,CSA=0
			; SOURCE LINE # 206
	MOV  	P1,#044H
;     P2 = 0x01;
			; SOURCE LINE # 207
	MOV  	P2,#01H
;     lck = 1;
			; SOURCE LINE # 208
	SETB 	lck
;     P1 = 0xa1;//把PS/2的DATA(P1.7)拉高,非片选USBD12
			; SOURCE LINE # 209
	MOV  	P1,#0A1H
;     DISABLED;
			; SOURCE LINE # 210
	SETB 	enable
; }
			; SOURCE LINE # 211
	RET  	
; END OF _WrL

; 
; /**************写右区**************/
; void WrR(uchar data x)

	RSEG  ?PR?_WrR?LCD12864
_WrR:
			; SOURCE LINE # 214
;---- Variable 'x?746' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 215
;     //LcdbuzyR();
; 
;    DISABLED;
			; SOURCE LINE # 218
	SETB 	enable
;    WRITE;
			; SOURCE LINE # 219
	SETB 	rdlcd
; 
;    P0=0xFF;//P0口送FF,准备读
			; SOURCE LINE # 221
	MOV  	P0,#0FFH
; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -