📄 12684jiekou.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 + -