📄 1602液晶模块多字符显示程序.asm
字号:
;******** 1602液晶模块多字符显示程序 ********
;******** 第一行显示"welcome to hi.ba" ********
;******** 第二行显示"idu.com/liweidiy" ********
RS EQU P1.2
RW EQU P1.1
E EQU P1.0
ORG 0000H
AJMP START
ORG 0033H
START: MOV SP,#60H
MAIN: LCALL DELAY ;延时一段时间
MOV P2,#01H ;写指令01H,清屏
LCALL ENABLE
MOV P2,#38H ;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口
LCALL ENABLE
MOV P2,#0FH ;写指令0FH,显示ON,光标ON,闪烁ON
LCALL ENABLE
MOV P2,#06H ;写指令06H,光标输入方式增量移位
LCALL ENABLE
MOV P2,#80H ;第一行起始字符地址
LCALL ENABLE
MOV DPTR,#TABLE1 ;第一行显示字符表头地址
LCALL DISP ;显示第一行数据
MOV P2,#0C0H ;第二行起始字符地址
LCALL ENABLE
MOV DPTR,#TABLE2 ;第二行显示字符表头地址
LCALL DISP ;显示第二行数据
AJMP MAIN ;返回主程序循环
;-------------------------------------------------------------------------------------
ENABLE: CLR RS ;写指令子程序(请参照1602LCD使用说明书)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-------------------------------------------------------------------------------------
DISP: MOV R1,#16 ;准备显示一行16个字符
LOOP: MOV A,#00H ;将ACC清零
MOVC A,@A+DPTR ;查表取得要显示的数据
LCALL DISP1 ;写入一个数据
INC DPTR ;数据表指针加1,准备取下一个数据
DJNZ R1,LOOP ;一行没有显示完就继续
RET
;-------------------------------------------------------------------------------------
DISP1: MOV P2,A ;写1字节数据到显示端口
SETB RS ;写数据时序(请参照1602LCD使用说明书)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-------------------------------------------------------------------------------------
DELAY: MOV R7,#255 ;延时子程序
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TABLE1: DB "welcome to hi.ba"
TABLE2: DB "idu.com/liweidiy"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -