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

📄 key_scan15x20d.asm

📁 OCMJ的代码 具体是关于金鹏电子的液晶屏的使用方法和介绍。
💻 ASM
字号:
;****************************************************
RS	EQU	P3.0					;L:存取缓存器,H:存取DDRAM
WR	EQU	P3.1					;L有效
RD	EQU	P3.2					;L有效
CS1	EQU	P3.3					;L有效
CS2	EQU	P3.4					;H有效
BUSY	EQU	P3.5
INT	EQU	P3.6
RST	EQU	P3.7					;L有效

REGNAME	EQU	30H
REGDATA	EQU	31H
REGDATA1	EQU	32H
LCM_X		EQU	33H
LCM_Y		EQU	34H
COUNT1	EQU	35H
COUNT2	EQU	36H
KEY_X		EQU	37H
KEY_Y		EQU	38H
KEY_COUNT1	EQU	39H
;****************************************************
		ORG	0000H
		AJMP	MAIN
		ORG	0100H
MAIN:		NOP
		MOV	SP,#5FH
		LCALL	DELAY2			;延时120MS等待上电复位
		MOV	P3,#0FFH
		LCALL	LCM_INIT
		LCALL	LCM_CLR
;****************************************************
LGS1:		MOV	REGNAME,#10H
		MOV	REGDATA,#2BH
		LCALL	REG_WRITE
		MOV	REGNAME,#00H
		MOV	REGDATA,#0CDH
		LCALL	REG_WRITE
		MOV	REGNAME,#0F1H
		MOV	REGDATA,#7FH
		LCALL	REG_WRITE
		
		MOV	DPTR,#KEYTAB
		MOV	LCM_X,#00H
		MOV	LCM_Y,#58H
		LCALL	WR_ZB
		MOV	COUNT1,#14H
LGS11:	CLR	A
		MOVC	A,@A+DPTR
		LCALL	DDR_WRITE
		INC	DPTR
		DJNZ	COUNT1,LGS11
		LCALL	D60MS
		
		MOV	REGNAME,#0A1H		;设定缓存器[A1]
		MOV	REGDATA,#0F1H
		LCALL	REG_WRITE
		MOV	REGNAME,#0A0H		;设定缓存器[A0]
		MOV	REGDATA,#08H
		LCALL	REG_WRITE
		
LGS12:	LCALL	KEY_SCAN
		
		MOV	LCM_X,#20H
		MOV	LCM_Y,#58H
		LCALL	WR_ZB
		MOV	A,KEY_Y
		ADD	A,#30H
		LCALL	DDR_WRITE
		
		MOV	LCM_X,#26H
		MOV	LCM_Y,#58H
		LCALL	WR_ZB
		MOV	A,KEY_X
		ADD	A,#30H
		LCALL	DDR_WRITE
		AJMP	LGS12
;****************************************************
LCM_INIT:	MOV	COUNT1,#00H			;初始化
		MOV	COUNT2,#27H
LCM_INIT1:	MOV	DPTR,#INITTAB1
		MOV	A,COUNT1
		MOVC	A,@A+DPTR
		MOV	REGNAME,A
		MOV	DPTR,#INITTAB2
		MOV	A,COUNT1
		MOVC	A,@A+DPTR
		MOV	REGDATA,A
		LCALL	REG_WRITE
		INC	COUNT1
		DJNZ	COUNT2,LCM_INIT1
		RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LCM_CLR:	MOV	REGNAME,#0E0H		;清屏
		MOV	REGDATA,#00H
		LCALL	REG_WRITE
		MOV	REGNAME,#0F0H
		LCALL	REG_READ
		MOV	A,REGDATA1
		ORL	A,#08H
		MOV	REGDATA,A
		MOV	REGNAME,#0F0H
		LCALL	REG_WRITE
		
		MOV	REGNAME,#00H
		MOV	REGDATA,#0C5H
		LCALL	REG_WRITE
		MOV	LCM_X,#00H
		MOV	LCM_Y,#00H
		LCALL	WR_ZB
		MOV	A,#00H
		LCALL	DDR_WRITE
		RET
;****************************************************
KEY_SCAN:	MOV	REGNAME,#0A0H		;读缓存器[A0]
		LCALL	REG_READ
		MOV	REGNAME,#0A1H		;设定缓存器[A1]
		MOV	REGDATA,#0F1H
		LCALL	REG_WRITE
		LCALL	D60MS				;延时60ms
		MOV	A,REGDATA1
		JNB	ACC.7,KEY_SCAN		;判断键盘有无侦测到按键输入
		
KEY_SCAN1:	MOV	REGNAME,#0A2H		;读缓存器[A2]
		LCALL	REG_READ
		MOV	A,REGDATA1
		MOV	KEY_Y,#00H
		MOV	KEY_COUNT1,#08H
KEY_SCAN11:	JNB	ACC.0,KEY_SCAN2
		INC	KEY_Y
		RR	A
		DJNZ	KEY_COUNT1,KEY_SCAN11
		AJMP	KEY_SCAN
		
KEY_SCAN2:	MOV	REGNAME,#0A3H		;读缓存器[A3]
		LCALL	REG_READ
		MOV	A,REGDATA1
		MOV	KEY_X,#00H
		MOV	KEY_COUNT1,#08H
KEY_SCAN21:	JNB	ACC.0,KEY_SCAN3
		INC	KEY_X
		RR	A
		DJNZ	KEY_COUNT1,KEY_SCAN21
		AJMP	KEY_SCAN
		
KEY_SCAN3:	RET
;****************************************************
WR_ZB:	MOV	REGNAME,#60H		;定坐标
		MOV	REGDATA,LCM_X
		LCALL	REG_WRITE
		MOV	REGNAME,#70H
		MOV	REGDATA,LCM_Y
		LCALL	REG_WRITE
		RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
REG_WRITE:	MOV	A,REGNAME			;写资料到缓存器
		LCALL	REG_WR
		MOV	A,REGDATA
		LCALL	REG_WR
		RET
		
REG_WR:	MOV	P1,A
		CLR	CS1
		SETB	RD
		CLR	RS
		CLR	WR
		NOP
		NOP
		SETB	WR
		SETB	RS
		SETB	CS1
		RET

DDR_WRITE:	JB	BUSY,$			;写资料到DDRAM
		MOV	P1,A
		CLR	CS1
		SETB	RD
		SETB	RS
		CLR	WR
		NOP
		NOP
		SETB	WR
		SETB	RS
		SETB	CS1
		RET

REG_READ:	MOV	A,REGNAME			;读缓存器
		LCALL	REG_WR
		MOV	P1,#0FFH
		CLR	CS1
		SETB	WR
		CLR	RS
		CLR	RD
		NOP
		MOV	A,P1
		SETB	RD
		SETB	RS
		SETB	CS1
		MOV	REGDATA1,A
		RET
;****************************************************
DELAY2:	MOV	R6,#0EAH
DEL21:	MOV	R7,#0FFH
DEL22:	DJNZ	R7,DEL22
		DJNZ	R6,DEL21
		RET
		
D60MS:	MOV	R6,#78H
D60:		MOV	R7,#0F8H
		DJNZ	R7,$
		DJNZ	R6,D60
		RET
;****************************************************
INITTAB1:
DB 000H,001H,002H,003H,010H,011H,012H,021H,031H,041H,051H,020H,030H,040H,050H,060H
DB 061H,070H,071H,072H,080H,081H,091H,090H,0A0H,0A1H,0A2H,0A3H,0B0H,0B1H,0C0H,0C1H
DB 0C8H,0C9H,0CAH,0D0H,0E0H,0F0H,0F1H
INITTAB2:
DB 0C9H,0F2H,010H,080H,06BH,000H,091H,027H,0EFH,000H,000H,027H,0EFH,000H,000H,000H
DB 000H,000H,000H,0EFH,0AAH,000H,000H,006H,011H,000H,000H,000H,027H,0EFH,000H,00AH
DB 080H,080H,000H,080H,000H,0A0H,00FH

KEYTAB:
DB '键盘应用请按键KC KR '

		END
		

⌨️ 快捷键说明

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