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

📄 12684jiekou.asm

📁 mcs51总线方式
💻 ASM
字号:
连线图: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031*
;        *DB0---P0.0* *DB4---P0.4* *C/D-------------P2.0* */RD---------P3.7*
;        *DB1---P0.1* *DB5---P0.5* *CE--------------P2.1* 
;        *DB2---P0.2* *DB6---P0.6* */RW-------------P3.6
;        *DB3---P0.3* *DB7---P0.7* */RST------------VDD       (详见说明书)
;注:8031的晶振频率为12MHz
;**************************************************************************
XPOS    EQU     20H             ;列方向地址指针(用于LCDPOS子程序)
YPOS    EQU     21H             ;行方向地址指针(用于LCDPOS子程序)
BUFFER EQU 22H
BUFFERH EQU 23H
;CEPIN P2.1
;C/DPIN P2.0 0:DATA 1:COMMAND
CADDR EQU 0100H
DADDR EQU 0000H

        ORG     0000H
        JMP     START
START:  MOV     SP,#60H
MAIN:        
        CALL    LCDRESET
        MOV     A,#55H
        CALL    LCDFILL
        MOV A,#0FFH
        CALL LCDFILL
        CALL    MAP
        MOV     A,#01H
        CALL    LCDFILL
        MOV DPTR,#STRING1
        CALL PUTSTR
        CALL PUTSTR
        MOV     A,#00H
        CALL    LCDFILL
        CALL    TEXTON
        JMP     START 
TEXTON: 
        MOV     A,#97H                      ;TEXT   ON
        CALL    LCDWC                       ;(文本显示打开) 
        MOV R2,#30
MOV R3,#00H
MOV A,#41H                      ;TEXT AREA  SET
CALL LCDWC3                      ;(文本区域设置)  
MOV R2,#00H
MOV R3,#00H
MOV A,#40H                      ;TEXT HOME ADDRESS SET  
CALL LCDWC3                      ;(文本区首地址)
        MOV     DPTR,#0000H
      MOV     R1,#00H
      MOV     XPOS,#0
      MOV     YPOS,#0
TEXT: MOV     20H,R1
        MOV A,20H
MOV 20H,A
        CALL    LCDWRITE
        INC     R1
        CALL    DELAY
        CJNE    R1,#80H,TEXT
        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
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        
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 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
PUTCHARDOT:
MOV R7,#16
PAC_PA:
CLR A
MOVC A,@A+DPTR
CALL LCDWRITE
INC YPOS
INC DPTR
DJNZ R7,PAC_PA
CLR C
MOV A,XPOS
SUBB A,#29
JNZ PAC_LAY
MOV XPOS,#0
JMP PAC_LAX
PAC_LAY:INC XPOS 
CLR C
MOV A,YPOS
SUBB A,#16
        MOV YPOS,A
PAC_LAX: 
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 
LCDFILL:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        CALL    LCDWRITE        ;定位并写数据
        CALL    CUSORNEXT
        MOV     A,XPOS
        JNZ     LFL_PA          ;XPOS<128则循环(128列)
        MOV     A,YPOS
        JNZ     LFL_PB          ;YPOS<8则循环(8页)
        RET
DEMO:
MOV XPOS,#0
MOV YPOS,#0
MOV R7,#128
DMO_PB: 
MOV R6,#30
DMO_PA: 
CLR A
MOVC A,@A+DPTR
CALL LCDWRITE
CALL NEXTADDR
INC DPTR
DJNZ R6,DMO_PA
DJNZ R7,DMO_PB
RET
NEXTADDR:
INC XPOS
MOV A,XPOS
CJNE A,#30,NTL_LAX
MOV XPOS,#0
INC YPOS
ANL YPOS,#7FH
NTL_LAX: 
RET 
LCDWRITE:                    ;定位并写数据子程序
        CALL    LCDPOS       ;内部写数指针定位
        CALL    LCDWDATA        ;写数据
        RET

CUSORNEXT:
INC XPOS
MOV A,XPOS
CJNE A,#30,NTR_LAX
MOV XPOS,#0
INC YPOS
ANL YPOS,#7FH
NTR_LAX: 
RET 
LCDPOS:
PUSH ACC
PUSH B
MOV A,YPOS ;R2R3=30*YPOS+XPOS
MOV B,#30
MUL AB
ADD A,XPOS
MOV R2,A
MOV A,B
ADDC A,#0
MOV R3,A
   MOV A,#24H
   CALL LCDWC3
   POP B
   POP ACC
   RET 
LCDWDATA:                         ;WRITE DATA(ADDRESS+1) 
PUSH ACC
MOV R2,A
MOV A,#0C0H
CALL LCDWC2
POP ACC
RET   
LCDRESET:  
MOV A,#80H                ;OR MODE
CALL LCDWC
MOV     A,#98H                ;GRAPHICS MODE
CALL    LCDWC
MOV     R2,#00H               
MOV     R3,#00H
MOV     A,#42H
CALL    LCDWC3 
MOV     R2,#30      
MOV     R3,#00H
MOV     A,#43H
CALL    LCDWC3 
RET
LCDREAD:
CALL LCDPOS
CALL LCDRDATA
RET
LCDRDATA:
MOV A,#0C1H
CALL LCDWC
CALL LCDRD
RET 
LCDWBIT:
ORL A,#0F0H
MOV ACC.3,C
CALL LCDWC
RET 
WTI_PB:
NOP
JMP WTI_PA

WAITIDLE:
PUSH ACC
WTI_PA: CALL LCDRC
JNB ACC.0,WTI_PB
JNB ACC.1,WTI_PB
POP ACC
RET 
WAITAIDLE:
PUSH ACC
WTW_PA: CALL LCDRC
JNB ACC.2,WTW_PA
JNB ACC.3,WTW_PA
POP ACC
RET 
LCDWC3: PUSH ACC
MOV A,R2
CALL LCDWD
MOV A,R3
CALL LCDWD
POP ACC
CALL LCDWC
RET
LCDWC2: PUSH ACC
MOV A,R2
CALL LCDWD
POP ACC
CALL LCDWC
RET
LCDWC: CALL WAITIDLE
PUSH DPH
PUSH DPL
MOV DPTR,#CADDR
MOVX @DPTR,A
POP DPL
POP DPH
RET 
LCDWD: CALL WAITIDLE
PUSH DPH
PUSH DPL
MOV DPTR,#DADDR
MOVX @DPTR,A
POP DPL
POP DPH
RET 
LCDRC: 
PUSH DPH
PUSH DPL
MOV DPTR,#CADDR
MOVX A,@DPTR
POP DPL
POP DPH
RET      
LCDRD: CALL WAITIDLE
PUSH DPH
PUSH DPL
MOV DPTR,#DADDR
MOVX A,@DPTR
POP DPL
POP DPH
RET 
MAP: MOV BUFFER,#0
MOV BUFFERH,#0H
MOV DPTR,#BITMAP2
        CALL DEMO
        CALL    SDELAY
        MOV DPTR,#30*128
        MOV BUFFER,DPL
        MOV BUFFERH,DPH
        MOV DPTR,#BITMAP
        CALL DEMO
        CALL    SDELAY
        MOV DPTR,#60*128
        MOV BUFFER,DPL
        MOV BUFFERH,DPH
        MOV DPTR,#BITMAP2
        CALL DEMO
        CALL    SDELAY
        RET
SDELAY: 
SDLY_PA: 
MOV R5,#30
SDLY_PB: 
MOV R4,#100
DJNZ R4,$
DJNZ R5,SDLY_PB
DJNZ R6,SDLY_PA
RET        
BITMAP: 
INCLUDE "B2401282"
BITMAP2:
INCLUDE "B2401281" 

HZKDOT: 
;(d3d0H)(有)(8000)
DB 02H, 02H,0ffH, 04H, 04H, 0fH, 08H, 18H
DB 2fH, 48H, 88H, 0fH, 08H, 08H, 08H, 08H
DB 00H, 04H,0feH, 00H, 10H,0f8H, 10H, 10H
DB 0f0H, 10H, 10H,0f0H, 10H, 10H, 50H, 20H
;(cfdeH)(限)(8001)
DB 00H, 7dH, 45H, 49H, 49H, 51H, 49H, 49H
DB 45H, 45H, 45H, 69H, 51H, 41H, 41H, 41H
DB 08H,0fcH, 08H, 08H,0f8H, 08H, 08H,0f8H
DB 04H, 88H, 50H, 20H, 10H, 4eH, 84H, 00H
;(b9abH)(公)(8002)
DB 00H, 00H, 04H, 04H, 08H, 08H, 11H, 21H
DB 0c2H, 02H, 04H, 08H, 10H, 1fH, 00H, 00H
DB 00H, 80H, 80H, 40H, 40H, 20H, 10H, 0eH
DB 04H, 00H, 00H, 40H, 20H,0f0H, 10H, 00H
;(cbbeH)(司)(8003)
DB 00H, 3fH, 00H, 00H,0ffH, 00H, 00H, 3fH
DB 20H, 20H, 20H, 20H, 3fH, 20H, 00H, 00H
DB 08H,0fcH, 08H, 48H,0e8H, 08H, 88H,0c8H
DB 88H, 88H, 88H, 88H, 88H, 88H, 28H, 10H
;(d3d0H)(有)(8004)
DB 02H, 02H,0ffH, 04H, 04H, 0fH, 08H, 18H
DB 2fH, 48H, 88H, 0fH, 08H, 08H, 08H, 08H
DB 00H, 04H,0feH, 00H, 10H,0f8H, 10H, 10H
DB 0f0H, 10H, 10H,0f0H, 10H, 10H, 50H, 20H
;(cfdeH)(限)(8005)
DB 00H, 7dH, 45H, 49H, 49H, 51H, 49H, 49H
DB 45H, 45H, 45H, 69H, 51H, 41H, 41H, 41H
DB 08H,0fcH, 08H, 08H,0f8H, 08H, 08H,0f8H
DB 04H, 88H, 50H, 20H, 10H, 4eH, 84H, 00H
;(b9abH)(公)(8006)
DB 00H, 00H, 04H, 04H, 08H, 08H, 11H, 21H
DB 0c2H, 02H, 04H, 08H, 10H, 1fH, 00H, 00H
DB 00H, 80H, 80H, 40H, 40H, 20H, 10H, 0eH
DB 04H, 00H, 00H, 40H, 20H,0f0H, 10H, 00H
;(cbbeH)(司)(8007)
DB 00H, 3fH, 00H, 00H,0ffH, 00H, 00H, 3fH
DB 20H, 20H, 20H, 20H, 3fH, 20H, 00H, 00H
DB 08H,0fcH, 08H, 48H,0e8H, 08H, 88H,0c8H
DB 88H, 88H, 88H, 88H, 88H, 88H, 28H, 10H
;(d3d0H)(有)(8008)
DB 02H, 02H,0ffH, 04H, 04H, 0fH, 08H, 18H
DB 2fH, 48H, 88H, 0fH, 08H, 08H, 08H, 08H
DB 00H, 04H,0feH, 00H, 10H,0f8H, 10H, 10H
DB 0f0H, 10H, 10H,0f0H, 10H, 10H, 50H, 20H

STRING1: DB 80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H,0ffH
STRING2: DB 80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H, 80H, 04H, 80H, 05H, 80H, 06H, 80H, 07H,0ffH
        END

⌨️ 快捷键说明

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