📄 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 + -