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

📄 lcd.asm

📁 51单片机用汇编实例 包括ad
💻 ASM
字号:
;================================================================
; 文件名称: LCD.ASM
; 功能描述: 图形点阵液晶, 128*64, 显示"唐都科教仪器公司欢迎您"
;================================================================

RW	BIT P1.0
RS	BIT P1.1
CS2	BIT P1.2
CS1	BIT P1.3
E	BIT P1.4
LED	BIT P1.5

XADD	DATA 30H
YADD	DATA 31H

	ORG 0000H
	LJMP START
	ORG 0100H
START:	CLR LED			;关闭背景灯
	MOV R4, #3FH
	LCALL SENDMCMD		;打开显示
	LCALL SENDSCMD
	MOV R4, #0C0H
	LCALL SENDMCMD		;设置起始行
	LCALL SENDSCMD
	LCALL CLEAR		;清屏
	MOV XADD, #0BAH		;显示汉字"唐"
	MOV YADD, #40H
	MOV DPTR, #TANG
	LCALL WRITEHZM

	MOV XADD, #0BAH		;显示汉字"都"
	MOV YADD, #50H
	MOV DPTR, #DU
	LCALL WRITEHZM

	MOV XADD, #0BAH		;显示汉字"科"
	MOV YADD, #60H
	MOV DPTR, #KE
	LCALL WRITEHZM

	MOV XADD, #0BAH		;显示汉字"教"
	MOV YADD, #70H
	MOV DPTR, #JIAO
	LCALL WRITEHZM

	MOV XADD, #0BAH		;显示汉字"仪"
	MOV YADD, #40H
	MOV DPTR, #YI
	LCALL WRITEHZS

	MOV XADD, #0BAH		;显示汉字"器"
	MOV YADD, #50H
	MOV DPTR, #QI
	LCALL WRITEHZS

	MOV XADD, #0BAH		;显示汉字"公"
	MOV YADD, #60H
	MOV DPTR, #GONG
	LCALL WRITEHZS

	MOV XADD, #0BAH		;显示汉字"司"
	MOV YADD, #70H
	MOV DPTR, #SI
	LCALL WRITEHZS

	MOV XADD, #0BCH		;显示汉字"欢"
	MOV YADD, #60H
	MOV DPTR, #HUAN
	LCALL WRITEHZM

	MOV XADD, #0BCH		;显示汉字"迎"
	MOV YADD, #70H
	MOV DPTR, #YING
	LCALL WRITEHZM

	MOV XADD, #0BCH		;显示汉字"您"
	MOV YADD, #40H
	MOV DPTR, #NIN
	LCALL WRITEHZS

	MOV XADD, #0BCH		;显示"感叹号"
	MOV YADD, #50H
	MOV DPTR, #GANTAN
	LCALL WRITEHZS

MLP0:	MOV R4, #0C0H		;滚屏显示
MLP1:	INC R4
	LCALL SENDMCMD
	LCALL SENDSCMD
	MOV R0, #0FFH
MLP2:	LCALL DELAY
	DJNZ R0, MLP2
	MOV R0, #0FFH
MLP3:	LCALL DELAY
	DJNZ R0, MLP3
	CJNE R4, #0FFH, MLP1
	AJMP MLP0
;写汉字到控制器1
;入口参数: XADD YADD 以及汉字表首地址
WRITEHZM:
	MOV R4, XADD
	LCALL SENDMCMD
	MOV R4, YADD
	LCALL SENDMCMD
	MOV R3, #00H
	MOV R0, #10H		;写头16字节
WMLP1:	MOV A, R3
	MOVC A, @A+DPTR
	MOV R4, A
	LCALL SENDMDATA
	INC R3
	DJNZ R0, WMLP1
	INC XADD
	MOV R4, XADD
	LCALL SENDMCMD
	MOV R4, YADD
	LCALL SENDMCMD
	MOV R0, #10H		;写后16字节
WMLP2:	MOV A, R3
	MOVC A, @A+DPTR
	MOV R4, A
	LCALL SENDMDATA
	INC R3
	DJNZ R0, WMLP2
	RET
;写汉字到控制器2
;入口参数: XADD YADD 以及汉字表首地址
WRITEHZS:
	MOV R4, XADD
	LCALL SENDSCMD
	MOV R4, YADD
	LCALL SENDSCMD
	MOV R3, #00H
	MOV R0, #10H
WSLP1:	MOV A, R3
	MOVC A, @A+DPTR
	MOV R4, A
	LCALL SENDSDATA
	INC R3
	DJNZ R0, WSLP1
	INC XADD
	MOV R4, XADD
	LCALL SENDSCMD
	MOV R4, YADD
	LCALL SENDSCMD
	MOV R0, #10H
WSLP2:	MOV A, R3
	MOVC A, @A+DPTR
	MOV R4, A
	LCALL SENDSDATA
	INC R3
	DJNZ R0, WSLP2
	RET

;入口参数: R4, 命令字节
SENDMCMD:	;向控制器1发送命令
	PUSH ACC
	MOV R5, #01H
	LCALL DELAY
	CLR RS
	CLR RW
	CLR CS1
	MOV A, R4
	MOV P0, A
	CLR E
	NOP
	SETB E
	NOP
	CLR E
	NOP
	SETB CS1
	POP ACC
	RET
;入口参数: R4, 命令字节
SENDSCMD:	;向控制器2发送命令
	PUSH ACC
	MOV R5, #02H
	LCALL DELAY
	CLR RS
	CLR RW
	CLR CS2
	MOV A, R4
	MOV P0, A
	CLR E
	NOP
	SETB E
	NOP
	CLR E
	NOP
	SETB CS2
	POP ACC
	RET	
;入口参数: R4, 数据字节
SENDMDATA:	;向控制器1发送数据
	PUSH ACC
	MOV R5, #01H
	LCALL DELAY
	SETB RS
	CLR RW
	CLR CS1
	MOV A, R4
	MOV P0, A
	CLR E
	NOP
	SETB E
	NOP
	CLR E
	NOP
	SETB CS1
	POP ACC
	RET
;入口参数: R4, 数据字节
SENDSDATA:	;向控制器2发送数据
	PUSH ACC
	MOV R5, #02H
	LCALL DELAY
	SETB RS
	CLR RW
	CLR CS2
	MOV A, R4
	MOV P0, A
	CLR E
	NOP
	SETB E
	NOP
	CLR E
	NOP
	SETB CS2
	POP ACC
	RET

;状态查询
;入口参数: R5; R5=1, 表示为控制器1, R5=2为控制器2
QUERY:	PUSH ACC
	MOV R7, #0A0H
	CLR RS
	SETB RW
	CJNE R5, #01, QLP1
	CLR CS1
	AJMP QLP2
QLP1:	CLR CS2
QLP2:	SETB E
	MOV A, P0
	CLR E
	ANL A, #80H
	CJNE A, #80H, QLP4
	DEC R7
	CJNE R7, #00H, QLP2
	CJNE R5, #01H, QLP3
	CLR CS1
	AJMP QLP4
QLP3:	CLR CS2
QLP4:	POP ACC
	RET
;清屏
CLEAR:	MOV R0, #08H
	MOV R2, #0B8H
CLP1:	MOV A, R2
	MOV R4, A
	LCALL SENDMCMD
	LCALL SENDSCMD
	MOV R4, #40H
	LCALL SENDMCMD
	LCALL SENDSCMD
	MOV R1, #40H
	MOV R4, #00H
CLP2:	LCALL SENDMDATA
	LCALL SENDSDATA
	DJNZ R1, CLP2
	INC R2
	DJNZ R0, CLP1
	RET

;延时程序
DELAY:	MOV R7, #1H
DLP1:	MOV R6, #40H
DLP2:	DJNZ R6, DLP2
	DJNZ R7, DLP1
	RET

	$include (LCDH.ASM)	;包含字库

	END

⌨️ 快捷键说明

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