📄 pc2002x.asm
字号:
;*******************************************
;file name:Pst2002X with touch board
;use KS0066U control IC
;*****************************************
SET: .REG P2.5 ;SET=0,display next a side
ON/OFF: .REG P2.6 ;ON/OFF="L" do auto,"H" do fist use
DATASTRB: .REG P3.2
R/W: .REG P3.3
ADDRSTB: .REG P3.4
DAT1 EQU 7FH
DAT2 EQU 7EH
ORG 00H
LJMP MAIN
ORG 0200H
MAIN:
CALL INIT_LCD ;LCD initial
MM: CALL LED
;CALL SCAN_KEY ;scan or step set
CALL DISP1
CALL DELAY3
CALL DISP2
CALL DELAY3
CALL DISP3
CALL DISP4
CALL DELAY3
CALL DISP5
CALL DELAY3
CALL DISP6
CALL DELAY3
SJMP MM
;-----------------------------------------------------------------------
;INITIAL LCD
;-----------------------------------------------------------------------
INIT_LCD:
SETB ADDRSTB
SETB DATASTRB
SETB R/W
MOV A,#38H ;set function 2line 5X8dots 8bit display
CALL W_COM
CALL DELAY1
MOV A,#0CH ;turn on display
CALL W_COM
CALL DELAY1
MOV A,#01H ;clear display
CALL W_COM
CALL DELAY1
MOV A,#06H ;set entry mode
CALL W_COM
CALL DELAY1
RET
;-----------------------------------------
;write command word
;-----------------------------------------
W_COM:
CALL FLAG ;write command to IR
CLR R/W
MOV P1,#02H
CLR ADDRSTB
CALL DELAY3
SETB ADDRSTB
CALL DELAY3
CLR ADDRSTB
MOV P1,A
CLR DATASTRB
CALL DELAY3
SETB DATASTRB
CALL DELAY3
MOV P1,#FFH
RET
;--------------------------------------
;Write display data
;--------------------------------------
W_DATA:
CALL FLAG ;write data to DR
CLR R/W
MOV P1,#03H
CLR ADDRSTB
CALL DELAY3
SETB ADDRSTB
CALL DELAY3
CLR ADDRSTB
MOV P1,A
CLR DATASTRB
CALL DELAY3
SETB DATASTRB
CALL DELAY3
MOV P1,#FFH
RET
;--------------------------------
;read busy flag bit
;---------------------------------
FLAG:
MOV P1,#FFH ;examine busy flag
MOV P1,#02H
CLR ADDRSTB
CALL DELAY3
SETB ADDRSTB
SETB R/W
CALL DELAY3
SETB C
CLR ADDRSTB
CLR DATASTRB
CALL DELAY3
MOV C,P1.7
NOP
NOP
NOP
SETB DATASTRB
CALL DELAY3
JC FLAG
RET
;--------------------------------------
;look for TAB data
;--------------------------------------
GET_TAB:
CLR A
MOVC A,@A+DPTR
INC DPTR
CALL W_DATA
DJNZ R0,GET_TAB
RET
;-------------------------------------------
SCAN_KEY:
CALL DISP1
CALL DELAY
CLR ADDRSTB
MOV P1,#0BH
CALL DELAY3
SETB ADDRSTB
MOV P1,#FFH
CLR DATASTRB
CALL DELAY3
CLR A
MOV A,P1
JB ACC.2,DISP6
CALL LED
CALL DELAY
JB ACC.0,DISP2
CALL LED
CALL DELAY
JB ACC.3,DISP3
CALL LED
CALL DELAY
JB ACC.1,DISP4
CALL LED
CALL DELAY
JB ACC.4,DISP5
CALL LED
CALL DELAY
RET
;-------------------------------------------
CG_WRITE:
MOV A,#40H ;set CGRAM address command
CALL W_COM
CALL DELAY3
MOV R0,#64
MOV DPTR,#TAB0
CALL GET_TAB
RET
;==================K1 DISPLAY================
DISP1
CALL CG_WRITE
MOV DAT1,#00H
MOV DAT2,#00H
CALL W_DD
RET
;=================K2 DISPLAY================
DISP2
MOV DAT1,#01H
MOV DAT2,#02H
CALL W_DD
RET
;=================K3 DISPLAY==================
DISP3
MOV DAT1,#03H
MOV DAT2,#04H
CALL W_DD
RET
;=================K4 DISPLAY================
DISP4
MOV DAT1,#05H
MOV DAT2,#06H
CALL W_DD
RET
;=================K5 DISPLAY================
DISP5
MOV DAT1,#07H
MOV DAT2,#01H
CALL W_DD
RET
;================K6 DISPLAY==================
DISP6
MOV A,#80H
CALL W_COM
CALL DELAY3
MOV R0,#20
MOV DPTR,#TAB1
CALL GET_TAB
;
MOV DAT2,#04H
CALL W_DD1
RET
;=======================================
W_DD
MOV A,#80H
CALL W_COM
CALL DELAY3
MOV R2,#20
MOV A,DAT1
LOP1 CALL W_DATA
DJNZ R2,LOP1
;
W_DD1
MOV A,#C0H
CALL W_COM
CALL DELAY3
MOV R3,#20
MOV A,DAT2
LOP2 CALL W_DATA
DJNZ R3,LOP2
RET
;----------------------
LED: MOV P1,#0BH
CLR ADDRSTB
CALL DELAY3
SETB ADDRSTB
MOV P1,#FFH
CLR DATASTRB
CALL DELAY3
SETB DATASTRB
CALL DELAY3
RET
;=================
DELAY3:
MOV R7,#14H
LAY1 MOV R6,#64H
LAY DJNZ R6,LAY
DJNZ R7,LAY1
RET
;---------------------------------------------------------
TAB0
.DB FFH,FFH,FFH,FFH,FFH,FFH,FFH,FFH ;BALCK SCREEN 00H
.DB AAH,55H,AAH,55H,AAH,55H,AAH,55H ;snowflake 01H
.DB 55H,55H,55H,55H,55H,55H,55H,55H ;UPRIGHTLINE 02H
.DB 0AH,0AH,0AH,0AH,0AH,0AH,0AH,0AH ;horizontal line 03H
.DB 1FH,11H,11H,11H,11H,11H,11H,1FH ;RECELT 04H
.DB 1FH,15H,15H,15H,15H,15H,15H,1FH ;character first row 05H
.DB 1FH,15H,1FH,15H,15H,1FH,15H,1FH ;06
.DB FFH,00H,FFH,00H,FFH,00H,FFH,00H ;07H
TAB1 .DB " >>> TEST OK <<< "
;--------------------------------------------------------
DELAY
DELY: MOV R4,#08H ;1S delay subprogram
DEL: CALL DELAY1
DJNZ R4,DEL
DJNZ R3,DELY
RET
;
DELAY1: MOV R7,#01H
DEE0: MOV R6,#FFH ;0.125S delay subprogram
DEE1: MOV R5,#FFH
DEE2: DJNZ R5,DEE2
DJNZ R6,DEE1
DJNZ R7,DEE0
RET
DELAY2
MOV R4,#04H
PPL CALL DELAY1
DJNZ R4,PPL
RET
;-----------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -