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

📄 jzd12864j-02.asm

📁 液晶模块12864字库ST7920液晶显示模块LCM的的测试程序
💻 ASM
字号:
 ;深圳金泽迪液显科技有限公司的12864串并口兼容字库模块
;www.jzdlcd.cn 咨询0755 25452337
;Controller:ST7920  MCU:AT89C52 12.0MHz
 ;字模取模方式:横向取模
 ;文件名:JZD12864J-02.asm
 ;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7	 15:PSB 16:NC 17:RST 18:Vout 
RS      EQU   P3.3
RW      EQU   P3.4
E       EQU   P3.5
PSB     EQU   P3.0
RST     EQU   P3.6

COM     EQU   20H
DAT     EQU   21H 
X       EQU   30H
Y       EQU   31H 
Z       EQU   32H  
SC      EQU   33H
W       EQU   34H
 
        ORG	0000H
        MOV	SP,#60H
	LJMP    DISP
	ORG	0040H

DISP:   CLR     PSB 
        LCALL   DELAY 
     	SETB    PSB

        LCALL   DELAY	        
        MOV     COM,#30H           ;功能设置
        ACALL   WRI     	       ;写指令
        
        LCALL   DELAY              ;延迟

        MOV     COM,#0CH           ;显示开/关控制  
        ACALL	WRI		           ;写指令

        LCALL   DELAY              ;延迟

        MOV	COM,#01H               ;清屏
        ACALL   WRI                ;写指令

        LCALL   DELAY              ;延迟 

	MOV     COM,#06H               ;输入方式设置
        ACALL   WRI		           ;写指令
        
AGAIN:
    MOV	COM,#01H                   ;清屏
    ACALL   WRI                    ;写指令

    LCALL DEF_CHAR

    MOV  COM,#80H
    LCALL WRI
    MOV  R3,#10

    MOV	COM,#01H                  ;清屏
    LCALL   WRI                   ;写指令

    MOV  COM,#80H
    LCALL WRI
    MOV  R3,#10
TEST11:MOV  DPTR,#CGRAM1   ;CGRAM TEST           ;隔行
    LCALL WRITE_CGRAM
    DJNZ R3,TEST11

    MOV  COM,#90H
    LCALL WRI
    MOV  R3,#10
TEST12:
    MOV  DPTR,#CGRAM1
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST12

    MOV  COM,#88H
    LCALL WRI
    MOV  R3,#10
TEST13:
    MOV  DPTR,#CGRAM1
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST13

    MOV  COM,#98H
    LCALL WRI
    MOV  R3,#10
TEST14:
    MOV  DPTR,#CGRAM1
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST14
    LCALL   DELAY1
    JNB      P3.7,$    
;******************************************************************************
    MOV	COM,#01H           ;清屏
    ACALL   WRI                ;写指令
;******************************************************************************
    MOV  COM,#80H                                ;隔列
    LCALL WRI
    MOV  R3,#10
TEST21:MOV  DPTR,#CGRAM2
    LCALL WRITE_CGRAM
    DJNZ R3,TEST21

    MOV  COM,#90H
    LCALL WRI
    MOV  R3,#10
TEST22:MOV  DPTR,#CGRAM2
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST22

    MOV  COM,#88H
    LCALL WRI
    MOV  R3,#10
TEST23:MOV  DPTR,#CGRAM2
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST23

    MOV  COM,#98H
    LCALL WRI
    MOV  R3,#10
TEST24:MOV  DPTR,#CGRAM2
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST24
    LCALL   DELAY1
    JNB      P3.7,$

;******************************************************************************
    MOV  COM,#80H                                ;全黑
    LCALL WRI
    MOV  R3,#10
TEST31:MOV  DPTR,#CGRAM3
    LCALL WRITE_CGRAM
    DJNZ R3,TEST31

    MOV  COM,#90H
    LCALL WRI
    MOV  R3,#10
TEST32:MOV  DPTR,#CGRAM3
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST32

    MOV  COM,#88H
    LCALL WRI
    MOV  R3,#10
TEST33:MOV  DPTR,#CGRAM3
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST33

    MOV  COM,#98H
    LCALL WRI
    MOV  R3,#10
TEST34:MOV  DPTR,#CGRAM3
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST34
    LCALL   DELAY1
    JNB      P3.7,$                     
;******************************************************************  ;全白
    MOV	COM,#01H           ;清屏
    LCALL   WRI              ;写指令

    LCALL   DELAY1
    JNB      P3.7,$

;******************************************************************;雪花
    MOV  COM,#80H                                                   
    LCALL WRI
    MOV  R3,#10
TEST41:MOV  DPTR,#CGRAM4
    LCALL WRITE_CGRAM
    DJNZ R3,TEST41

    MOV  COM,#90H
    LCALL WRI
    MOV  R3,#10
TEST42:MOV  DPTR,#CGRAM4
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST42

    MOV  COM,#88H
    LCALL WRI
    MOV  R3,#10
TEST43:MOV  DPTR,#CGRAM4
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST43

    MOV  COM,#98H
    LCALL WRI
    MOV  R3,#10
TEST44:MOV  DPTR,#CGRAM4
    LCALL WRITE_CGRAM
    DJNZ  R3,TEST44
    LCALL   DELAY1
    JNB      P3.7,$

;******************************************************************;显示月
NEXT1:  MOV     R4,#10             ;递增16次                
        MOV     COM,#80H           ;设置DDRAM的地址/第一行的起始地址         
        ACALL   WRI     
DEMO10: MOV     A,#0D4H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        MOV     A,#0C2H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
    	DJNZ    R4,DEMO10           ;循环24次,不够16次跳到DEMO1继续执行    	

        MOV     R4,#010
        MOV     COM,#090H          ;设置DDRAM的地址/第二行的起始地址       
        ACALL   WRI        
DEMO20: MOV     A,#0D4H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        MOV     A,#0C2H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        DJNZ    R4,DEMO20           ;循环24次,不够24次跳到DEMO4继续执行

        MOV     R4,#010
        MOV     COM,#88H          ;设置DDRAM的地址/第二行的起始地址
        ACALL   WRI
DEMO30: MOV     A,#0D4H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        MOV     A,#0C2H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        DJNZ    R4,DEMO30           ;循环24次,不够24次跳到DEMO4继续执行

        MOV     R4,#010
        MOV     COM,#098H          ;设置DDRAM的地址/第二行的起始地址
        ACALL   WRI
DEMO40: MOV     A,#0D4H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        MOV     A,#0C2H
        MOV     DAT,A
        LCALL   WRD                ;写显示数据
        DJNZ    R4,DEMO40           ;循环24次,不够24次跳到DEMO4继续执行
	        
   	 LCALL   DELAY1
     
        JNB      P3.7,$

        MOV	COM,#01H           ;清屏
        ACALL   WRI                ;写指令


    MOV  R4,#8
    MOV  R5,#32
    MOV  X,#80H
    MOV  Y,#80H
    MOV  DPTR,#PIC                                     ;PIC

    ;LCALL CLEAR_GRAPHIC
        
WRGDRAM2:
    MOV  COM,#34H                                      ;关闭绘图显示功能
    LCALL WRI   
    
    LCALL GDRAMADD                                     ;分别写入纵坐标、横坐标 Y,X
    
    MOV  COM,#30H                                      ;打开ST7920基本指令 
    LCALL WRI  
 
WRGDRAM21:                                             ;连送两次数据:D15-D8,D7-D0
    MOV	  A,#00
    MOVC  A,@A+DPTR
    MOV   DAT,A
    LCALL WRD

    INC   DPTR

    MOV	  A,#00
    MOVC  A,@A+DPTR
    MOV   DAT,A
    LCALL WRD

    INC   DPTR

    INC   X                                             ;X轴光标递增 1
    DJNZ  R4,WRGDRAM2                                   ;一直送8次,即8*16=128 bits

    MOV   R4,#8                                         ;显示完第一行,即8*16=128 bits,置光标回第二行的首地址
    MOV  X,#80H
    INC  Y                                              ;Y变为第二行的坐标值
    LCALL GDRAMADD
    DJNZ  R5,WRGDRAM2                                   ;一共送32行,即显示完上半屏:128*32


    MOV  COM,#36H                                       ;打开绘图显示功能,写入GDRAM
    LCALL WRI  



    MOV  R4,#8                                           ;显示下半屏:128*32,其他一样,但X的初值为:88H                                    
    MOV  R5,#32                                          ;其它一样
    MOV  X,#88H
    MOV  Y,#80H
        
WRGDRAM22:
    MOV  COM,#34H
    LCALL WRI   
    
    LCALL GDRAMADD
    
    MOV  COM,#30H
    LCALL WRI  
 
WRGDRAM23:
    MOV	  A,#00
    MOVC  A,@A+DPTR
    MOV   DAT,A
    LCALL WRD

    INC   DPTR

    MOV	  A,#00
    MOVC  A,@A+DPTR
    MOV   DAT,A
    LCALL WRD

    INC   DPTR

    INC   X
    DJNZ  R4,WRGDRAM22

    MOV   R4,#8
    MOV  X,#88H
    INC  Y
    LCALL GDRAMADD
    DJNZ  R5,WRGDRAM22


    MOV  COM,#36H
    LCALL WRI    

    LCALL DELAY1

    JNB    P3.7,$    
 
    LCALL   DELAY
    MOV     COM,#30H           ;功能设置
    ACALL   WRI     	   ;写指令
        
    LCALL   DELAY              ;延迟39uS

    MOV     COM,#0CH           ;显示开/关控制
    ACALL	WRI		   ;写指令

    LCALL   DELAY              ;延迟39uS

    MOV	COM,#01H           ;清屏
    ACALL   WRI                ;写指令

    LCALL   DELAY              ;延迟39uS

    MOV     COM,#06H           ;输入方式设置
    ACALL   WRI		   ;写指令

    LJMP   AGAIN



CLEAR_GRAPHIC:
    MOV  R4,#16
    MOV  R5,#32

        MOV Y, #80H
        MOV X, #80H

CLR_GRAPHIC1:
        MOV COM, #34H
        LCALL WRI

        LCALL GDRAMADD

CLR_GRAPHIC2:
        MOV   COM, #30H
        LCALL WRI

        MOV	DAT,#00H
        LCALL WRD
        MOV	DAT,#00H
        LCALL WRD
        INC    X
        DJNZ  R4,CLR_GRAPHIC1

        MOV X, #80H
        INC Y

        LCALL GDRAMADD


        DJNZ  R5,CLR_GRAPHIC1

        MOV COM, #36H
        LCALL WRI

        RET


DEF_CHAR:           ;WRITE TO CGRAM
    MOV  COM,#01000000B   ;SET CGRAM ADDRESS
    LCALL WRI 
    MOV  R3,#8

DEF1:MOV  DAT,#000H
    LCALL WRD
    LCALL WRD

    MOV  DAT,#0FFH
    LCALL WRD
    LCALL WRD

    DJNZ R3,DEF1
    MOV  R3,#8

DEF2:MOV  DAT,#0AAH
    LCALL WRD
    LCALL WRD

    MOV  DAT,#0AAH
    LCALL WRD
    LCALL WRD
    DJNZ R3,DEF2
    MOV  R3,#8

DEF3:MOV  DAT,#0FFH
    LCALL WRD
    LCALL WRD

    MOV  DAT,#0FFH
    LCALL WRD
    LCALL WRD
    DJNZ R3,DEF3

    MOV  R3,#8

DEF4:MOV  DAT,#0AAH
    LCALL WRD
    LCALL WRD

    MOV  DAT,#055H
    LCALL WRD
    LCALL WRD

    DJNZ R3,DEF4
    MOV  R3,#8
    RET


WRITE_CGRAM:        ;CGRAM TESTING

        CLR  A
        MOVC A,@A+DPTR
	MOV  DAT,A
        LCALL WRD

        INC  DPTR
        CLR  A
        MOVC A,@A+DPTR
	MOV  DAT,A
        LCALL WRD

        RET

WRI:    PUSH    ACC
        CLR     RS                 
        SETB    RW                
WRI1:   MOV     P1,#0FFH
        SETB    E              
        MOV     A,P1            
        CLR     E              
        JB      ACC.7,WRI1
        CLR     RW 
        MOV     P1,COM
        SETB    E
        CLR     E
        POP     ACC
        RET

WRD:    PUSH    ACC
        CLR     RS        
        SETB    RW        
WRD1:   MOV     P1,#0FFH
        SETB    E
        MOV     A,P1
        CLR     E
        JB      ACC.7,WRD1
        SETB    RS            
        CLR     RW            
        MOV     P1,DAT
        SETB    E             
        CLR     E             
        POP     ACC
        RET

GDRAMADD:
    MOV  COM,Y
    LCALL WRI

    MOV  COM,X
    LCALL WRI
    RET
SCROLL:
    MOV   COM,SC
    LCALL WRI
    RET

DELAY:  MOV     R7,#0FFH   ;06D
DELAY4: MOV	    R6,#00FH   ;07D
LOOP2:  DJNZ	R6,LOOP2
        DJNZ    R7,DELAY4
        RET
DELAY1: MOV     R4,#08
DELAY11:MOV     R7,#0FFH   ;06D
DELAY41:MOV	    R6,#0FFH   ;07D
        DJNZ	R6,$
        DJNZ    R7,DELAY41
    	DJNZ    R4,DELAY11
        RET
XX:     MOV     R5,#0FFH  
XX1:    MOV	    R6,#0FFH  
XX2:    DJNZ	R6,XX2
        DJNZ        R5,XX1
        RET

CGRAM1: DB 000H,000H       ;这里是自造字符地址表 
CGRAM2: DB 000H,002H
CGRAM3: DB 000H,004H
CGRAM4: DB 000H,006H

PIC:;用户自行填写代码
  END


	

⌨️ 快捷键说明

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