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

📄 lcd.asm

📁 杭州炜煌公司的128*64点阵的LCD程序(不是看说明书就能写出来的
💻 ASM
字号:
		NAME	LCD
PUBLIC  WRCOM,WRDATA, WR_Con, WR_Data
PUBLIC	Disp_LineR, Disp_LineR1, Disp_LineDP, Disp_LineDP1
PUBLIC	Clear_LCD, Close_Cursor, LCD_INIT, Set_Cursor

;RS----A0  ,R/W---A1
Y12864_W_CON	XDATA	0FA00H		;写指令地址
Y12864_R_CON	XDATA	0FA02H		;读取忙状态地址
Y12864_W_Data	XDATA	0FA01H		;写数据地址
Y12864_R_Data	XDATA	0FA03H		;读数据地址

Y12864_CODE SEGMENT	CODE
RSEG	Y12864_CODE

;写指令
;写命令到LCD,参数A	
WR_Con:
WRCOM:		PUSH	DPL
		PUSH	DPH
		MOV	DPTR,#Y12864_W_CON	;写控制命令
		MOVX	@DPTR,A
		NOP
		MOV	DPTR,#Y12864_R_CON	;读忙状态
WR_Con1:	MOVX	A,@DPTR
		JB	ACC.7,WR_Con1		;检查液晶显示是否处于忙状态
		POP	DPH
		POP	DPL
		RET
	
;写数据	
;写数据到LCD,参数A	
WR_Data:
WRDATA:		PUSH	DPL
		PUSH	DPH
		MOV	DPTR,#Y12864_W_Data
		MOVX	@DPTR,A
		MOV	DPTR,#Y12864_R_CON
WR_Data1:	MOVX	A,@DPTR
		JB	ACC.7,WR_Data1		;检查液晶显示是否处于忙状态
		POP	DPH
		POP	DPL
		RET

;从位置(a)开始显示DPTR指向的一行
Disp_LineDP:	CALL	WR_Con			;定位,第一个数据显示的位置
Disp_LineDP1:	CLR	A
		MOVC	A,@A+DPTR
		JZ	Disp_LineDP2		;判断是否到了显示结束标志
		INC	DPTR
		CALL	WR_Data
		SJMP	Disp_LineDP1
Disp_LineDP2:	RET

;从位置(a)开始显示R0指向的一行
Disp_LineR:	CALL	WR_Con			;定位,第一个数据显示的位置
Disp_LineR1:	MOV	A,@R0
		JZ	Disp_LineR2		;判断是否到了显示结束标志	
		INC	R0
		CALL	WR_Data
		SJMP	Disp_LineR1
Disp_LineR2:	RET

;清屏
Clear_LCD:	MOV	A,#1H
		CALL	WR_Con
		RET
;关光标
Close_Cursor:	MOV	A,#0CH
		CALL	WR_Con
		RET
		
;********************************
;液晶初始化
;********************************	
LCD_INIT:	MOV	A,#30H			;不调用扩充
		LCALL	WR_Con
		MOV	A,#04H			;点设定,游标向右移
		LCALL	WR_Con
		MOV	A,#0FH			;开光标
		LCALL	WR_Con
		MOV	A,#0CH			;关光标
		LCALL	WR_Con
		MOV	A,#01H			;清屏
		LCALL	WR_Con
		NOP
		MOV	A,#02H			;地址归位,光标移到第1行第1列
		LCALL	WRCOM
		RET

;设置光标	A--光标位置
Set_Cursor:	PUSH	ACC
		MOV	A,#0EH			;光标锁定相应调整的时间内容下
		CALL	WRCOM
		POP	ACC
		CALL	WRCOM
		RET

		END

⌨️ 快捷键说明

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