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

📄 12864中文字库测试程序.asm

📁 12864中文字库测试程序 ST7920
💻 ASM
字号:
RS              EQU    P3.0
RW              EQU    P3.1
E               EQU    P3.2
PSB             EQU    P3.4
RST             EQU    P3.5

                ORG    0000H

                LJMP   MAIN

                ORG    0100H
mesg1:          DB   020H,04AH,052H,04DH,016H,031H,032H,038H,036H,034H,048H,020H,04CH,043H,04DH,020H
                DB   0C9H,0EEH,0DBH,0DAH,0BEH,0C3H,0C8H,0D5H,0B9H,0E2H,0B5H,0E7H,0B9H,0ABH,0CBH,0BEH
mesg2:          DB   020H,020H,054H,045H,053H,054H,020H,050H,052H,04FH,047H,052H,041H,04DH,020H,020H
                DB   0D6H,0D0H,0CEH,0C4H,0D7H,0D6H,0BFH,0E2H,0D2H,0BAH,0BEH,0A7H,0C4H,0A3H,0BFH,0E9H
CL1:            DB   020H,020H,0C9H,0EEH,0DBH,0DAH,0CAH,0D0H,0BEH,0C3H,0C8H,0D5H,0B9H,0E2H,0B5H,0E7H
                DB   0D7H,0A8H,0D2H,0B5H,0D2H,0BAH,0BEH,0A7H,0CFH,0D4H,0CAH,0BEH,0C4H,0A3H,0BFH,0E9H
CL2:            DB   0D7H,0D3H,0D3H,0D0H,0CFH,0DEH,0B9H,0ABH,0CBH,0BEH,0CAH,0C7H,0D2H,0BBH,0BCH,0D2H
                DB   0C9H,0FAH,0B2H,0FAH,0C9H,0CCH,0A3H,0ACH,0C4H,0BFH,0C7H,0B0H,0B2H,0FAH,0C6H,0B7H
CL3:            DB   0D3H,0D0H,0D2H,0BBH,0B0H,0D9H,0B6H,0E0H,0BFH,0EEH,0A3H,0ACH,0BCH,0E6H,0C8H,0DDH
                DB   0BFH,0E9H,0A3H,0ACH,0B2H,0A2H,0C7H,0D2H,0B8H,0F9H,0BEH,0DDH,0BFH,0CDH,0BBH,0A7H
CL4:            DB   0CAH,0D0H,0B3H,0A1H,0C9H,0CFH,0D6H,0F7H,0D2H,0AAH,0B1H,0EAH,0D7H,0BCH,0C4H,0A3H
                DB   0D2H,0AAH,0C7H,0F3H,0B6H,0A8H,0D6H,0C6H,0B8H,0F7H,0C0H,0E0H,0B2H,0FAH,0C6H,0B7H

CL5:            DB   0BDH,0BBH,0D1H,0F9H,0D6H,0DCH,0C6H,0DAH,0B6H,0CCH,0A3H,0ACH,0BDH,0BBH,0BBH,0F5H
                DB   0BBH,0B6H,0D3H,0ADH,0B8H,0F3H,0CFH,0C2H,0B4H,0B9H,0D1H,0AFH,0A1H,0A3H,020H,020H
CL6:            DB   0BCH,0B0H,0CAH,0B1H,0A3H,0ACH,0B7H,0FEH,0CEH,0F1H,0D6H,0CAH,0C1H,0BFH,0BAH,0C3H
                DB   054H,045H,04CH,02DH,038H,033H,032H,038H,034H,036H,039H,037H,020H,020H,020H,020H


                ORG    1400H
MAIN:           MOV     SP, #30H
                SETB    PSB
                ACALL   DELAY2MS
                SETB    RST
                ACALL   DELAY2MS
                CLR     RST
                ACALL   DELAY2MS
                SETB    RST
                ACALL   DELAY2MS
                ACALL   PonInit         ; initialize subroutine

DISP:           
                MOV     DPTR, #mesg1
                ACALL   mesg_out1
                MOV     DPTR, #mesg2
                ACALL   mesg_out2
                MOV     R7, #0CFH
                ACALL   delayXms

                MOV     DPTR, #CL1
                ACALL   mesg_out1
                MOV     DPTR, #CL2
                ACALL   mesg_out2
                MOV     R7, #0CFH
                ACALL   delayXms

                MOV     DPTR, #CL3
                ACALL   mesg_out1
                MOV     DPTR, #CL4
                ACALL   mesg_out2
                MOV     R7, #0CFH
                ACALL   delayXms


                MOV     DPTR, #CL5
                ACALL   mesg_out1
                MOV     DPTR, #CL6
                ACALL   mesg_out2
                MOV     R7, #0CFH
                ACALL   delayXms

                LJMP    DISP


; ***********************************************************************
;   routine     : mesg_out
;
;   Description :
;
; ***********************************************************************
mesg_out1:      MOV     R4,#10H
                MOV     A,#80H
                ACALL   WIR8
m_out1:         CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                DJNZ    R4,m_out1
                RET

mesg_out2:      MOV     R4,#10H
                MOV     A,#090H
                ACALL   WIR8
m_out2:         CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                DJNZ    R4,m_out2
;                MOV     R7, #06H
;                ACALL   delayXms
                RET

mesg_out3:      MOV     R4,#0FFH
                MOV     A,#00H
                ACALL   WIR8
                MOV     A,#00H
                ACALL   WIR8
m_out3:         CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                DJNZ    R4,m_out3
                RET
; ***********************************************************************
;   routine     : PonInit
;
;   Description :
;
; ***********************************************************************
PonInit:        MOV     R7, #25H        ; wait 20ms for Vcc rises to 4.5v
                ACALL   delayXms

                MOV     A, #30H         ; wr 3rd byte #30H
                ACALL   WIR8
                ACALL   DELAY2MS
                MOV     A, #30H         ; fun.set to 8 bit opr.
                ACALL   WIR8
                ACALL   DELAY2MS
                MOV     A,#08H
                ACALL   WIR8
                ACALL   DELAY2MS
                MOV     A,#10H
                ACALL   WIR8
                ACALL   DELAY2MS
;                MOV     A, #38H         ; fun.set 8 bit, 2line, 5*7dot
;                ACALL   WIR8
                MOV     A, #0CH         ; D=ON, C=OFF, CB=OFF
                ACALL   WIR8


                MOV     A,#01H          ;Display clear
                ACALL   WIR8
                ACALL   DELAY2MS
                MOV     A, #06H         ;
                ACALL   WIR8
                ACALL   DELAY2MS

                RET
; ***********************************************************************
;   routine     : home
;
;   Description :
;
; ***********************************************************************
home:           MOV     A, #02H
                ACALL   WIR8
                ACALL   delay2ms
                RET
; ***********************************************************************
;   routine     : clrDisp
;
;   Description :
;
; ***********************************************************************
clrDisp:        MOV     A, #01H
                ACALL   WIR8
                ACALL   delay2ms
                RET
; ***********************************************************************
;   routine     : WIR8
;   Description : write IR (Instructure register) in 8 bit mode
;
; ***********************************************************************
WIR8:           PUSH    ACC             ; Write IR with data store in A
                MOV     P1, A
                CLR     RS
                CLR     RW
                CLR     E
                SETB    E
                CLR     E
                ACALL   delay2ms        ; time for data ready
                POP     ACC
                RET
; ***********************************************************************
;   routine     : WDR8
;
;   Description : write DR (data register) in 8 bit mode
;
; ***********************************************************************
WDR8:           PUSH    ACC             ; Wr DR with data store in A
                MOV     P1, A
                SETB    RS
                CLR     RW
                CLR     E
                SETB    E               ; set E
                CLR     E
                ACALL   delay2ms
                POP     ACC
                RET
; ***********************************************************************
;   routine     : delayXms
;
;   Description : No. of ms is defined by Register R7
;
; ***********************************************************************
delayXms:       MOV     R2, #10H         ; 1st delay loop 256us * 8 = 2ms
delay0:         MOV     R3, #0FFH        ; 2nd delay loop 1us * 256 = 256us
delay1:         DJNZ    R3, delay1
                DJNZ    R2, delay0
                DJNZ    R7, delayXms
                RET
; ***********************************************************************
;   routine     : delay2ms
;
;   Description : 1 ms delay loop
;
; ***********************************************************************
delay2ms:       MOV     R2,#02H         ; 1st delay loop 256us * 8 = 2ms
delay_0:        MOV     R3,#0FFH        ; 2nd delay loop 1us * 256 = 256us
delay_1:        DJNZ    R3, delay_1
                DJNZ    R2, delay_0
                RET
; ***********************************************************************
;   routine     : setCGADR
;
;   Description : set CG RAM address
;
; ***********************************************************************
setCGADR:       CLR     ACC.7
                SETB    ACC.6
                ACALL   WIR8
                RET
; ***********************************************************************
;   routine     : setDDADR
;
;   Description : set DD RAM address
;
; ***********************************************************************
setDDADR:       SETB    ACC.7
                ACALL   WIR8
                RET
; ***********************************************************************
;   routine     : CGRinit
;
;   Description : Reg A = NO. of character patterns to be write into CG RAM
;                   CG Ram start address = 00H
;
; ***********************************************************************
CGRinit:        MOV     A,#20H
                XCH     A, R0
                CLR     A               ; set CGRAM
                ACALL   setCGADR

L_INIT:         CLR     A
                MOVC    A, @A+DPTR
                ACALL   WDR8
                INC     DPTR
                DJNZ    R0,L_INIT
                RET
; ***********************************************************************
;   routine     : fillPatn
;
;   Description : fill patterns on all characters( both Line 1 & Line 2 )
;                   Reg A = character code for the pattern
;
; ***********************************************************************
fillPatn:       XCH     A, R5           ; store character code in R5
                CLR     A               ; point to first line
                ACALL   setDDADR

                MOV     R0, #14H        ; fill first line
                MOV     A, R5           ; restore character code
B1:             ACALL   WDR8
                DJNZ    R0,B1

                MOV     A, #40H         ; point to second line
                ACALL   setDDADR
                MOV     R0,#14H
                MOV     A, R5           ; restore character code
B2:             ACALL   WDR8
                DJNZ    R0,B2
                RET

               end

⌨️ 快捷键说明

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