??? 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 |