| ??? 02/04/07 14:29 Read: times |
#131973 - Code for 8-Bit LCD (HD44780) Responding to: ???'s previous message |
This is the Code which worked for me, and also there is the pin configuration of My MCu (AT89C2051) with the LCD, Hoping that it will help the Noob Programmers (just like me) ;-)
VSS ----> GROUND (PIN-NO 1 ON LCD) VCC ----> +5V (PIN-NO 2 ON LCD) CONTRAST-> 10KPOT (PIN-NO 3 ON LCD) [ONE SIDE GROUND ONE SIDE +5V] P3.4 ----> RS (PIN-NO 4 ON LCD) P3.5 ----> RW (PIN-NO 5 ON LCD) P3.7 ----> EN (PIN-NO 6 ON LCD) P1.0 ----> DB0 (PIN-NO 7 ON LCD) P1.1 ----> DB1 (PIN-NO 8 ON LCD) P1.2 ----> DB2 (PIN-NO 9 ON LCD) P1.3 ----> DB3 (PIN-NO 10 ON LCD) P1.4 ----> DB4 (PIN-NO 11 ON LCD) P1.5 ----> DB5 (PIN-NO 12 ON LCD) P1.6 ----> DB6 (PIN-NO 13 ON LCD) P1.7 ----> DB7 (PIN-NO 14 ON LCD) CODE FOR 8-BIT HD44780 LCD FOR WRITING "DARE DEVIL" ON LCD
ORG 0000H
LJMP MAIN
ORG 0030H
RS EQU P3.5
RW EQU P3.4
EN EQU P3.7
;initialization
MAIN: MOV A,#038H ;8 bit mode ON, 2 lines, 5*8 font
LCALL COM ;first time
MOV A,#038H ;second time
LCALL COM
MOV A,#038H ;third time
LCALL COM
MOV A,#038H ;fourth time
LCALL COM
MOV A,#00CH ;display ON, cursor OFF, blink OFF
LCALL COM
MOV A,#001H ;clear screen
LCALL COM
MOV A,#006H ;increase cursor position, scroll display OFF
LCALL COM
MOV A,#080H ;Set DDRAM address to 0 (means to starting)
LCALL COM ;initialization End
MOV A,#'D' ;data to write on LCD
LCALL DATAW
MOV A,#'A'
LCALL DATAW
MOV A,#'R'
LCALL DATAW
MOV A,#'E'
LCALL DATAW
MOV A,#' '
LCALL DATAW
MOV A,#'D'
LCALL DATAW
MOV A,#'E'
LCALL DATAW
MOV A,#'V'
LCALL DATAW
MOV A,#'I'
LCALL DATAW
MOV A,#'L'
LCALL DATAW ;data end
AGAIN: SJMP AGAIN ;endless loop
COM: MOV P1,A ;command write sequence
CLR RS
CLR RW
SETB EN
;LCALL TEST
CLR EN
LCALL DELAY
RET
DATAW: MOV P1,A ;data write sequence
SETB RS
CLR RW
SETB EN
;LCALL TEST
CLR EN
LCALL DELAY
RET
DELAY: MOV R6,#50 ;simple delay routine
HERE2: MOV R7,#255 ;for 0.0124S or 124MS
HERE: DJNZ R7,HERE
DJNZ R6,HERE2
RET
TEST: JB P3.0,TEST
TEST2: JNB P3.0,TEST2
RET
END
|



