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

📄 jp.asm

📁 1602液晶显示
💻 ASM
字号:
 KEYBUF    EQU 30H
 LCD_RS	EQU	P2.7
	LCD_RW	EQU	P2.6
	LCD_EN	EQU	P2.5
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: 	MOV KEYBUF,#-23
        ACALL LCD
XH:     ACALL KEY_B
     ACALL XS
	 AJMP XH
KEY_B:
      MOV P3,#0FH
	  MOV A,P3
	  ANL A,#0FH
	  CJNE A,#0FH,L1
	  AJMP WJ
L1:	  ACALL DELAY15MS
   MOV R1,#0EFH
L2:    MOV P3,R1
        MOV A,P3
	ANL A,#0FH
		CJNE A,#0FH,L3
		MOV A,R1
		RL A
		MOV R1,A
	 CJNE A,#0FEH,L2									
WJ: 
     RET
L3:MOV R2,A
   MOV A,R1
   ANL A,#0F0H
   ORL A,R2
   MOV 06H,A
   MOV R3,#00
   MOV DPTR,#KEYTBL
L4:MOV A,R3
   MOVC A,@A+DPTR
   CJNE A,06H,L5
   AJMP L6
L5:INC R3
   AJMP L4
L6:ACALL DELAY15MS
   MOV P3,#0FH
   MOV A,P3
   ANL A,#0FH
   CJNE A,#0FH,L6
   MOV KEYBUF,R3
   RET
   KEYTBL: DB 0EEH,0EDH,0EBH,0E7H,0DEH,0DDH,0DBH,0D7H,0BEH,0BDH,0BBH,0B7H,7EH,7DH,7BH,77H
          
  
							

LCD:	
	MOV	SP,	#60H
	MOV	P1,	#0FFH
	MOV	P2,	#0FFH
	CALL	LCD_INI
	    LCALL L7	
	MOV	R1,	#0
	MOV	DPTR,	#MESSAGE1
	MOV	R0,	#0
	MOV R1,#0
	
DISCHA:
	
	CALL	CHECK_BUSY
	MOV	A,	#80H
	ADD	A,	R0
	CALL	WCOM
	CALL	CHECK_BUSY
	MOV	A,	R1
	MOVC	A,	@A+DPTR		
	CALL 	WDATA
	INC	R0
	INC R1
	CJNE	R0, #10, DISCHA	
		MOV R0,#00H
		MOV R1,#0
		  MOV	DPTR,	#KEYT
	MOV	A,	#0C0H
DISCHA1:	 	CALL	CHECK_BUSY
	  MOV	A,	#0C0H
	ADD	A,	R0
	CALL	WCOM
	CALL	CHECK_BUSY
	MOV A,R1
	MOVC	A,	@A+DPTR		
	CALL 	WDATA
	INC	R0
	INC R1
	CJNE	R0, #15, DISCHA1	
	RET			
XS:		CALL	CHECK_BUSY
	MOV	A,	#0CCH
	CALL	WCOM
	CALL	CHECK_BUSY
		MOV	A,	KEYBUF
    CLR C
	SUBB A,#0AH
	JC	   SZ
    ADD A,#41H  
	AJMP EN
SZ:	MOV A,KEYBUF
	ADD A,#30H
EN:	CALL	WDATA

	RET
LCD_INI:
	CALL	DELAY15MS
	MOV	A,	#38H
	CALL 	WCOM
	CALL	DELAY5MS
	MOV	A,	#38H
	CALL	WCOM
	CALL	DELAY5MS
	MOV	A,	#38H
	CALL 	CHECK_BUSY
	MOV	A,	#38H
	CALL	WCOM
	CALL	CHECK_BUSY
	MOV	A,	#08H
	CALL	WCOM
	CALL	CHECK_BUSY
	MOV	A,	#01H
	CALL	WCOM
	CALL	CHECK_BUSY
	MOV	A,	#06H
	CALL	WCOM
	CALL	CHECK_BUSY	
	MOV	A,	#0CH
	CALL	WCOM
	RET

WDATA:
	MOV	P1,	A
	SETB	LCD_RS
	CLR	LCD_RW
	SETB	LCD_EN
	CALL	DELAY1MS
	CLR	LCD_EN
	NOP
	RET


WCOM:
	MOV	P1,	A
	CLR 	LCD_RS
	CLR	LCD_RW
	SETB	LCD_EN
	CALL	DELAY1MS
	CLR	LCD_EN
	NOP
	RET



CHECK_BUSY:
	RET
 	PUSH	ACC
	MOV 	P1,	#0FFH
	CLR	LCD_RS
	SETB	LCD_RW
	SETB	LCD_EN
	NOP
 WAIT1:
 	MOV	A,	P1
	ANL	A,	#80H
	JZ	WAIT2
	JMP	WAIT1
WAIT2:
	CLR	LCD_EN
	POP	ACC
	RET


DELAY5MS:
	MOV	R7,	#10
LOOP:	MOV	R6,	#250
	DJNZ	R6,	$	
	DJNZ	R7,	LOOP
	RET


DELAY15MS:
	MOV	R7,	#30
LOOP1:	MOV	R6,	#250
	DJNZ	R6,	$	
	DJNZ	R7,	LOOP1
	RET

DELAY1MS:
	MOV	R7,	#2
LOOP2:	MOV	R6,	#250
	DJNZ	R6,	$	
	DJNZ	R7,	LOOP2
	RET

DELAY1S:
	MOV	R7,	#10
LOOP4:	MOV	R6,	#200
LOOP3:	MOV	R5,	#250
	DJNZ	R5,	$
	DJNZ	R6,	LOOP3
	DJNZ	R7,	LOOP4
	RET
L7:
mov a,#40h
	CALL	Wcom
	CALL	CHECK_BUSY
mov r2,#64
mov r1,#00h
mov dptr,#cg
vg: mov a,r1
movc a,@a+dptr
mov p0,a
	CALL	WDATA

	CALL	CHECK_BUSY
inc r1
djnz r2,vg
ret
cg: db 0eh,00h,1fh,0ah,0ah,0ah,13h,00h
    db 08h, 0fh,12h,0fh, 0ah, 1fh, 02h, 02h 
	db 0fh, 09h, 0fh, 09h, 0fh, 09h, 11h, 00h
	db 1fh, 11h, 11h, 1fh, 11h, 11h, 1fh, 00h
	db   1fh, 04h, 04h, 04h, 04h, 04h, 04h, 1fh
	 db  0ah,0ah, 1bh, 1bh, 0ah, 0ah, 0ah, 1fh
	  db 18h,18h, 07h, 08h, 08h, 08h, 07h, 00h
	    db 18h,18h, 07h, 08h, 08h, 08h, 07h, 00h
		
		
	   MESSAGE1:
	DB	"2008",01h ,"7",02,"21",03,"                 "

		  KEYT: DB  "Enter a key:               "
	END

⌨️ 快捷键说明

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