📄 lcd.asm
字号:
RSO BIT P1.0
RW BIT P1.1
LCDEN BIT P1.2
CLR_DISP EQU 01H
RT_HM EQU 02H
EM_SET EQU 06H
DISP_ON EQU 0CH
DISP_OFF EQU 08H
CURS_ON EQU 0EH
CURS_OFF EQU 0CH
DISP_LFST EQU 18H
DISP_RTST EQU 1CH
CURS_LFST EQU 10H
CURS_RTST EQU 14H
FUN_SET EQU 28H
DISP_WD EQU 20H
LEN BIT 01H
MAIN:
LCALL LCD_SETUP
LCALL DISP_HEL_WORLD
WAIT:
NOP
SJMP WAIT
LCD_SETUP:
MOV DISP_WD,#30H
ACALL DDATC_WR
ACALL DELAY_5MSEC
MOV DISP_WD,#30H
ACALL DDATC_WR
ACALL DELAY_5MSEC
ACALL DELAY_150MCSEC
MOV DISP_WD,#30H
ACALL DDATC_WR
ACALL DELAY_5MSEC
ACALL DELAY_150MCSEC
MOV DISP_WD,#20H
ACALL DDATC_WR
ACALL DELAY_5MSEC
ACALL DELAY_150MCSEC
MOV DISP_WD,#FUN_SET
ACALL DDATC_WR
ACALL DELAY_150MCSEC
MOV DISP_WD,#DISP_RTST
ACALL DDATC_WR
ACALL DELAY_150MCSEC
MOV DISP_WD,#RT_HM
ACALL DDATC_WR
ACALL DELAY_150MCSEC
MOV DISP_WD,#DISP_ON
ACALL DDATC_WR
ACALL DELAY_150MCSEC
MOV DISP_WD,#EM_SET
ACALL DDATC_WR
ACALL DELAY_150MCSEC
RET
DDATC_WR:
MOV P1,#00H
CLR LCDEN
NOP
CLR RSO
NOP
CLR RW
NOP
ANL P1,#0FH
NOP
NOP
NOP
NOP
SETB LCDEN
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,DISP_WD
ANL A,#0F0H
ORL P1,A
ACALL DELAY_400MCSEC
NOP
NOP
NOP
NOP
NOP
NOP
CLR LCDEN
ACALL DELAY_400MCSEC
CLR RSO
NOP
CLR RW
NOP
CLR LCDEN
JB LEN,DDATC_OUT
ANL P1,#0FH
NOP
NOP
NOP
NOP
NOP
SETB LCDEN
NOP
NOP
NOP
NOP
NOP
MOV A,DISP_WD
ANL A,#0FH
SWAP A
ORL P1,A
ACALL DELAY_400MCSEC
NOP
NOP
NOP
NOP
NOP
NOP
CLR LCDEN
NOP
DDATC_OUT:
RET
DDATD_WR:
MOV P1,#00H
CLR LCDEN
NOP
CLR RSO
NOP
CLR RW
NOP
SETB RSO
NOP
ANL P1,#0FH
NOP
NOP
NOP
NOP
NOP
SETB LCDEN
NOP
NOP
NOP
NOP
MOV A,DISP_WD
ANL A,#0F0H
ORL P1,A
LCALL DELAY_400MCSEC
NOP
NOP
NOP
NOP
NOP
NOP
CLR LCDEN
NOP
NOP
NOP
NOP
NOP
CLR RSO
LCALL DELAY_400MCSEC
NOP
CLR RW
NOP
CLR LCDEN
NOP
SETB RSO
NOP
ANL P1,#0FH
NOP
NOP
NOP
NOP
NOP
SETB LCDEN
NOP
NOP
NOP
NOP
NOP
MOV A,DISP_WD
ANL A,#0FH
SWAP A
ORL P1,A
LCALL DELAY_400MCSEC
NOP
NOP
NOP
NOP
CLR LCDEN
NOP
NOP
NOP
NOP
NOP
CLR RSO
RET
DISP_HEL_WORLD:
MOV DISP_WD,#CLR_DISP
LCALL DDATC_WR
LCALL DELAY_5MSEC
MOV DISP_WD,#RT_HM
LCALL DDATC_WR
LCALL DELAY_5MSEC
MOV DISP_WD,#DISP_ON
LCALL DDATC_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#CURS_OFF
LCALL DDATC_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#80H
LCALL DDATC_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#48H ;H
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#45H ;E
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#4CH ;L
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#4CH ;L
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#4FH ;O
LCALL DDATD_WR
LCALL DELAY_150MCSEC
LCALL BLANK
MOV DISP_WD,#C0H
LCALL DDATC_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#57H ;W
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#4FH ;O
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#52H ;R
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#4CH ;L
LCALL DDATD_WR
LCALL DELAY_150MCSEC
MOV DISP_WD,#44H ;D
LCALL DDATD_WR
LCALL DELAY_150MCSEC
LCALL BLANK
LCALL BLANK
LCALL BLANK
RET
BLANK:
MOV DISP_WD,#20H
LCALL DDATD_WR
LCALL DELAY_150MCSEC
RET
DELAY_150MCSEC:
MOV R0,#4BH
DJNZ R0,$
RET
DELAY_5MSEC:
MOV R2,#22H
DLY:
LCALL DELAY_150MCSEC
DJNZ R2,DLY
RET
DELAY_60MCSEC:
MOV R0,#1FH
DJNZ R0,$
RET
DELAY_400MCSEC:
MOV R6,#07H
DLY400:
LCALL DELAY_60MCSEC
DJNZ R6,DLY400
RET
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -