I AM NEW TO INTARFACING VARIOUS DEVICES TO THE MICROCONTROLLER. I AM USING THE AT89C51 CONTROLLER I AM INTARFACING THE LCD WITH IT AND I AM USING PORT 2 AS THE DATA PORT PORT 0 PINS 5,6&7 CONNECTED RESPECTIVELY TO PIN 4,5&60F THE LCD.I HAVE LOADED THE PROGRAM OF IN CONTROLLER IS CHECKING THE BUSY BIT I.E.G. OF CHECKIG THE BUSY BIT BY POLLING. THE LCD IS NOT DISPLAYING ANY THING. I AUESS IT IS BEING INTIALIZED BUT IT IS NOT COMING BACK FROM THE SUBROUTINE OF POLLING. PLEASE HELP ME AS SOON AS POSSIBLE .
Do you think people will read your request IF YOU SCREAM?
I tried to read the original post, my eyes tired halfway through
Erik
i find thsi code for you. i try code in 8 bit mode it works. I used Keil v8 compilar.
yes,,,, i help and not say Please read the manual all times!
;8 bit LCD routines with check busy flag before sending data, command to LCD ;************************************************************* LCD DATA P1 ;define LCD data port on port 1 BUSY BIT LCD.7 ;define LCD busy flag E BIT P2.2 ;define LCD enable pin on port 2.2 RS BIT P2.0 ;define LCD register select pin on port 2.0 RW BIT P2.1 ;define LCD read/write pin on port 2.1 ;************************************************************* ORG 00H LCD_INIT: MOV A,#38H ;2 line 5x7 ACALL COMMAND MOV A,#0CH ;LCD on cursor on ACALL COMMAND MOV A,#01H ;clear LCD ACALL COMMAND MOV A,#06H ;shift cursor right ACALL COMMAND DISPLAY:MOV A,#81H ACALL COMMAND MOV DPTR,#TEST ACALL DISP_STRING MOV A,#0C1H ACALL COMMAND MOV DPTR,#TEST+0EH ACALL DISP_STRING HERE: SJMP HERE ;============================================================= COMMAND: ACALL READY ;is LCD ready? MOV LCD,A ;issue command code CLR RS ;RS=0 for command CLR RW ;R/W=0 to write to LCD| SETB E ;E=1 for H-to-L pulse CLR E ;E=0 ,latch in RET ;============================================================= DATA_DISPLAY: ACALL READY ;is LCD ready? MOV LCD,A ;issue data SETB RS ;RS=1 for data CLR RW ;R/W=0 to write to LCD SETB E ;E=1 for H-to-L pulse CLR E ;E=0 ,latch in RET ;============================================================= READY: SETB BUSY ;make P1.7 input port CLR RS ;RS=0 access command reg SETB RW ;R/W=1 read command reg ;read command reg and check busy flag BACK: CLR E ;E=1 for H-to-L pulse SETB E ;E=0 H-to-l pulse JB BUSY,BACK ;stay until busy flag=0 RET ;============================================================= DISP_STRING: CLR A ;A=0 MOV R7,#00H ;R7=0 NEXT_CHAR: INC R7 ;R7+1 MOVC A,@A+DPTR ACALL DATA_DISPLAY MOV A,R7 CJNE R7,#0EH,NEXT_CHAR RET ;============================================================= TEST: DB "8-Bit LCD Test","By 80C51 MCU's" END
per westermarck what kind of fool are you????
You seem willing to tell me...
SIR MASTER ZEUSTI,
I DO A CHANGE AND NOW WITH YOUR CODE WORKING PERFECTTY ! THANK TO YOU .
Master Zeusti
the man whith advice
Ho, yeah.