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

📄 yzx.txt

📁 12864LCD显示控制 可以显示图形和动画
💻 TXT
字号:
RDADD    EQU	8200H
WRDAT    EQU    8100H
WRINS    EQU    8000H
DAT      EQU    30H
COM		 EQU	31H
XPOS	 EQU	32H
YPOS	 EQU	33H
         ORG	0000H
         LJMP	MAIN
         ORG    0050H
;读忙
READ_BUSY:													
		 MOV 	DPTR,#RDADD
		 MOVX	A,@DPTR
		 JB		ACC.7,READ_BUSY
		 RET
;写指令
;参数: COM:要写入的指令

WRITE_INS:
		 LCALL  READ_BUSY
		 MOV	A,COM
		 MOV	DPTR,#WRINS
         MOVX	@DPTR,A
		 RET
;写数据
;参数: DAT:要写入的数据

WRITE_DATA:
		 LCALL  READ_BUSY
		 MOV	A,DAT
		 MOV	DPTR,#WRDAT
         MOVX	@DPTR,A
		 RET
;初始化LCD
LCD_INIT:
         MOV	COM,#0C0H   ;设置起始行
        CLR    P1.6            
		 LCALL	WRITE_INS
		 SETB    P1.6
		 LCALL	WRITE_INS
		 MOV	COM,#3FH	  ;开显示
		 CLR    P1.6            
		 LCALL	WRITE_INS
		 SETB    P1.6
		 LCALL	WRITE_INS
;清屏,向所有的显示RAM里全部写零		 
CLEAR_LCD:					  
         MOV	R7,#0B8H	   ;设置页
		 MOV	DAT,#0		   
CLEAR2:	 MOV	COM,#40H
         clr    p1.6	   
		 LCALL	WRITE_INS
		 setb   p1.6
		 LCALL  WRITE_INS
		 MOV	COM,R7
		 clr    p1.6	   
		 LCALL	WRITE_INS
		 setb   p1.6
		 LCALL  WRITE_INS
		 MOV	R6,#64
CLEAR1:	 clr   p1.6	   
		 LCALL	WRITE_DATA
		 setb   p1.6
		 LCALL  WRITE_DATA
		 DJNZ   R6,CLEAR1
		 INC	R7
		 CJNE	R7,#0C0H,CLEAR2
		 RET
;写N个汉字
;参数: DPTR     :放入要显示的汉字所在代码空间的地址
;      XPOS,YPOS:要显示的字符的起始位置(X<64,Y<8)
;      R5       :要显示的字的个数(R5<4)         
WRITE_CHINESE0:					;在左屏写汉字
         	MOV		R7,#0
W_CH02:  	PUSH   	DPL
		 	PUSH   	DPH
		 	MOV		COM,XPOS
		 	CLR    P1.6
		 	LCALL	WRITE_INS
		 	MOV		COM,YPOS
		 	CLR      P1.6
		 	LCALL  	WRITE_INS
		 	POP    	DPH
		 	POP    	DPL
	     	MOV		R6,#16
W_CH01:	 	MOV		A,#0
		 	MOVC	A,@A+DPTR
		 	PUSH   	DPL
		 	PUSH   	DPH
		 	MOV		DAT,A
		 	CLR P1.6
		 	LCALL	WRITE_DATA
		 	POP    	DPH
		 	POP    	DPL
		 	INC    	DPTR
		 	INC		R7
			DJNZ	R6,W_CH01		   ;写完半个字
		 	INC    	YPOS
		 	CJNE	R7,#32,W_CH02	   ;写完一个字
		 	DEC		YPOS
		 	DEC		YPOS
		 	MOV		A,XPOS
		 	ADD		A,#16
		 	MOV		XPOS,A
		 	DJNZ	R5,WRITE_CHINESE0  ;是否写完所有的字
		 	RET
WRITE_CHINESE1:					 	   ;在右屏写汉字
        	MOV		R7,#0
W_CH12:  	PUSH   	DPL
		 	PUSH   	DPH
		 	MOV		COM,XPOS
		    SETB    P1.6
		 	LCALL	WRITE_INS
		 	MOV		COM,YPOS
		 	SETB  P1.6
		 	LCALL  	WRITE_INS
		 	POP    	DPH
		 	POP   	DPL
	     	MOV		R6,#16
W_CH11:	 	MOV		A,#0
		 	MOVC	A,@A+DPTR
		 	PUSH   	DPL
		 	PUSH   	DPH
		 	MOV		DAT,A
		 	SETB P1.6
		 	LCALL	WRITE_DATA
		 	POP    	DPH
		 	POP    	DPL
		 	INC    	DPTR
		 	INC		R7
		 	DJNZ	R6,W_CH11		   ;写完半个字
		 	INC    	YPOS
		 	CJNE	R7,#32,W_CH12	   ;写完一个字
		 	DEC		YPOS
		 	DEC		YPOS
		 	MOV		A,XPOS
		 	ADD		A,#16
		 	MOV		XPOS,A
		 	DJNZ	R5,WRITE_CHINESE1  ;是否写完所有的字
		 	RET
DELAY:      MOV		R3,#0
DL1:       	MOV		R4,#0
           	DJNZ	R4,$
           	DJNZ	R3,DL1
           	RET
MAIN:       
            LCALL	LCD_INIT
RDKEY:      MOV     A,P1
            ORL		A,#0C0H
            PUSH    ACC
            CPL		A
            JZ		RDKEY
            POP		ACC
            JNB		ACC.0,QINGP
            JNB		ACC.1,HYGL
            ;JNB		ACC.2,QINGP
            JNB		ACC.3,GUNDONG
            JNB		ACC.4,WSMN
            ;JNB		ACC.5,QINGP
            JMP		RDKEY
QINGP:		
     		LCALL   LCD_INIT
     		JMP		RDKEY
            
HYGL:            
            MOV		XPOS,#40H
            MOV		YPOS,#0B8H
            MOV		DPTR,#CH_TAB0
            MOV		R5,#3
            LCALL   WRITE_CHINESE0
			JMP		RDKEY
GUNDONG:    
		     MOV		R7,#0FFH
			MOV		R5,#0C0H
			MOV		R6,#64
G1:			MOV		COM,R7
            CLR   P1.6
			LCALL	WRITE_INS
			MOV		COM,R5
			SETB   P1.6
			LCALL	WRITE_INS
			INC		R5
			DEC		R7
			LCALL	DELAY
			DJNZ	R6,G1
			JMP		RDKEY
WSMN:     
			MOV		XPOS,#40H
			MOV		YPOS,#0BCH
			MOV		DPTR,#CH_TAB1
			MOV		R5,#3
			LCALL	WRITE_CHINESE0
			MOV		XPOS,#40H
			MOV		YPOS,#0BCH
			MOV		DPTR,#CH_TAB2
			MOV		R5,#3
			LCALL	WRITE_CHINESE1
			JMP		RDKEY

CH_TAB0:;--  文字:  杨  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  08H,08H,0C8H,0FFH,48H,88H,0AH,42H,62H,0D2H,4AH,0C6H,42H,0C0H,00H,00H
DB  04H,03H,00H,0FFH,00H,01H,08H,24H,13H,08H,06H,41H,80H,7FH,00H,00H

;--  文字:  志  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,08H,48H,48H,48H,48H,48H,7FH,48H,48H,48H,48H,48H,48H,08H,00H
DB  20H,1CH,00H,00H,3EH,40H,40H,41H,4EH,44H,40H,70H,22H,1CH,08H,00H

;--  文字:  兴  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,82H,8CH,0B8H,90H,82H,8CH,0B8H,90H,80H,0C0H,0B0H,9EH,84H,80H,00H
DB  40H,20H,10H,18H,0EH,04H,00H,00H,00H,02H,04H,18H,70H,20H,00H,00H

CH_TAB1:;--  文字:  二  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,04H,04H,04H,04H,04H,04H,04H,04H,04H,06H,04H,00H,00H,00H
DB  00H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,18H,10H,00H

;--  文字:  班  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  42H,42H,0FEH,42H,42H,0E0H,00H,0FFH,00H,42H,42H,0FEH,42H,42H,42H,00H
DB  10H,10H,0FH,88H,49H,20H,18H,07H,20H,20H,20H,3FH,20H,20H,20H,00H

;--  文字:     --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

;--  文字:     --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

CH_TAB2:;--  文字:  3  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,30H,08H,88H,88H,48H,30H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,18H,20H,20H,20H,11H,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H

;--  文字:  5  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  00H,0F8H,08H,88H,88H,08H,08H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB  00H,19H,21H,20H,20H,11H,0EH,00H,00H,00H,00H,00H,00H,00H,00H,00H

;--  文字:  号  --
;--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --
DB  40H,40H,40H,5FH,0D1H,51H,51H,51H,51H,51H,51H,5FH,40H,40H,40H,00H
DB  00H,00H,00H,02H,07H,02H,02H,22H,42H,82H,42H,3EH,00H,00H,00H,00H

 END         		

⌨️ 快捷键说明

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