shockoshocko
Junior Member level 1
I can print text on the first line but nothing appears on the second line at all, although in proteus simulation both lines work OK, I am using the code found in 8051projects.net tutorial, plz i want to know what could make the simulation differ from reality, i have spent too much time on the issue, and can't find the solution.
here are the subroutines used:
INIT_LCD:
MOV A,#38H
LCALL LCD_CMD
MOV A,#0EH
LCALL LCD_CMD
MOV A,#01H
LCALL LCD_CMD
MOV A,#06H
LCALL LCD_CMD
MOV A,#80H
LCALL LCD_CMD
RET
CLR_LCD:
MOV A,#01H
LCALL LCD_CMD
RET
WAIT_LCD:
MOV R7,#35H
BACK:
MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,BACK
RET
LCD_CMD:
MOV DAT,A
CLR RS
CLR RW
SETB EN
CLR EN
LCALL WAIT_LCD
RET
LCD_WRT:
SETB RS
CLR RW
MOV DAT,A
SETB EN
CLR EN
LCALL WAIT_LCD
RET
LCD_STRING:
CLR A
MOVC A,@A+DPTR
JZ EXIT
LCALL LCD_WRT
INC DPTR
SJMP LCD_STRING
EXIT:
RET
SECOND_LINE:
MOV A,#0C0H
LCALL LCD_CMD
RET
here are the subroutines used:
INIT_LCD:
MOV A,#38H
LCALL LCD_CMD
MOV A,#0EH
LCALL LCD_CMD
MOV A,#01H
LCALL LCD_CMD
MOV A,#06H
LCALL LCD_CMD
MOV A,#80H
LCALL LCD_CMD
RET
CLR_LCD:
MOV A,#01H
LCALL LCD_CMD
RET
WAIT_LCD:
MOV R7,#35H
BACK:
MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,BACK
RET
LCD_CMD:
MOV DAT,A
CLR RS
CLR RW
SETB EN
CLR EN
LCALL WAIT_LCD
RET
LCD_WRT:
SETB RS
CLR RW
MOV DAT,A
SETB EN
CLR EN
LCALL WAIT_LCD
RET
LCD_STRING:
CLR A
MOVC A,@A+DPTR
JZ EXIT
LCALL LCD_WRT
INC DPTR
SJMP LCD_STRING
EXIT:
RET
SECOND_LINE:
MOV A,#0C0H
LCALL LCD_CMD
RET