You are on page 1of 2

RS EQU P3.

0
EN EQU P3.1
LCD_DATA EQU P2

ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: CLR P1.3
MOV A, #38H ; LCD of 2lines, 5x7 matrix, bus - 8bit
ACALL CAMMAND
ACALL DELAY

MOV A, #38H ; repeat above three instructions


ACALL CAMMAND
ACALL DELAY

MOV A, #0EH ; cursor ON, display ON


ACALL CAMMAND
ACALL DELAY

MOV A, #06H ; increment curser pointer


ACALL CAMMAND
ACALL DELAY

MOV A, #01H ; Clear the display


ACALL CAMMAND
ACALL DELAY

MOV A, #80H ; set address of first line.


ACALL CAMMAND
ACALL DELAY

MOV DPTR, #MSG1; Initialize the DPTR with message 'CWIT'


NEXT: CLR A
MOVC A, @A+DPTR
CJNE A, #0FFH, TRANS1
SJMP SKIP1
TRANS1: ACALL DATA_WRITE ; write on LCD
ACALL DELAY
INC DPTR ; Next character
SJMP NEXT

SKIP1: MOV A, #0C0H ; set address of second line.


ACALL CAMMAND
ACALL DELAY

MOV DPTR, #MSG2 ; Initialize the DPTR with message 'PUNE'


NEXT2: CLR A
MOVC A,@A+DPTR
CJNE A, #0FFH, TRANS2
SJMP SKIP2
TRANS2: ACALL DATA_WRITE
ACALL DELAY
INC DPTR
SJMP NEXT2

ACALL DELAY
ACALL DELAY
CLR P1.3
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
SETB P1.3

SKIP2: SJMP SKIP2

CAMMAND: MOV P2, A; PUT DATA IN TO PORT 2.0


CLR RS; R0=0 FOR COMMAND
CLR RW; RW=0 WRITE OPERATION
SETB EN; FOT LOW TO HIGH PULSE
ACALL DELAY
NOP
NOP
CLR EN
RET

DATA_WRITE: MOV P2,A


SETB RS
CLR RW
SETB EN
ACALL DELAY
NOP
NOP
CLR EN
RET

DELAY: MOV R3, #50


HERE1: MOV R4, #255
HERE2 : DJNZ R4, HERE2
DJNZ R3, HERE1
RET

MSG1: DB "S-SQUARE-N SYS.",0FFH


MSG2: DB "DEVELOPMENT BRD.",0FFH

END

You might also like