以下是引用guest在2003-7-28 21:03:09的发言: 不只你的lcd是用什么芯片驱动,我用过天马的,hd44780,查一下它的后8行地址,和前面8行不连续 |
;
MOV COM,#06H ;设置工作方式
LCALL PR1
MOV COM,#40H ;设置DDRAM地址
LCALL PR1
MOV DPTR,#TAB
MOV R2,#12
MOV R3,#00H
WRIN1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN1INT: MOV A,#30H ;
MOV DPTR,#CW_Add ;指令口地址设置
MOV R2,#03H ;循环量=3
INTa: MOVX @DPTR,A ;写指令代码
LCALL DELAY ;调延时子程序
DJNZ R2,INTa
MOV COM,#038H ;设置工作方式*
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0fH ;设置显示方式
LCALL PR1
RET
tAB: DB 30h,31h,32h,33h,34h
DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H
DB 46H,47H,48H,49H,4aH
;
MOV COM,#06H ;设置工作方式
LCALL PR1
MOV COM,#40H ;设置DDRAM地址
LCALL PR1
MOV DPTR,#TAB
MOV R2,#12
MOV R3,#00H
WRIN1: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN1INT: MOV A,#30H ;
MOV DPTR,#CW_Add ;指令口地址设置
MOV R2,#03H ;循环量=3
INTa: MOVX @DPTR,A ;写指令代码
LCALL DELAY ;调延时子程序
DJNZ R2,INTa
MOV COM,#038H ;设置工作方式*
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0fH ;设置显示方式
LCALL PR1
RET
tAB: DB 30h,31h,32h,33h,34h
DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H
DB 46H,47H,48H,49H,4aH