📄 lcd1602.asm
字号:
;===============================================================
; 文件名称: LCD1602.ASM
; 功能描述:
;===============================================================
RSPIN BIT 95H ;P1.5
RWPIN BIT 96H ;P1.6
EPIN BIT 97H ;P1.7
XPOS DATA 30H
YPOS DATA 31H
ORG 0000H
LJMP START
ORG 0100H
START: NOP
CLR EPIN
LCALL LCDINIT ; 调用初始化程序
ST1: MOV A, #01H
LCALL LCDWC
MOV A, #02H
LCALL LCDWC
LCALL DISPLAY ; 调用显示子程序
MOV R5, #0FFH ; 延时
ST2: MOV R6, #0FFH
LCALL DELAY
DJNZ R5, ST2
SJMP ST1
; 延时子程序
; 入口参数: R6(增加延时)
; 影响寄存器: R7
DELAY: MOV R7, #10
DLAY1: DJNZ R7, DLAY1
DJNZ R6, DELAY
RET
; 忙状态位判断
LCDWAITIDLE:
PUSH ACC ; 保护累加器 A
MOV P0, #0FFH
CLR RSPIN
SETB RWPIN
SETB EPIN
LWT1: MOV A, P0 ; 读取忙标志BF
JB ACC.7, LWT1 ; BF 为1则等待
CLR EPIN
POP ACC
RET
; 写指令子程序(不程序忙标志)
; 入口参数: A (命令字节)
LCDWCN: CLR RSPIN
CLR RWPIN
MOV P0, A
SETB EPIN
NOP
CLR EPIN
RET
; 写指令子程序(查询忙标志)
; 入口参数: A (命令字节)
LCDWC: LCALL LCDWAITIDLE ; 判断标志BF
LCALL LCDWCN ; 写指令
RET
; 写数据子程序(查询忙标志)
; 入口参数: A (数据字节)
LCDWD: LCALL LCDWAITIDLE
SETB RSPIN
CLR RWPIN
MOV P0, A ; 写数据
SETB EPIN
NOP
CLR EPIN
RET
; 指定显示坐标;
LCDPOS: ANL XPOS, #3FH
ANL YPOS, #03H
MOV A, YPOS
CJNE A, #00H, LPOS1
MOV A, XPOS ;DDRAM地址设置 第1行
ORL A, #80H
LCALL LCDWC
SJMP LPOS2
LPOS1: CJNE A, #01H, LPOS2
MOV A, XPOS ;DDRAM地址设置 第2行
ADD A, #40H
ORL A, #80H
LCALL LCDWC
LPOS2: RET
; LCD初始化子程序
LCDINIT:
MOV R6, #150
LCALL DELAY
MOV A, #38H ; 总线8位, 两行显示, 5*7点阵字符体
LCALL LCDWCN
MOV R6, #50
LCALL DELAY
MOV A, #38H
LCALL LCDWCN
MOV R6, #50
LCALL DELAY
MOV A, #38H
LCALL LCDWCN
MOV A, #38H
LCALL LCDWC
MOV A, #08H ; 关闭显示, 光标消失, 闪烁禁止
LCALL LCDWC
MOV A, #01H ; 清屏
LCALL LCDWC
MOV A, #06H ; AC加1计数, 禁止滚动
LCALL LCDWC
MOV A, #0EH ; 开显示
LCALL LCDWC
RET
; LCD显示子程序
DISPLAY:
MOV XPOS, #00H
DPLY1: MOV YPOS, #00H
LCALL LCDPOS ; 指定显示坐标
MOV DPTR, #TAB1
MOV A, XPOS
MOVC A, @A+DPTR ; 指定显示数据
LCALL LCDWD
MOV YPOS, #01H
LCALL LCDPOS ; 在第2行显示
MOV DPTR, #TAB2
MOV A, XPOS
MOVC A, @A+DPTR
LCALL LCDWD
MOV R5, #060H ; 延时
DPLY3: MOV R6, #0FFH
LCALL DELAY
DJNZ R5, DPLY3
INC XPOS
MOV A, XPOS
CJNE A, #16, DPLY1
; MOV XPOS, #16
DPLY2: MOV A, #18H ; 设置移到方式
LCALL LCDWC
MOV YPOS, #00H
LCALL LCDPOS
MOV DPTR, #TAB1
MOV A, XPOS
MOVC A, @A+DPTR
LCALL LCDWD
MOV YPOS, #01H
LCALL LCDPOS
MOV DPTR, #TAB2
MOV A, XPOS
MOVC A, @A+DPTR
LCALL LCDWD
MOV R5, #060H
DPLY4: MOV R6, #0FFH
LCALL DELAY
DJNZ R5, DPLY4
INC XPOS
MOV A, XPOS
CJNE A, #30, DPLY2
RET
; 表1: TD-NMC+ Xi'an Tang Du Crop.
; T D - N M C + X i ' a n
TAB1: DB 54H,44H,2DH,4EH,4DH,43H,2BH,20H,20H,58H,69H,27H,61H,6EH,20H
DB 54H,61H,6EH,67H,20H,44H,75H,20H,43H,72H,6FH,70H,2EH,20H,20H
; T a n g D u C r o p .
; 表2: www.tangdu.com 029-88375025
; w w w . t a n g d u . c o m
TAB2: DB 77H,77H,77H,2EH,74H,61H,6EH,67H,64H,75H,2EH,63H,6FH,6DH,20H
DB 20H,30H,32H,39H,2DH,38H,38H,33H,37H,35H,30H,32H,35H,20H,20H
; 0 2 9 - 8 8 3 7 5 0 2 5
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -