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

📄 lcd.txt

📁 有用的单片机程序,包括8279和E2ROM的读写
💻 TXT
📖 第 1 页 / 共 2 页
字号:
XPOS    EQU     20H             ;列方向地址指针(用于LCDPOS子程序)
YPOS    EQU     21H             ;行方向地址指针(用于LCDPOS子程序)
RWADDR          EQU     0800H   ;P2.3
CS1ADDR		EQU	0200H	;P2.2	
CS2ADDR		EQU	0400H	;P2.1
RSADDR		EQU	0100H	;P2.0
CSADDR		EQU	8000H	;P2.7


ORG 0000H
SJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI

ORG 0040H
START:
         MOV SP,#60H
         LCALL    LCDRESET
         MOV A,#00h
         LCALL LCDFILL
        LCALL LCDINIT 
         LCALL LCDRESET
        MOV A,#00h
        LCALL LCDFILL
        
MAIN:   
        
        MOV A,#00h
         LCALL LCDFILL
        
         MOV A,#01H
         LCALL	LCDLINE
         LCALL LCDSIN
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         
         LJMP MAIN
LCDINIT: 
         LCALL  LCDRESET
         MOV A,#00h
         LCALL LCDFILL      
         LCALL LCDRESET
         MOV DPTR,#STRING1
         MOV XPOS,#30
         MOV YPOS,#0
         LCALL	PUTSTR
         MOV XPOS,#10
         MOV YPOS,#3
         LCALL	PUTSTR
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         MOV A,#00h
         LCALL LCDFILL 
         MOV XPOS,#0
         MOV YPOS,#0
         LCALL	PUTSTR
         MOV XPOS,#80
         MOV YPOS,#2
         LCALL	PUTSTR
        
         MOV XPOS,#80
         MOV YPOS,#4
         LCALL	PUTSTR
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         MOV A,#00h
         LCALL LCDFILL 
         
        MOV XPOS,#0
        MOV YPOS,#6
        LCALL	PUTSTR
        MOV XPOS,#80
        MOV YPOS,#2
        LCALL PUTSTR
        LCALL DELAY11
        LCALL DELAY11
        LCALL DELAY11
        
        
         MOV XPOS,#80
         MOV YPOS,#0
         LCALL	PUTSTR
          MOV A,#00h
         LCALL LCDFILL
         MOV XPOS,#0
         MOV YPOS,#3
         LCALL	PUTSTR
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
        
         MOV A,#00h
         LCALL LCDFILL
         MOV XPOS,#0
         MOV YPOS,#0
         LCALL	PUTSTR
      
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         LCALL DELAY11
         ret    
GETSTRCHAR:        
GSC_PA:	
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	MOV	B,A
	INC	A
	CLR	C
	JZ	GSC_LAX
	CLR	A
	MOVC	A,@A+DPTR
	INC	DPTR
	SETB	C
GSC_LAX:	
	RET
PUTSTR:
	CALL    LCDRESET
	CALL	DELAY
	CALL	GETSTRCHAR
	PUSH	DPL
	PUSH	DPH
	JNC	PSR_LAX
	JNB	B.7,PSR_LBY
;CHINESE:
	CALL	HZKPOS
	CALL	PUTCHARDOT
	CALL	PUTCHARDOT
	JMP	PSR_LBX
PSR_LBY:
;ENGLISH:
	CALL	HZKPOS
	CALL	PUTCHARDOT
PSR_LBX:
	POP	DPH
	POP	DPL
	JMP	PUTSTR
PSR_LAX:POP	DPH
	POP	DPL	
	RET
HZKPOS:
	MOV	R2,#5
HTP_PA:	
	CLR	C
	RLC	A
	XCH	A,B
	RLC	A
	XCH	A,B
	DJNZ	R2,HTP_PA
	
	MOV	DPTR,#HZKDOT
	ADD	A,DPL
	MOV	DPL,A
	MOV	A,B
	ADDC	A,DPH
	MOV	DPH,A
	RET	
DELAY:
	MOV	R6,#2
DLY_PA:	MOV	R5,#0
DLY_PB:	MOV	R4,#0

	DJNZ	R4,$
	DJNZ	R5,DLY_PB
	DJNZ	R6,DLY_PA
	RET        
LCDFILL:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        LCALL    LCDWRITE        ;定位并写数据
        INC     XPOS
        MOV     A,XPOS
        CJNE    A,#128,LFL_PA   ;XPOS<128则循环(128列)
        INC     YPOS
        MOV     A,YPOS
        CJNE    A,#8,LFL_PB     ;YPOS<8则循环(8页)
        MOV     XPOS,#0
        MOV     YPOS,#0
        RET


LCDLINE:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#4
        MOV     XPOS,#40
LFL_PA1: MOV     A,R7
        LCALL    LCDWRITE        ;定位并写数据
        INC     XPOS
        MOV     A,XPOS
        CJNE    A,#128,LFL_PA1   ;XPOS<128则循环(128列)
       
        MOV     XPOS,#0
        MOV     YPOS,#0
        RET        
 
 
LCDSIN:                        ;LCD整屏显示A的内容
        PUSH   0
       
        MOV R0,#00H
        MOV XPOS,#40
        MOV YPOS,#0
LFL_PA11: CJNE R0,#255,XIA1
         
          MOV R0,#00H
 XIA1:      MOV DPTR,#SIN
        MOV A,R0
        MOVC A,@A+DPTR
        MOV B,A
        CLR C
        SUBB A,#224
        JC COM192
        MOV YPOS,#7
        LCALL COM_A
        
        LJMP LCD_END
 COM192:MOV A,B
        CLR C
        SUBB A,#192
        JC COM160
        MOV YPOS,#6
        LCALL COM_A
       
        LJMP LCD_END    
 COM160:MOV A,B
        CLR C
        SUBB A,#160
        JC COM128
        MOV YPOS,#5
        LCALL COM_A
       
        LJMP LCD_END  
 COM128:MOV A,B
        CLR C
        SUBB A,#128
        JC COM96
        MOV YPOS,#4
        LCALL COM_A
       
        LJMP LCD_END  
 COM96:MOV A,B
        CLR C
        SUBB A,#96
        JC COM64
        MOV YPOS,#3
        LCALL COM_A
       
        LJMP LCD_END  
 COM64: MOV A,B
        CLR C
        SUBB A,#64
        JC COM32
        MOV YPOS,#2
        LCALL COM_A
       
        LJMP LCD_END
 COM32: MOV A,B
        CLR C
        SUBB A,#32
        JC COM0
        MOV YPOS,#1
        LCALL COM_A
        
        LJMP LCD_END           
 COM0 : MOV A,B
        CLR C
        MOV YPOS,#0
        LCALL COM_A
       
LCD_END:
        LCALL    LCDWRITE        ;定位并写数据
        INC     XPOS
        MOV     A,XPOS
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        INC R0
        SUBB   A,#128   ;XPOS<128则循环(128列)
        JNC XIA
        LJMP LFL_PA11
 XIA:   MOV     XPOS,#0
        MOV     YPOS,#0
        RET                
 
 COM_A:    PUSH 1
           MOV R1,A
           CLR C
          SUBB A,#80H
           JC COM40H
           MOV A,#0E0H
           LJMP COM_END
           
 COM40H:  MOV A,R1
          CLR C
           SUBB A,#40H
           JC COM20H
           MOV A,#70H
           LJMP COM_END 
 
 COM20H:   MOV A,R1
           CLR C
           SUBB A,#20H
           JC COM10H
           MOV A,#38H
           LJMP COM_END           
 
 COM10H:   MOV A,R1
           CLR C
           SUBB A,#10H
           JC COM08H
           MOV A,#1CH
           LJMP COM_END 
 COM08H:   MOV A,R1
           CLR C
           SUBB A,#08H
           JC COM04H
           MOV A,#0EH
           LJMP COM_END 
 COM04H:   MOV A,R1
           CLR C
           SUBB A,#04H
           JC COM02H
           MOV A,#07H
           LJMP COM_END 
 COM02H:   MOV A,R1
           CLR C
           SUBB A,#02H
           JC COM01H
           MOV A,#03H
           LJMP COM_END 
 COM01H:    MOV A,#01H
  COM_END:POP 1
  RET              
       
       
 COM_A1:    PUSH 1
           MOV R1,A
           CLR C
          SUBB A,#28
           JC COM40H1
           MOV A,#01H
           LJMP COM_END1
           
 COM40H1:  MOV A,R1
          CLR C
           SUBB A,#24
           JC COM20H1
           MOV A,#02H
           LJMP COM_END1 
 
 COM20H1:   MOV A,R1
           CLR C
           SUBB A,#20
           JC COM10H1
           MOV A,#01H
           LJMP COM_END1           
 
 COM10H1:   MOV A,R1
           CLR C
           SUBB A,#16
           JC COM08H1
           MOV A,#08H
           LJMP COM_END1 
 COM08H1:   MOV A,R1
           CLR C
           SUBB A,#12
           JC COM04H1
           MOV A,#10H
           LJMP COM_END1 
 COM04H1:   MOV A,R1
           CLR C
           SUBB A,#8
           JC COM02H1
           MOV A,#20H
           LJMP COM_END1 
 COM02H1:   MOV A,R1
           CLR C
           SUBB A,#4
           JC COM01H1
           MOV A,#40H
           LJMP COM_END1 
 COM01H1:    MOV A,#80H
  COM_END1:POP 1
  RET              
            
        
LCDWRITE:                    ;定位并写数据子程序
        LCALL    LCDPOS       ;内部写数指针定位
        LCALL    LCDWD        ;写数据
        RET
LCDPOS:                      ;内部写数指针定位子程序
        PUSH    ACC
        MOV     A,XPOS
        JB      ACC.6,LPS_LAY
        MOV     A,YPOS       ;XPOS列方向小于64则对CS1操作
        ANL     A,#07H
        ADD     A,#0B8H
        CALL    LCDWC1       ;设页码
        MOV     A,XPOS
        ANL     A,#3FH
        ORL     A,#40H
        CALL    LCDWC1       ;设列码
        JMP     LPS_LAX
LPS_LAY:MOV     A,YPOS       ;XPOS列方向大于等于64则对CS2操作
        ANL     A,#07H
        ADD     A,#0B8H
        CALL    LCDWC2       ;设页码
        MOV     A,XPOS
        ANL     A,#3FH
        ORL     A,#40H
        CALL    LCDWC2       ;设列码

⌨️ 快捷键说明

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