我经常用4位,很好用,节省焊接时间!!!
看看下面的程序,
;+++++++++++++++++++++++++++++++++++++++
;以下为lcd应用程序的初始化程序,必须放在程序的开头
rs bit p2.0
rw bit p2.1
e bit p2.2
bf bit p3.7
lcd_db7 bit p3.7
lcd_db6 bit p3.6
lcd_db5 bit p3.5
lcd_db4 bit p3.4
lcd_db3 bit p3.3
lcd_db2 bit p3.2
lcd_db1 bit p3.1
lcd_db0 bit p3.0
zling data 48h ;指令
shuju data 49h ;数据
;********************************
;以下为lcd各个子程序程序应用部分
;********************************
;初始化lcd
;****************************************
initlcd:
clr rs ;送数据30h到命令寄存器
clr rw
setb e ;lcd_db=30h
clr lcd_db7
clr lcd_db6
setb lcd_db5
setb lcd_db4
lcall delaylcd
clr e
lcall delay_star
mov zling,#22h ;设置位4位总线,
acall wrtc
ret
;****************************************
;忙标志检测子程序
readbf:
waitbf: clr rs
setb rw
setb e
setb lcd_db7
jb bf,waitbf
ret
;*********************************
;写指令代码子程序
wrtc: acall readbf ;读忙标志
clr rs
clr rw
setb e
mov a,zling ;将高四位数据送出
mov c,acc.7
mov lcd_db7,c
mov c,acc.6
mov lcd_db6,c
mov c,acc.5
mov lcd_db5,c
mov c,acc.4
mov lcd_db4,c
clr e
nop
nop
nop
setb e
mov a,zling ;将底四位数据送出
mov c,acc.3
mov lcd_db7,c
mov c,acc.2
mov lcd_db6,c
mov c,acc.1
mov lcd_db5,c
mov c,acc.0
mov lcd_db4,c
clr e
ret
;**********************************
delaylcd:mov r6,#5
lop11: mov r7,#5
lop22: djnz r7,lop22
lop33: djnz r6,lop11
ret
;**********************************
;写数据寄存器字节子程序
wrts: acall readbf
setb rs
clr rw
setb e
mov a,shuju;将高四位数据送出
mov c,acc.7
mov lcd_db7,c
mov c,acc.6
mov lcd_db6,c
mov c,acc.5
mov lcd_db5,c
mov c,acc.4
mov lcd_db4,c
clr e
nop
nop
nop
setb e
mov a,shuju;将底四位数据送出
mov c,acc.3
mov lcd_db7,c
mov c,acc.2
mov lcd_db6,c
mov c,acc.1
mov lcd_db5,c
mov c,acc.0
mov lcd_db4,c
clr e
ret
;***********************************
;以上为lcd各个子程序程序应用部分
;***********************************