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

📄 lcd.txt

📁 lcd液晶显示汇编程序
💻 TXT
字号:
;***************************lcd使用说明*************************************
;4脚-RS为寄存器选择(E2)、5脚-RW为读写信号线(E1)、6脚-E端为使能端(E0),C口为数据
;1接GND,2接VDD,3接VL,7~14数据线,15脚BLA,16脚BLK
;******************************************************************************
	LIST	P=16F877A
	#INCLUDE<P16F877A.INC>
ACC	EQU	45H
ACD	EQU	46H
;----------------------------------------------------------------------
	ORG	00H
	NOP
	GOTO	MAIN
MAIN
	BANKSEL	TRISC
	MOVLW	07H
	MOVWF	ADCON1		;将E口设置为数字引脚
	CLRF	TRISC		;定义数据口为D口,为输出
	CLRF	TRISE		;定义E口为控制,RE0为RS、RE1为R/W、RE2为E
	BANKSEL	PORTC
;----------------------------------------------------------------------
	CALL	INIT		;
	CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0  写命令
	MOVLW	80H		;80H地址是定义在第一行显示
	MOVWF	ACC
	CALL	WRITE

	CALL	CHECK_BUSY
	BSF	PORTE,2		;RS=1  写数据
	MOVLW	54H		;送入一个字符'T'的ASCII值
	MOVWF	ACC
	CALL	WRITE

	CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0  写命令
	MOVLW	0C0H		;C0H地址定义在第二行显示
	MOVWF	ACC
	CALL	WRITE

	CALL	CHECK_BUSY
	BSF	PORTE,2		;RS=1  写数据
	MOVLW	74h		;送入一个字符't'的ASCII值
	MOVWF	ACC
	CALL	WRITE
;-------------------------------------------------------------------
	nop
	GOTO	$-1
;================LCD初始化===============================
INIT	
	CALL	DELAYLCD10MS
	BCF	PORTE,2		;RS=0
	MOVLW	38H		;显示模式设置5*7点阵,8位数据,16*2显示
	MOVWF	ACC
	CALL	WRITE

	CALL	DELAYLCD10MS
	;CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0
	MOVLW	38H
	MOVWF	ACC
	CALL	WRITE	

	CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0
	MOVLW	0FH  		;D=1开显示,C=1开光标,B=1光标闪烁  (00001DCB)
	MOVWF	ACC		;D=0关显示,C=0关光标,B=0光标不闪烁(00001DCB)
	CALL	WRITE

	CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0
	MOVLW	06H		;显示光标移动位置(000001NS)
	MOVWF	ACC
	CALL	WRITE

	CALL	CHECK_BUSY
	BCF	PORTE,2		;RS=0
	MOVLW	01H		;01H显示清屏,02H显示回车
	MOVWF	ACC
	CALL	WRITE
	RETURN
;=============检查忙信号======================
CHECK_BUSY
	BCF	PORTE,2
	BSF	PORTE,1
	BANKSEL	TRISC
	MOVLW	0FFH		;定义C口为LCD的输入
	MOVWF	TRISC
	BANKSEL	PORTC
	BSF	PORTE,0		;E=1 (使能)
	NOP
	MOVF	PORTC,0
	MOVWF	ACD
	BCF	PORTE,0		;E=0(E由高电平跳变成低电平时,液晶模块执行命令)
	BTFSC	ACD,7		;读写检测(1禁止,0允许)
	GOTO	CHECK_BUSY
	CALL	DELAYLCD10MS
	BANKSEL	TRISC
	CLRF	TRISC		;又重新定义C口为单片机的输出
	BANKSEL	PORTC
	RETURN
;===========写操作==========================
WRITE
	MOVF	ACC,0
	MOVWF	PORTC
	BCF	PORTE,1	   ;R/W=0
			   ;(RS=0、R/W=0 时写入命令)、(RS=1、R/W=0 时写入数据)
	BSF	PORTE,0	   ;E=1 (使能)
	NOP
	BCF	PORTE,0    ;E=0 (E由高电平跳变成低电平时,液晶模块执行命令)
	RETURN			
;=============================================
DELAYLCD10MS
	MOVLW	D'13'
	MOVWF	47H
LOP1
	MOVLW	D'255'
	MOVWF	48H
LOP2
	DECFSZ	48H,1
	GOTO	LOP2
	DECFSZ	47H,1
	GOTO	LOP1
	RETURN
;---------------------------------------------------------------------------
	END

⌨️ 快捷键说明

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