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

📄 lcd12864.txt

📁 lcd12864 程序128X64点阵 lcd12864 程序128X64点阵
💻 TXT
字号:
12864接口程序(MCS51总线方式) 
 
 
 
 

 
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031*
;        *DB0---P0.0* *DB4---P0.4* *RS-------------P2.0* *CS1----------P2.2*
;        *DB1---P0.1* *DB5---P0.5* *RW-------------P2.3* *CS2----------P2.1*
;        *DB2---P0.2* *DB6---P0.6* *E--------------NAND
;        *DB3---P0.3* *DB7---P0.7* */RST-----------VDD       (详见说明书)
;注:8031的晶振频率为12MHz
;**************************************************************************
XPOS    EQU     20H             ;列方向地址指针(用于LCDPOS子程序)
YPOS    EQU     21H             ;行方向地址指针(用于LCDPOS子程序)
RWADDR          EQU     0800H   ;P2.3
CS1ADDR  EQU 0400H ;P2.2 
CS2ADDR  EQU 0200H ;P2.1
RSADDR  EQU 0100H ;P2.0
CSADDR  EQU 8000H ;P2.7
        ORG     0000H
        JMP     START
START:  MOV     SP,#60H
MAIN:        
        CALL    LCDRESET
        MOV A,#55H
        CALL LCDFILL
        MOV DPTR,#STRING1
        CALL PUTSTR
        CALL PUTSTR
        JMP MAIN
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
        CALL    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
LCDWRITE:                    ;定位并写数据子程序
        CALL    LCDPOS       ;内部写数指针定位
        CALL    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       ;设列码
LPS_LAX:POP     ACC
        RET
PUTCHARDOT:
 MOV R7,#8
PAC_PA:
 CLR A
 MOVC A,@A+DPTR
 CALL LCDWRITE
 INC YPOS
 INC DPTR
 CLR A
 MOVC A,@A+DPTR
 CALL LCDWRITE
 DEC YPOS
 INC DPTR
 CALL CUSORNEXT
 MOV A,XPOS
 JNZ PAC_LAX
 INC YPOS
PAC_LAX: 
 DJNZ R7,PAC_PA
 RET
 
CUSORNEXT:
 ANL YPOS,#7
 INC XPOS
 MOV A,XPOS
 JNB ACC.7,CNT_LAX
 MOV XPOS,#0
 INC YPOS
 MOV A,YPOS
 ANL A,#0F8H
 JZ CNT_LAX
 MOV YPOS,#0
CNT_LAX: 
 RET
 
LCDWD:                          ;送数据子程序             
        MOV     B,A          
        MOV     A,XPOS
        JB      ACC.6,LWD_LAY
        MOV     A,B             ;XPOS列方向小于64则对CS1操作
        CALL    LCDWD1
        JMP     LWD_LAX
LWD_LAY:MOV     A,B             ;XPOS列方向大于等于64则对CS2操作
        CALL    LCDWD2
LWD_LAX:
        RET       
LCDRESET:                       ;LCD控制器复位
        MOV     A,#3FH          ;打开LCD显示  
        CALL    LCDWC1
        CALL    LCDWC2
        MOV     A,#0C0H         ;设显示起始行
        CALL    LCDWC1
        CALL    LCDWC2
        RET
LCDWC1:                                                 ;送片1控制字子程序
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE1
 MOV DPTR,#CSADDR+CS1ADDR                 ;E=1 CS1=1 RS=0
 MOVX @DPTR,A
        POP DPL
        POP DPH
        RET
LCDWC2:                                                 ;送片2控制字子程序
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE2
 MOV DPTR,#CSADDR+CS2ADDR                 ;E=1 CS1=1 RS=0
 MOVX @DPTR,A
        POP DPL
        POP DPH
        RET
LCDWD1:                                                 ;片1写数据子程序                 
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE1
 MOV DPTR,#CSADDR+CS1ADDR+RSADDR         ;E=1 CS1=1 RS=1
 MOVX @DPTR,A
        POP DPL
        POP DPH
        RET       
LCDWD2:                                                 ;片2写数据子程序
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE2
 MOV DPTR,#CSADDR+CS2ADDR+RSADDR         ;E=1 CS2=1 RS=1
 MOVX @DPTR,A
        POP DPL
        POP DPH
        RET       
LCDRD1:                                                 ;片1读数据子程序               
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE1
 MOV DPTR,#CSADDR+CS1ADDR+RSADDR+RWADDR         ;E=1 CS1=1 RS=1
 MOVX A,@DPTR
        POP DPL
        POP DPH
        RET       
LCDRD2:                                                 ;片2读数据子程序
 PUSH DPH
 PUSH DPL
 CALL    WAITIDLE2
 MOV DPTR,#CSADDR+CS2ADDR+RSADDR+RWADDR         ;E=1 CS2=1 RS=1
 MOVX A,@DPTR
        POP DPL
        POP DPH
        RET       
WAITIDLE1:
 PUSH DPH
 PUSH DPL
 PUSH ACC
 MOV DPTR,#CSADDR+CS1ADDR+RWADDR         ;E=1 CS2=1 RS=1
WT1_PA: MOVX A,@DPTR
 JB ACC.7,WT1_PA
        POP ACC
        POP DPL
        POP DPH
 RET        
WAITIDLE2:
 PUSH DPH
 PUSH DPL
 PUSH ACC
 MOV DPTR,#CSADDR+CS2ADDR+RWADDR         ;E=1 CS2=1 RS=1
WT2_PA: MOVX A,@DPTR
 JB ACC.7,WT2_PA
        POP ACC
        POP DPL
        POP DPH
 RET        
DELAY400MS:
        MOV     R0,#20              ;延时子程序(400MS)
DL4_PA: MOV     R1,#100
DL4_PB: MOV     R2,#100
        DJNZ    R2,$
        DJNZ    R1,DL4_PB
        DJNZ    R0,DL4_PA
        RET
HZKDOT: 
;(d3d0H)(有)(8000)
DB  04H, 04H, 04H, 02H, 04H, 01H, 84H, 00H
DB 0e4H,0ffH, 3cH, 09H, 27H, 09H, 24H, 09H
DB  24H, 09H, 24H, 49H, 24H, 89H,0f4H, 7fH
DB  24H, 00H, 06H, 00H, 04H, 00H, 00H, 00H
;(cfdeH)(限)(8001)
DB  00H, 00H,0feH,0ffH, 02H, 08H, 22H, 10H
DB 0daH, 08H, 06H, 07H, 00H, 00H,0feH,0ffH
DB  92H, 42H, 92H, 24H, 92H, 08H, 92H, 14H
DB 0ffH, 22H, 02H, 61H, 00H, 20H, 00H, 00H
;(b9abH)(公)(8002)
DB  00H, 01H, 00H, 01H, 80H, 00H, 40H, 30H
DB  30H, 28H, 0cH, 24H, 00H, 23H,0c0H, 20H
DB  06H, 20H, 18H, 28H, 20H, 30H, 40H, 60H
DB  80H, 00H, 80H, 01H, 80H, 00H, 00H, 00H
;(cbbeH)(司)(8003)
DB  10H, 00H, 10H, 00H, 92H, 3fH, 92H, 10H
DB  92H, 10H, 92H, 10H, 92H, 10H, 92H, 10H
DB 0d2H, 3fH, 9aH, 00H, 12H, 40H, 02H, 80H
DB 0ffH, 7fH, 02H, 00H, 00H, 00H, 00H, 00H
STRING1: DB  80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH
STRING2: DB  80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH        
        END  

⌨️ 快捷键说明

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