📄 1602logo.asm
字号:
;///////////////////////////////////////////
;....本程序实现液晶1602循环显示信息功能.
;....能够读取字符表中的英文字母及字符,字符表以$结束,作为语句结束标志。
;....一行显示不完,会自动换行
;///////////////////////////////////////////
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
BGLIGHT EQU P2.6 ;背景灯光控制
SJ EQU P0
org 00h
ajmp main
org 030h
main:
mov sp,#60h
mov dptr,#tableMline ;第一行表头位置
LCALL INIT1602
mov 30h,#00h
mov R1,#0 ;数据指针
main1:
LCALL init1602
MOV SJ,#02H ;显示清屏
ACALL ENABLE ;写指令01H__________
;
MOV SJ,#80H ;第一行显示第一个字符的位置
ACALL ENABLE ;调用写指令
;
call writerow1 ;调用第一行写子程序
mov SJ,#0c0h ;第二行位置
call enable ;调用写指令
call writerow2 ;调用第二行写子程序
Ljmp main1 ;返回主程序不断的循环
ENABLE: ;写命令时序(参照1602LCD使用说明书)
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
writerow1: ;写字符串
a1: mov a,r1 ;把R1的值送到ACC
movc a,@a+dptr ;查表取将显示的数据并把要显示的数送入ACC
CJNE A,#36,NE1 ;是否等于'$',若等于则不再往下读取。
LJMP MAIN
NE1:
call writeChar ;调用写程序写入单个字节
inc r1 ;将数据指针加一
inc 30h
CJNE R1,#0,NEXT1
INC DPH
NEXT1: mov a,r1
mov b,#20h
div ab
xch a,b
cjne A,#10h,a1 ;R1的内容加到16后就返回到a1处
ret
writerow2: ;写字符串
B1: mov a,r1 ;把R1的值送到ACC
movc a,@a+dptr ;查表取将显示的数据并把要显示的数送入ACC
CJNE A,#36,NE2
LJMP MAIN
NE2:
call writeChar ;调用写程序写入单个字节
inc r1 ;将数据指针加一
inc 30h
CJNE R1,#0,NEXT2
INC DPH
NEXT2: mov a,r1
mov b,#20h
div ab
xch a,b
cjne A,#0h,B1 ;R1的内容加到16后就返回到a1处
ret ;
writeChar: ;写单个字符
mov SJ,a ;写数据到显示端口
setb rs ;写数据时序(请参照1602LCD使用说明书)
clr rw
clr e
call delay
setb e
ret
delay:
mov r7,#255
d1: mov r6,#255
d2: djnz r6,d2
djnz r7,d1
ret
INIT1602:
lcall delay ;延时一段时间
CLR BGLIGHT ;开背光@@@
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#08H ;显示关闭
ACALL ENABLE ;写指令08H_________
MOV SJ,#01H ;显示清屏
ACALL ENABLE ;写指令01H__________
MOV SJ,#06H ;写指令06H----显示光标移动设置
;
ACALL ENABLE ;
MOV SJ,#0cH ;写指令0CH----显示开及光标设置
ACALL ENABLE ;
RET
Ready1602:
lcall delay ;延时一段时间
CLR BGLIGHT ;开背光@@@
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
clr rs
setb rw
setb e
loop: mov a,sj
jb acc.7,loop
MOV SJ,#38H ;
ACALL ENABLE ;写指令38H
MOV SJ,#08H ;显示关闭
ACALL ENABLE ;写指令08H_________
MOV SJ,#01H ;显示清屏
ACALL ENABLE ;写指令01H__________
MOV SJ,#06H ;写指令06H----显示光标移动设置
;
ACALL ENABLE ;
MOV SJ,#0cH ;写指令0CH----显示开及光标设置
ACALL ENABLE ;
RET
tableMline:
db "I Love You Yiduo! Do you love me? I can't help but to hold you tight.$";
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -