估计是送数据太快,lcm是个慢速器件,要delay一下!
我产品上用的部分子程序,加了注释,请注意重要的地方,请直接修改后使用:
mov p0,#00h ;清屏初始化
clr rs
clr rw
mov com,#03h
orl p0,#30h
setb e
clr e
lcall delay
djnz com,pr41
anl p0,#0fh
orl p0,#20h ;4位数据接口工作方式
setb e
clr e
;------------------------------------------------------------------------------
mov com,#00101000b ;两行显示工作方式 !!重要!!
lcall pr1
mov com,#01h ;清屏 !!重要!!
lcall pr1
mov com,#06h ;数据操作后ac自动加1
lcall pr1
mov com,#0eh ;光标/画面右移
lcall pr1
mov com,#80h ;ddram地址初始化为0 !!重要!!
lcall pr1
ret
;*******************************************************************************
pr1: lcall pr0 ;写指令代码
jb acc.7,pr1
clr rs
clr rw
mov a,com ;写高4位半部 !!重要!!
anl a,#0f0h
anl p0,#0fh
orl p0,a
setb e
clr e
mov a,com ;写低4位 !!重要!!
anl a,#0fh
swap a
anl p0,#0fh
orl p0,a
setb e
clr e
ret
;*******************************************************************************
pr2: lcall pr0 ;写数据代码
jb acc.7,pr2
setb rs
clr rw
mov a,com ;写高4位 !!重要!!
anl a,#0f0h
anl p0,#0fh
orl p0,a
setb e
clr e
mov a,com ;写低4位 !!重要!!
anl a,#0fh
swap a
anl p0,#0fh
orl p0,a
setb e
clr e
ret
;*******************************************************************************