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

📄 1602液晶显示原理.asm

📁 lcd1602的一些中文资料
💻 ASM
字号:
;***************************************************************************
;* Title : Accessing to LCD-CONTROLLER *
;* Date : 2000.4.27 *
;* Support telephone: 0731-4167806,4167808(CHANGSHA SUNMAN) *
;* Support fax :0731-4167807 Support E-mail:sunman@public.cs.hn.cn *
;* Create by :褚建军(chujianjun),朱长春(zhuchangchun) *
;* DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER *
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031*
; *DB0---P1.0* *DB4---P1.4* *RS-------------P3.0*
; *DB1---P1.1* *DB5---P1.5* *RW-------------P3.1*
; *DB2---P1.2* *DB6---P1.6* *E--------------P3.5* (参见说明书)
; *DB3---P1.3* *DB7---P1.7* *VLCD接10K可调电阻到GND*
;注:8031的晶振频率为12MHz
;**************************************************************************
RSPIN EQU P3.0
RWPIN EQU P3.1
EPIN EQU P3.5
XPOS EQU 20H ;列方向地址指针(用于LCDPOS子程序)
YPOS EQU 21H ;行方向地址指针(用于LCDPOS子程序)
	ORG 0000H
	JMP START
START: 	MOV SP,#60H
	CLR EPIN
MAIN: 	MOV R7,#'0' ;测试主程序
MN_PA: ;整屏循环显示"0"到"9"及空格
	CALL LCDRESET
	MOV A,R7
	CALL LCDFILL
	CALL DELAY400MS
	INC R7
	MOV A,R7
	CJNE A,#'9'+1,MN_PA
	MOV A,#' '
	CALL LCDFILL
	CALL DELAY400MS
	JMP MAIN
LCDFILL: 
	MOV B,A
	MOV YPOS,#0
LFL_PB: MOV XPOS,#0 ;整屏显示A中所代表字符
LFL_PA: MOV A,B
	CALL LCDWRITE
	INC XPOS
	MOV A,XPOS
	CJNE A,#16,LFL_PA
	INC YPOS
	MOV A,YPOS
	CJNE A,#2,LFL_PB
	RET

LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址
	PUSH ACC
	ANL XPOS,#0FH ;X位置范围(0到15)
	ANL YPOS,#01H ;Y位置范围(0到1)
	MOV A,YPOS ;(XPOS,YPOS)对应DDRAM地址
	CJNE A,#00,LPS_LAY ;(第一行)X: 第0----15个字符
	MOV A,XPOS ; DDRAM: 0----0FH
	JMP LPS_LAX
	LPS_LAY:MOV A,XPOS ;(第二行)X: 第0----15个字符
	ADD A,#40H ; DDRAM: 40----4FH
	LPS_LAX:ORL A,#80H ;设置DDRAM地址
	CALL LCDWC
	POP ACC
	RET
LCDWRITE: ;定位写字符子程序
	CALL LCDPOS ;定位显示地址
	CALL LCDWD ;写字符
	RET
LCDRESET: ;初始化程序
	CALL DELAY5MS ;延时15MS
	CALL DELAY5MS
	CALL DELAY5MS
	MOV A,#38H ;显示模式设置(不检测忙信号)
	CALL LCDWCN ;共三次
	CALL DELAY5MS
	MOV A,#38H
	CALL LCDWCN
	CALL DELAY5MS
	MOV A,#38H 
	CALL LCDWCN

	MOV A,#38H ;显示模式设置(以后均检测忙信号)
	CALL LCDWC
	MOV A,#08H ;显示关闭
	CALL LCDWC
	MOV A,#01H ;显示清屏
	CALL LCDWC
	MOV A,#06H ;显示光标移动设置
	CALL LCDWC
	MOV A,#0CH ;显示开及光标设置
	CALL LCDWC
	RET
LCDWC: ;送控制字子程序(检测忙信号)
	CALL WAITIDLE
	LCDWCN: ;送控制字子程序(不检测忙信号)
	CLR RSPIN ;RS=0 RW=0 E=高脉冲
	CLR RWPIN
	MOV P1,A
	SETB EPIN
	NOP
	CLR EPIN
	RET
LCDWD: ;写字符子程序
	CALL WAITIDLE
	SETB RSPIN ;RS=1 RW=0 E=高脉冲
	CLR RWPIN
	MOV P1,A
	SETB EPIN
	NOP
	CLR EPIN
	RET
WAITIDLE:
	PUSH ACC ;正常读写操作之前必须检测LCD控制器状态
	MOV P1,#0FFH
	CLR RSPIN ;RS=0 RW=1 E=高电平
	SETB RWPIN
	SETB EPIN
WTD_PA: NOP ;
DB7: 	0 LCD控制器空闲
	JB P1.7,WTD_PA ; 1 LCD控制器忙
	CLR EPIN
	POP ACC
	RET
DELAY5MS:
	MOV R1,#25 ;延时子程序(5MS)
DL5_PA: MOV R2,#100
	DJNZ R2,$
	DJNZ R1,DL5_PA
	RET
DELAY400MS:
	MOV R0,#20 ;延时子程序(400MS)
DL4_PA: MOV R1,#100
DL4_PB: MOV R2,#100
	DJNZ R2,$
	DJNZ R1,DL4_PB
	DJNZ R0,DL4_PA
	RET
END

⌨️ 快捷键说明

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