📄 1602lcd的程序.asm
字号:
;;;1602lcd的实验
;;;MCU:89S51 COLCK:11.0592MHZ
;;;实验目的:通过实验了解LCD的工作原理和用软件驱动LCD的编程方法
;;;;程序转载于伟福赛思SICELAB-G2200实验系统,并有修改
;***********************************************************************
;;;接线说明:
;;; 16*2的字符LCD插到LCD插座上
;;; 注意:该插座的第一脚与LCD的第一脚对应,并在断电的情况下插拔!!!
;;; J10(25x2双排插针)第19脚(LCD-RS)和第20脚(CPU的P1.2)连
;;; J10(25x2双排插针)第17脚(LCD-RW)和第18脚(CPU的P1.1)连
;;; J10(25x2双排插针)第15脚(LCD-E)和第16脚(CPU的P1.0)连
;***********************************************************************
RS EQU P1.2 ;LCD-RS
RW EQU P1.1 ;LCD-RW
E EQU P1.0 ;LCD-E
MAIN: MOV P2,#01H;清除屏幕
ACALL ENABLE
MOV P2,#38H;8位点 阵方式
ACALL ENABLE
MOV P2,#0FH;开显示
ACALL ENABLE
MOV P2,#06H;移动光标
ACALL ENABLE
MOV P2,#01H;清除屏幕
ACALL ENABLE
MOV R1,#4
A1S:ACALL A250MS
DJNZ R1,A1S
MOV P2,#80H;第一行显示位置
ACALL ENABLE
MOV DPTR,#table1;送数据表3,LYPD96@126.COM
CALL WRITE1
MOV P2,#0c0h;第二行的位置
CALL ENABLE
MOV DPTR,#TABLE2;送数据表2:TEL:13968601095
CALL WRITE1
MOV P2,#0CFH;光标在第二行的最后一个位置
call enable
MOV R1,#20
A5S:ACALL A250MS
DJNZ R1,A5S
AJMP MAIN
ENABLE:
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
ENABLE1:
CLR RS
CLR RW
CLR E
ACALL A250MS
SETB E
RET
write1: ;写数据
mov r1,#00h
a1:mov a,r1
movc a,@a+dptr
call write2
inc r1
cjne a,#00h,a1
ret
write2:
mov P2,a
setb rs
clr rw
clr e
call delay
setb e
ret
delay: ;写延时,等待写完成
mov r7,#30
d1:mov r6,#25
d2:djnz r6,d2
djnz r7,d1
ret
A250MS:MOV R7,#250
A20MS1: ACALL A1MS
DJNZ R7,A20MS1
RET
A1MS: MOV R6,#0FFH
A1MS1: NOP
NOP
DJNZ R6,A1MS1
RET
;;;数据的ASCII码,因为LCD的数据是按ASCII码显示的,所以要把显示的数据转化成ASCII码
;;;LCD才能正常显示
table1: db 57h,41H,56H,45H,33H,31H,34H,38H,40H,31H,32H,36H,2EH,43H,4FH,4DH,20,00H
;数据:空格Wave3148@126.COM空格
table2: db 54h,45h,4Ch,3Ah,31h,33h,35h,35H,34H,34H,32H,38H,38H,36H,30H,20H,00H
;数据 TEL:13554428860空格
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -