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

📄 keyboardlcd.asm

📁 4*4矩阵键盘输入,液晶1602显示的计算器. 有仿真文件和源程序
💻 ASM
字号:
EN	EQU	P2.2
	RW	EQU	P2.1
	RS	EQU	P2.0
	LCD	EQU	P0
LINE	EQU		30H
ROW		EQU		31H
VAL		EQU		32H
x equ 33h
		ORG		0000h
ljmp start
org 0030h
START:			MOV		x,#00H
begin:lcall keyscan
lcall disp
ljmp begin

KEYSCAN:	MOV		P3,#0F0H	;列线置高电平,行线置高电平
L1:		JNB		P3.0,L2		;逐行扫描
		LCALL	DELAY
		JNB		P3.0,L2
		MOV		LINE,#00H	;存行号
		LJMP	RSCAN
L2:		JNB		P3.1,L3
		LCALL	DELAY
		JNB		P3.1,L3
		MOV		LINE,#01H	;存行号
		LJMP	RSCAN
L3:		JNB		P3.2,L4
		LCALL	DELAY
		JNB		P3.2,L4
		MOV		LINE,#02H	;存行号
		LJMP	RSCAN
L4:		JNB		P3.3,L1
		LCALL	DELAY
		JNB		P3.3,L1
		MOV		LINE,#03H	;存行号

RSCAN:	MOV		P3,#0FH		;行线列线电平互换
C1:		JNB		P3.4,C2		;逐列扫描
		MOV		ROW,#00H	;存列号
		LJMP	CALCU
C2:		JNB		P3.5,C3
		MOV		ROW,#01H	;存列号
		LJMP	CALCU
C3:		JNB		P3.6,C4
		MOV		ROW,#02H	;存列号
		LJMP	CALCU
C4:		JNB		P3.7,C1
		MOV		ROW,#03H	;存列号	

CALCU:	MOV		A,LINE		;根据行号和列号计算键值
		MOV		B,#04H
		MUL		AB
		ADD		A,ROW
		MOV		VAL,A		;存键值
RET
		

disp:call lcd_init
mov r0,x
jb f0,loop3
cjne r0,#16,comp
comp:jnc loop
mov a,r0
add a,#80h
sjmp done
loop:setb f0
mov x,#00h
loop3:mov r0,x
mov a,r0
add a,#0c0h
done:call wr_inst
inc x
mov r0,x
cjne r0,#16,goon

clr f0
sjmp exit
goon:mov a,val
cjne a,#0ah,comp2
comp2:jnc loop2
add a,#30h
sjmp done2
loop2:add a,#37h
done2:call wr_data
sjmp exit1
exit:mov x,#00h
mov r0,x
exit1:ret




lcd_init:	MOV	A,#00111000B		;设定为8BIT,2行,5*7字形
	CALL	WR_INST
	;MOV	A,#00001000B		;关闭显示屏
	;CALL	WR_INST
		MOV	A,#00001110B		;开启显示屏,游标,与闪烁
	CALL	WR_INST
	MOV	A,#00000110B		;设定AC+1
	CALL	WR_INST
        ret


WR_INST:
CALL	CHECK_BF
	CLR	RS
	CLR	RW
	SETB	EN
	MOV	LCD,A
	CLR	EN
	RET
;====================================
CHECK_BF:
	PUSH	ACC
BUSY:	
	CLR	RS
	SETB	RW
	SETB	EN			
	MOV	A,LCD
	CLR	EN			;硬件实验可以没有这条语句,仿真实验没有万万不可.
	SETB	EN			;硬件实验可以没有这条语句,仿真实验没有万万不可.
	JB	ACC.7,BUSY
	CALL	DELAY
	POP	ACC
	RET

WR_DATA:
	CALL	CHECK_BF
	SETB	RS
	CLR	RW
	SETB	EN
	MOV	LCD,A
	CLR	EN
	RET

DELAY2:	MOV	R3,#20
D3:	MOV	R4,#200
D2:	MOV	R5,#250
	DJNZ	R5,$
	DJNZ	R4,D2
	DJNZ	R3,D3
	RET

DELAY:   	MOV	R6,#60
D1:		MOV	R7,#250
		DJNZ	R7,$
		DJNZ	R6,D1
		RET


END

⌨️ 快捷键说明

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