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

📄 lcm046.asm

📁 lcm046通用段式液晶显示模块汇编驱动程序
💻 ASM
字号:
PCON    EQU     87H
;***********LCD10-3V TEST **************************************
;/CS=P1.5  /WR=P1.3  DATA=P1.2    ********************
;RAM 20H:COMMAND CODE    ********************
;RAM 21H: LCD ADDR***
;RAM 25H: LCD DATA***
		ORG 0000H
		JMP START
		ORG 0100H

START:          MOV P1,#0FFH
		SETB P3.7
		CALL DLY500
		MOV 20H,#00101001B      ;INITIALIZE
		CALL WRCOM
		MOV 20H,#00011000B      ;RC
		CALL WRCOM
		MOV 20H,#00000001B      ;SYS EN
		CALL WRCOM
		MOV 20H,#00000011B      ;LCD ON
		CALL WRCOM
		MOV 21H,#00000000B      ;CLEAR DISPLAY 
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00000000B      ;FIRST ADDR
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		CALL DLY1S

		MOV 21H,#00000000B      ;DISPLAY  8
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00001111B
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		MOV P1,#0FFH
		CALL DLY1S
		
		CALL DLY500
		MOV P1,#0FFH
		CALL DLY1S
		CALL WR123
		MOV P1,#0FFH
		CALL DLY1S
		CALL DLY1S

		MOV 21H,#00000000B      ;DISPLAY  D0
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00000001B
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		MOV P1,#0FFH
		CALL DLY1S
		MOV 21H,#00000000B      ;DISPLAY  D1
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00000010B
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		MOV P1,#0FFH
		CALL DLY1S
		MOV 21H,#00000000B      ;DISPLAY  D2
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00000100B
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		MOV P1,#0FFH
		CALL DLY1S
		MOV 21H,#00000000B      ;DISPLAY  D3
		MOV 23H,21H
		MOV R6,#0
		CALL WRDD
		MOV 25H,#00001000B
		MOV 27H,25H
		CALL WRDA
		CALL WALP
		MOV P1,#0FFH
		CALL DLY1S
		



STOP:           MOV P1,#0FFH
		CALL DLY1S
		MOV 20H,#02H            ;LCD OFF
		CALL WRCOM
		MOV P1,#0FFH
		MOV 20H,#00H            ;SYS DI


		MOV 20H,#00001101B      ;ctc=0
		CALL WRCOM
		MOV 20H,#00001001B      ;BZ  ON
		CALL WRCOM
		MOV 20H,#01100000B      ;BZ =2KZ
		CALL WRCOM
		CALL DLY1S
		MOV 20H,#00001000B      ;BZ  OFF
		CALL WRCOM
		CALL DLY500

		setb p3.7                ;wdt led off
		setb p1.7               ;test wdt
		jnb p1.7,se0
		setb 20h
		jmp ss1
se0:            clr 20h
ss1:            nop
		MOV 20H,#10100110B      ;WDT=1/16 S
		CALL WRCOM
		MOV 20H,#00001101B      ;ctc=0
		CALL WRCOM
		MOV 20H,#00001110B      ;wdt=0
		CALL WRCOM
		MOV 20H,#00000111B      ;WDT ON
		CALL WRCOM
		MOV 20H,#10001000B      ;WDT/CTC EN
		CALL WRCOM
		CALL DLY500             ;1S
		CALL DLY500             ;1S
		jnb p1.7,se00
		setb 21h
		jmp ss2
se00:           clr 21h
ss2:            jnb 20h,ss3
		jb 21h,ss3
		clr  p3.7                ;wdt  led ok
		CALL DLY1S              ;1S
		CALL DLY1S              ;1S
		jmp ss4
ss3:            setb p3.7               ;wdt led off
ss4:
		MOV 20H,#00000101B      ;WDT OFF
		CALL WRCOM
		MOV 20H,#10000000B      ;WDT/CTC DIS
		CALL WRCOM
		MOV 20H,#00001110B      ;WDT=0
		CALL WRCOM


		MOV 20H,#03H            ;LCD ON
		CALL WRCOM

		JMP START

;**** LCD DRIVER MODE  SUB. **************
;WRITE COMMAND SUB. ***********
WRCOM:  SETB P1.5               ;/CS=1
	NOP
	CALL DLY5
	CLR P1.5                 ;/CS=0
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	NOP
	SETB P1.2               ;D=1 (100)
	CALL DLY5
	NOP
	SETB P1.3               ;/WR=1
	CALL DLY5
	NOP
	CLR P1.3                ;/WR=0
	CALL DLY5
	NOP
	CLR P1.2                ;D=0
	CALL DLY5
	NOP
	SETB P1.3               ;/WR=1
	CALL DLY5
	NOP
	CLR P1.3                ;/WR=0
	CALL DLY5
	NOP
	CLR P1.2                ;D=0
	CALL DLY5
	NOP
	SETB P1.3               ;/WR=1
	CALL DLY5
	NOP

	MOV R7,#9               ;LOOP=DATA 8 BIT +1X
	CLR C
LOOPWR: NOP
	CALL DLY5
	CLR P1.3
	CALL DLY5
	MOV A,20H
	RLC A
	MOV 20H,A
	JC WR1
	CLR P1.2                ;DATA=0
	CALL DLY5
	JMP WRR
WR1:    SETB P1.2               ;DATA=1
	CALL DLY5
WRR:    SETB P1.3
	CALL DLY5
	DJNZ R7,LOOPWR
	RET

;************************************************************
;LOOP WRDA SUB
WALP:
ST1:    MOV 21H,23H
	MOV A,21H
	ADD A,#00000100B
	MOV 21H,A
	MOV 23H,A
	inc r6
	CALL WRDD
	MOV 25H,27H
	CALL WRDA
	cjne R6,#31,st1
	RET

;WRITE DATA SUB.*********************************************
WRDD:   SETB P1.5               ;/CS=1
	CALL DLY5
	NOP
	CLR P1.5                 ;/CS=0
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	SETB P1.2               ;D=1 (101)
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	CLR P1.2                ;D=0
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	SETB P1.2                ;D=1
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5

	MOV R4,#6
	MOV 22H,21H
ADDWR2: NOP
	CALL DLY5
	CLR P1.3
	CALL DLY5
	MOV A,21H
	RLC A
	MOV 21H,A
	JC WR11
	CLR P1.2                ;DATA=0
	CALL DLY5
	JMP WRR1
WR11:   NOP
	CALL DLY5
	 SETB P1.2               ;DATA=1
	CALL DLY5
WRR1:   NOP
	CALL DLY5
	SETB P1.3
	CALL DLY5
	DJNZ R4,ADDWR2
	RET

WRDA:   MOV R5,#4               ;LOOP=DATA 4 BIT
ADDWR3: NOP
	CALL DLY5
	CLR P1.3
	CALL DLY5
	MOV A,25H
	RRC A
	MOV 25H,A
	JC WR12
	CLR P1.2                ;DATA=0
	CALL DLY5
	JMP WRR2
WR12:   NOP
	CALL DLY5
	SETB P1.2               ;DATA=1
	CALL DLY5
WRR2:   NOP
	CALL DLY5
	SETB P1.3
	CALL DLY5
	DJNZ R5,ADDWR3
	RET

DLY5:   NOP
	NOP
	NOP
	NOP
	RET
DLY25M: MOV R1,#250             ;12M/2.5MS
DLOP:   CALL DLY5
	CALL DLY5
	DJNZ R1,DLOP
	RET
DLY1S:  MOV R0,#20             ;1S
DLOP1:  CALL DLY25M
	CALL DLY25M
	DJNZ R0,DLOP1
	RET
DLY500: MOV R0,#5
DLOP11: CALL DLY25M
	CALL DLY25M
	DJNZ R0,DLOP11
	RET
;lianxv wr sub==============
wr123:  nop
	SETB P1.5               ;/CS=1
	CALL DLY5
	NOP
	CLR P1.5                 ;/CS=0
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	SETB P1.2               ;D=1 (101)
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	CLR P1.2                ;D=0
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5
	CLR P1.3                ;/WR=0
	CALL DLY5
	SETB P1.2                ;D=1
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5

	MOV R2,#6
LOOP:   CLR P1.3                ;/WR=0
	CALL DLY5
	CLR P1.2               ;D=0 
	CALL DLY5
	SETB P1.3               ;/WR=1
	CALL DLY5
	DJNZ R2,LOOP
	
	MOV R3,#8
	MOV DPTR,#TABDA
LOOP1:  CLR A
	MOVC A,@A+DPTR
	MOV 25H,A       
	CALL WRDA
	INC DPTR
	DJNZ R3,LOOP1
	RET
TABDA:  DB 08H,05H,0DH,0BH,09H,0FH,0AH,07H;
	END

⌨️ 快捷键说明

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