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

📄 wg12864a.asm

📁 12864LCM的应用实例
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;******************************************************************************
;               KS0107,KS0108
;******************************************************************************
                .SYMBOLS
;******************************************************************************
;          DEFINE  OUTPUT PORORT
;******************************************************************************
RS              REG     P3.0
E               REG     P3.4
RES             REG     P3.2
CS1             REG     P3.3
CS2             REG     P3.5
R_W             REG     P3.7
STP             REG     P2.0
S_S             REG     P2.1
BCD             EQU     01H
;******************************************************************************
                ORG     0H
                LJMP    START
                ORG     50H
START:                                          ;program reset start here

                                                ;INITIAL
                MOV     A,#40H                  ;Set Y Column Address >From 0
                LCALL   WRITE_COMMAND1
                LCALL   WRITE_COMMAND2

                MOV     A,#B8H                  ;Set Page From 0
                LCALL   WRITE_COMMAND1
                LCALL   WRITE_COMMAND2

                MOV     A,#C0H                  ;Set Display Start Line
                LCALL   WRITE_COMMAND1
                LCALL   WRITE_COMMAND2

                MOV     A,#3FH                  ;Set Display ON
                LCALL   WRITE_COMMAND1
                LCALL   WRITE_COMMAND2

;******************************************************************************
;               FULL ON
;******************************************************************************
FULL_ON:
                MOV     R0,#0
                MOV     R1,#0
FOLOOP1:
                MOV     A,R1                    ;Set Page Address FROM 00H
                ORL     A,#B8H                  ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
FOLOOP2:                                        ;Write Data To Chip I
                MOV     A,#FFH
                CALL    WRITE_DATA1
                INC     R0
                CJNE    R0,#64,FOLOOP2

FOLOOP3:                                        ;Write Data To Chip II
                MOV     A,#FFH
                CALL    WRITE_DATA2
                INC     R0
                CJNE    R0,#128,FOLOOP3

                INC     R1
                CJNE    R1,#8,FOLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                SJMP    SHOWM

;******************************************************************************
;               SHOW MODEL
;******************************************************************************
SHOWM:
                MOV     R0,#0
                MOV     R1,#0
                MOV     DPTR,#SHOW_WG
SMLOOP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
SMLOOP2:                                        ;Write Data To Chip I
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA1
                INC     R0
                INC     DPTR
                CJNE    R0,#64,SMLOOP2

SMLOOP3:                                        ;Write Data To Chip II
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA2
                INC     R0
                INC     DPTR
                CJNE    R0,#128,SMLOOP3

                INC     R1
                CJNE    R1,#8,SMLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                SJMP    VLINE
;******************************************************************************
;               VERTIAL LINE
;******************************************************************************
VLINE:
                MOV     R0,#0
                MOV     R1,#0
VLLOOP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
VLLOOP2:                                       ;Write Data To Chip I
                MOV     A,#FFH
                CALL    WRITE_DATA1
                INC     R0
                MOV     A,#00H
                CALL    WRITE_DATA1
                INC     R0
                CJNE    R0,#64,VLLOOP2

VLLOOP3:                                        ;Write Data To Chip II
                MOV     A,#FFH
                CALL    WRITE_DATA2
                INC     R0
                MOV     A,#00H
                CALL    WRITE_DATA2
                INC     R0
                CJNE    R0,#128,VLLOOP3

                INC     R1
                CJNE    R1,#8,VLLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                SJMP    HLINE
;******************************************************************************
;               HORIZONTAL LINE
;******************************************************************************
HLINE:
                MOV     R0,#0
                MOV     R1,#0
HLLOOP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
HLLOOP2:                                       ;Write Data To Chip I
                MOV     A,#AAH
                CALL    WRITE_DATA1
                INC     R0
                CJNE    R0,#64,HLLOOP2

HLLOOP3:                                        ;Write Data To Chip II
                MOV     A,#AAH
                CALL    WRITE_DATA2
                INC     R0
                CJNE    R0,#128,HLLOOP3

                INC     R1
                CJNE    R1,#8,HLLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                SJMP    CROSS_DOT
;******************************************************************************
;               CROSS DOT
;******************************************************************************
CROSS_DOT:
                MOV     R0,#0
                MOV     R1,#0
CDLOOP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
CDLOOP2:                                       ;Write Data To Chip I
                MOV     A,#AAH
                CALL    WRITE_DATA1
                INC     R0
                MOV     A,#55H
                CALL    WRITE_DATA1
                INC     R0
                CJNE    R0,#64,CDLOOP2

CDLOOP3:                                        ;Write Data To Chip II
                MOV     A,#AAH
                CALL    WRITE_DATA2
                INC     R0
                MOV     A,#55H
                CALL    WRITE_DATA2
                INC     R0
                CJNE    R0,#128,CDLOOP3

                INC     R1
                CJNE    R1,#8,CDLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                SJMP    SHOWC

;******************************************************************************
;               SHOW CHARACTER
;******************************************************************************
SHOWC:
                MOV     R0,#0
                MOV     R1,#0
                MOV     DPTR,#SHOW_CH
SCLOOP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BFH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                MOV     A,#40H                  ;Set Column Address FROM 40H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2

                MOV     R0,#0                   ;Rest Counter
SCLOOP2:                                        ;Write Data To Chip I
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA1
                INC     R0
                INC     DPTR
                CJNE    R0,#64,SCLOOP2

SCLOOP3:                                        ;Write Data To Chip II
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA2
                INC     R0
                INC     DPTR
                CJNE    R0,#128,SCLOOP3

                INC     R1
                CJNE    R1,#8,SCLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                LJMP    START                   ;repeat test

;******************************************************************************
CHK_BUSY:
                MOV     P1,#0FFH                ;SET PORT1=INPUT
                CLR     RS                      ;SET IR  MODE RS=0
                SETB    R_W                     ;SET READ MODE R/W=1
                SETB    E                       ;ENABLE LCM
                MOV     C,P1.7                  ;CHECK BUSY FLAGE(BIT7)
                CLR     E
                JC      CHK_BUSY
                RET

;******************************************************************************
;               DELAY
;******************************************************************************
DELAY:
                CALL    CBCD
                MOV     R4,BCD
LOPC:
                MOV     R5,#2FH
LOPB:
                MOV     R6,#0FFH
LOPA:
                DJNZ    R6,LOPA
                DJNZ    R5,LOPB
                DJNZ    R4,LOPC
                RET
;******************************************************************************
WRITE_COMMAND1:                                 ;Write Command To CS1
                CLR     CS2
                SETB    CS1
                CLR     RS
                CLR     R_W
                MOV     P1,A
                SETB    E
                NOP
                CLR     E
                RET
;******************************************************************************
WRITE_DATA1:                                    ;Write Data To CS1
                CLR     CS2
                SETB    CS1
                SETB    RS
                CLR     R_W
                MOV     P1,A
                SETB    E
                NOP
                CLR     E
                RET
;******************************************************************************
WRITE_COMMAND2:                                 ;Write Command To CS2
                CLR     CS1
                SETB    CS2
                CLR     RS
                CLR     R_W
                MOV     P1,A

⌨️ 快捷键说明

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