|
驱动函数库可能有问题,我有一个以前用51汇编写的测试代码,刚刚翻出来试了一下没有问题,第一行显示数字1~0
AT89S52,24M晶振
P1接8位数据,三个控制位是RS -》 P3.7, RW -》P3.6, E -》P3.5
--------------------------------------------------
P1 DATA 90H
P2 DATA 0A0H
P3 DATA 0B0H
LRS EQU P3.7
LRW EQU P3.6
LCE EQU P3.5
JMP prog0
ORG 40H
prog0: CLR LCE ;LCD初始化
CLR LRS
CLR LRW
MOV P1, #00111000B
SETB LCE
LCALL delay5m
CLR LCE
CLR LRS
CLR LRW
MOV P1, #00111000B
SETB LCE
LCALL delay5m
CLR LCE
CLR LRS
CLR LRW
MOV P1, #00111000B
SETB LCE
LCALL delay5m
LCALL chk ;设置工作方式,设置2遍以确认以
MOV P1, #00111000B
LCALL wcmd
LCALL chk
MOV P1,#00111000B
LCALL wcmd
;LCD初始化结束
LCALL chk ;设置显示状态
MOV P1, #00001111B
LCALL wcmd
LCALL chk ;设置输入方式
MOV P1, #00000110B
LCALL wcmd
LCALL chk
MOV P1, #00000010B ;显示指针归零
LCALL wcmd
LCALL chk
MOV P1, #00000001B ;清屏指令
LCALL wcmd
LCALL chk
MOV P1, #31H
LCALL wdtd
LCALL chk
MOV P1, #32H
LCALL wdtd
LCALL chk
MOV P1, #33H
LCALL wdtd
LCALL chk
MOV P1, #34H
LCALL wdtd
LCALL chk
MOV P1, #35H
LCALL wdtd
LCALL chk
MOV P1, #36H
LCALL wdtd
LCALL chk
MOV P1, #37H
LCALL wdtd
LCALL chk
MOV P1, #38H
LCALL wdtd
LCALL chk
MOV P1, #39H
LCALL wdtd
LCALL chk
MOV P1, #30H
LCALL wdtd
LCALL chk
MOV P1, #31H
LCALL wdtd
LCALL chk
MOV P1, #32H
LCALL wdtd
LCALL chk
MOV P1, #33H
LCALL wdtd
LCALL chk
MOV P1, #34H
LCALL wdtd
LCALL chk
MOV P1, #35H
LCALL wdtd
LCALL chk
MOV P1, #36H
LCALL wdtd
loop1: MOV P2, #0FEH
JMP loop1
delay5m: MOV R1, #10
l11: DJNZ R1, l11
RET
chk: MOV P1,#0FFH ;判断液晶显示器是否忙的子程序
CLR LRS
SETB LRW
CLR LCE
NOP
SETB LCE
JB P1.7, chk ;如果P1.7为高电平表示忙就循环等待
RET
wcmd: CLR LCE
CLR LRS
CLR LRW
SETB LCE
NOP
NOP
CLR LCE
RET
wdtd: CLR LCE
SETB LRS
CLR LRW
SETB LCE
NOP
NOP
CLR LCE
RET
END |
|