📄 ks0724.asm
字号:
;--------------------------------------------------------
;Date 2003/09/05
;Controller KS0724 (Serial interface)
;Revision :VCC=3V
; :Boost=3X
; :v05-->Change Vlcd=Vo-Vss=8V
;--------------------------------------------------------
SDA EQU P1.0
SCL EQU P3.4
RS EQU P3.5
CS1B EQU P3.6
RESETB EQU P3.7
COUNT EQU 30H
MSB EQU 31H
LSB EQU 32H
;--------------------------------------------------------
;R7 :Delay Loop
;R4 :Page Address
;R3 :Write Data
;R2 :Page Counte
;R1 :Shift Display Data Temp Memroy
;R0 :Shift Bit Counte
;--------------------------------------------------------
ORG 0000H
JMP START
ORG 0100H
START: MOV IE,#00H
MOV SP,#50H
MOV TMOD,#00H
ORL TMOD,#10H
ANL PCON,#7EH
CALL INIT
MAIN: CALL DISP_ALL
MOV R7,#30
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#19H ;Set reference voltage register:8.25
CALL W_CMD
MOV R7,#30
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#11H ;Set reference voltage register:7.75
CALL W_CMD
MOV R7,#30
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#15H ;Set reference voltage register:8.0
CALL W_CMD
CALL LINE_GRID
MOV R7,#40
CALL DELAY_L
CALL BLK_GRID
MOV R7,#40
CALL DELAY_L
CALL WHT_GRID
MOV R7,#40
CALL DELAY_L
CALL CLEAR
CALL HOR_SCAN
CALL VER_SCAN
CALL CLEAR
MOV DPTR,#CGDAT1
CALL DISP_CG
MOV R7,#40
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#19H ;Set reference voltage register:8.25
CALL W_CMD
MOV R7,#40
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#11H ;Set reference voltage register:7.75
CALL W_CMD
MOV R7,#40
CALL DELAY_L
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#15H ;Set reference voltage register:8.0
CALL W_CMD
AJMP MAIN
;----------------------------------------------------------
DISP_ALL: MOV B,#0FFH
CALL DISP
RET
;----------------------------------------------------------
CLEAR: MOV B,#00H
CALL DISP
RET
;----------------------------------------------------------
DISP: MOV R6,#0B7H ;Page Address
MOV R5,#08H ;8 Pages
PG_LOOP: MOV A,R6
CALL W_CMD ;Set Page Address
MOV A,#10H
CALL W_CMD ;Set Column Address MSB
MOV A,#00H
CALL W_CMD ;Set Column Address LSB
MOV COUNT,#98
COL_LOOP: MOV A,B
CALL TR_DAT
DJNZ COUNT,COL_LOOP
DEC R6
DJNZ R5,PG_LOOP
RET
;----------------------------------------------------------
HOR_SCAN: MOV R4,#0B0H ;Page Address
MOV R2,#04H
HS_PAGE: MOV R1,#08H
MOV B,#01H ;Display Data
HS_LOOP3: CALL INIT_ADS ;Set Display Address
MOV R3,#98
HS_LOOP1: MOV A,B
CALL TR_DAT
DJNZ R3,HS_LOOP1
MOV A,R4
PUSH ACC
ADD A,#04
MOV R4,A
CALL INIT_ADS ;Set Display Address
MOV R3,#98
HS_LOOP2: MOV A,B
CALL TR_DAT
DJNZ R3,HS_LOOP2
MOV A,B
RL A
MOV B,A
MOV R7,#4
CALL DELAY_L
POP ACC
MOV R4,A
DJNZ R1,HS_LOOP3 ;Scroll 1 Page
CALL CLEAR
INC R4
DJNZ R2,HS_PAGE
RET
;----------------------------------------------------------
VER_SCAN: MOV R3,#00
MOV MSB,#00H
MOV LSB,#00H
VS_LOOP: CALL INIT_COL
CALL DISP_COL
MOV R7,#3
CALL DELAY_L
CALL CLR_COL
INC R3
CJNE R3,#49,VS_LOOP
RET
;----------------------------------------------------------
INIT_COL: MOV A,R3
PUSH ACC
ANL A,#0FH ;LSB Address
MOV LSB,A
POP ACC
SWAP A
ANL A,#0FH
ORL A,#10H
MOV MSB,A ;MSB Address
RET
;----------------------------------------------------------
DISP_COL: MOV R4,#0B7H
MOV R2,#08H
DIS_LOOP: MOV A,R4 ;Page Address
CALL W_CMD
MOV A,MSB ;Set Column Address MSB
CALL W_CMD
MOV A,LSB ;Set Column Address LSB
CALL W_CMD
MOV A,#0FFH
CALL TR_DAT
MOV A,R3
ADD A,#31H
PUSH ACC
ANL A,#0FH ;LSB Address
CALL W_CMD
POP ACC
SWAP A
ANL A,#0FH
ORL A,#10H
CALL W_CMD
MOV A,#0FFH
CALL TR_DAT
DEC R4
DJNZ R2,DIS_LOOP
RET
;----------------------------------------------------------
CLR_COL: MOV R4,#0B7H
MOV R2,#08H
CLR_LOOP: MOV A,R4 ;Page Address
CALL W_CMD
MOV A,MSB ;Set Column Address MSB
CALL W_CMD
MOV A,LSB ;Set Column Address MSB
CALL W_CMD
MOV A,#00H
CALL TR_DAT
MOV A,R3
ADD A,#31H
PUSH ACC
ANL A,#0FH ;LSB Address
CALL W_CMD
POP ACC
SWAP A
ANL A,#0FH
ORL A,#10H
CALL W_CMD
MOV A,#00H
CALL TR_DAT
DEC R4
DJNZ R2,CLR_LOOP
RET
;--------------------------------------------------------
LINE_GRID: MOV R4,#0B0H ;Page 0
CALL INIT_ADS ;Initialize Display Address
MOV A,#0FFH
CALL TR_DAT
MOV R3,#24 ;24x4=96 Segment
LG_LOOP1: MOV A,#067H
CALL TR_DAT
MOV A,#067H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
DJNZ R3,LG_LOOP1
MOV A,#0FFH
CALL TR_DAT
MOV R2,#06H
LG_PAGE: INC R4 ;Page1,2,3,4,5,6
CALL INIT_ADS ;Initialize Display Address
MOV A,#0FFH
CALL TR_DAT
MOV R3,#24 ;24x4=96 Segment
LG_LOOP2: MOV A,#066H
CALL TR_DAT
MOV A,#066H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
DJNZ R3,LG_LOOP2
MOV A,#0FFH
CALL TR_DAT
DJNZ R2,LG_PAGE ;6 TIMES
INC R4 ;Page 7
CALL INIT_ADS ;Initialize Display Address
MOV A,#0FFH
CALL TR_DAT
MOV R3,#24
LG_LOOP3: MOV A,#0E6H
CALL TR_DAT
MOV A,#0E6H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
DJNZ R3,LG_LOOP3
MOV A,#0FFH
CALL TR_DAT
RET
;--------------------------------------------------------
BLK_GRID: MOV R2,#08H
MOV R4,#0B0H
BG_PAGE: CALL INIT_ADS ;Initialize Display Address
MOV R3,#25 ;24 x 4 =96
BG_LOOP: MOV A,#033H
CALL TR_DAT
MOV A,#033H
CALL TR_DAT
MOV A,#0CCH
CALL TR_DAT
MOV A,#0CCH
CALL TR_DAT
DJNZ R3,BG_LOOP
INC R4
DJNZ R2,BG_PAGE
RET
;--------------------------------------------------------
WHT_GRID: MOV R2,#08H
MOV R4,#0B0H
WG_PAGE: CALL INIT_ADS ;Initialize Display Address
MOV R3,#25
WG_LOOP: MOV A,#099H
CALL TR_DAT
MOV A,#066H
CALL TR_DAT
MOV A,#066H
CALL TR_DAT
MOV A,#099H
CALL TR_DAT
DJNZ R3,WG_LOOP
INC R4
DJNZ R2,WG_PAGE
RET
;--------------------------------------------------------
;Guess 9018 Display PAGE Is From P0 To P7.
; Display DATA Is From D0 To D7.
;--------------------------------------------------------
DISP_CG: MOV R2,#08H
MOV R4,#0B0H
CG_PAGE: CALL INIT_ADS ;Initialize Display Address
MOV R3,#98 ;98 Segment
CG_LOOP: CLR A
MOVC A,@A+DPTR
CALL TR_DAT
INC DPTR
DJNZ R3,CG_LOOP
INC R4
DJNZ R2,CG_PAGE
RET
;----------------------------------------------------------
INIT_ADS: MOV A,R4 ;Set Page Address
CALL W_CMD
MOV A,#10H ;Set Column MSB
CALL W_CMD
MOV A,#00H ;Set Column LSB
CALL W_CMD
RET
;--------------------------------------------------------
W_CMD: CLR RS
NOP
NOP
CALL TR_DAT ;Send Slave Command
SETB RS
MOV R7,#01H ;1ms
CALL DELAY_S
RET
;--------------------------------------------------------
TR_DAT: CLR SCL
MOV R0,#08H ;Cycle 8 Times
TD_LOOP: RLC A ;Rotate Bit To Be Sent
MOV SDA,C ;Send Data To SDA
SETB SCL
NOP
CLR SCL
DJNZ R0,TD_LOOP
RET
;--------------------------------------------------------
INIT: CLR CS1B
MOV R7,#10H
CALL DELAY_S
CLR RESETB
MOV R7,#25H ;5ms
CALL DELAY_S
SETB RESETB
MOV R7,#10H
CALL DELAY_S
;MOV A,#0AEH ;Display Off
;CALL W_CMD
MOV A,#40H ;Initial display line
CALL W_CMD
MOV A,#0A2H ;LCD bias select (1/65 duty,1/9 bias)
CALL W_CMD
MOV A,#2FH ;Power control(VC=0;VR=1;VF=1)
CALL W_CMD
MOV A,#24H;21H ;Regulator resistor select
CALL W_CMD
MOV A,#81H ;Set reference voltage mode
CALL W_CMD
MOV A,#15H ;Set reference voltage register
CALL W_CMD
MOV A,#0C8H ;COM output direction reverse
CALL W_CMD
MOV A,#0AFH ;Display On
CALL W_CMD
RET
;--------------------------------------------------------
DELAY_L: MOV TH1,#3CH ;50ms*R7
MOV TL1,#00H
SETB TR1
JNB TF1,$
CLR TF1
DJNZ R7,DELAY_L
CLR TR1
RET
;--------------------------------------------------------
DELAY_S: MOV TH1,#0FCH ;1ms*R7
MOV TL1,#18H
SETB TR1
JNB TF1,$
CLR TF1
DJNZ R7,DELAY_S
CLR TR1
RET
;--------------------------------------------------------
CGDAT1: ;(Fetch Pattern Mode:Vertical & Byte Reverse Order)
;--------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -