This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

prob with lcd display

i've written following code for 44780 standard lcd display using AT89s52........but its not working.....
noting is displayed on the lcd...could anyone suggest what could be the mistake

$mod51

org 0000h

DB0 EQU P0.0
DB1 EQU P0.1
DB2 EQU P0.2
DB3 EQU P0.3
DB4 EQU P0.4
DB5 EQU P0.5
DB6 EQU P0.6
DB7 EQU P0.7
EN EQU P2.7
RS EQU P2.6
RW EQU P2.5
DATAWD EQU P0

CSEG

MOV SP,#30H

CALL BLANK_LCD

mov a,#'W'
mov 70h,a
mov a,#'E'
mov 71h,a
mov a,#'L'
mov 72h,a
mov a,#'C'
mov 73h,a
mov a,#'O'
mov 74h,a
mov a,#'M'
mov 75h,a
mov a,#'E'
mov 76h,a
call disp_on_lcd

WAIT_LCD:CLR EN
CLR RS
SETB RW
MOV DATAWD,#0FFh
SETB EN
MOV A,DATAWD
JB ACC.7,WAIT_LCD
CLR EN
CLR RW
RET

INITIALIZE_LCD:CLR RS
MOV DATAWD,#38h
SETB EN
CLR EN
CALL WAIT_LCD
CLR RS
MOV DATAWD,#0Eh
SETB EN
CLR EN
CALL WAIT_LCD
CLR RS
MOV DATAWD,#06h
SETB EN
CLR EN
LCALL WAIT_LCD
RET

WRITE_TEXT:SETB RS
MOV DATAWD,@R0
SETB EN
CLR EN
CALL WAIT_LCD
RET

blank_LCD:CLR RS
MOV DATAWD,#01h
SETB EN
CLR EN
CALL WAIT_LCD
RET

DISP_ON_LCD: CALL INITIALIZE_LCD
MOV R0,#70H
REWRITE:CALL WRITE_TEXT INC R0 CJNE R0,#7AH,REWRITE
RET

END