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

📄 ks0724.asm

📁 ks0724 serial drive
💻 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 + -