Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Thread Closed: Issue successfully resolved

???
02/27/07 15:32
Read: times


 
#133825 - LCD Problem
Hi!
I am doing project on Micro-controller, where i am also using LCD. I read all material (HD44780 datasheet, tutorials given here and lcd datasheet), but I am not able to solve the problem.
Here is full details of Hardware, Software and Observations.

HARDWARE:
AT89C51 WITH 12MHz CRYSTAL
NO EXTERNAL MEMORY, ONLY IN-BUILT 4K FLASH MEMORY USED
JHD 162A LCD
PORT 2 CONNECTED TO DATA PORT OF LCD
P0.5 --> ENABLE
P0.6 --> RW
P0.7 --> RS

SOFTWARE:
PROGRAM WRITTEN IN ASSEMBLY USING 'KEIL'

///// INITIALIZATION

RS EQU P0.7
RW EQU P0.6
E EQU P0.5
;P2 AS DATA PORT
;R5--> MSB OF COUNTER
;R6--> LSB OF COUNTER
;R7--> USED TO PASS DATA TO SUBROUTINE

CSEG AT 0X0000
LJMP 0X0100

CSEG AT 0X0100
////// LCD ALGORITHM:
///// 1. DELAY 15mSec
START: MOV R5,#30 ;R5--> MSB OF COUNTER
DLY1: MOV R6,#255 ;R6--> LSB OF COUNTER
DJNZ R6, $
DJNZ R5,DLY1 ;TOTAL STATES = ((1+2*255)+2)*30 = 15390
;TOTAL DELAY = 15390 * 1uSec = 15.39 mSec

MOV P0,#0X00
MOV P2,#0X00 ;P0 & P2 CONFIGURED AS OUTPUT PORT

///// 2. INSTRUCTION 0X30 + DELAY 5mSec
MOV R7,#0X30 ;R7--> USED TO PASS DATA TO SUBROUTINE
LCALL INS ;INSTRUCTION OUTPUT SUBROUTINE

MOV R5,#10
DLY2: MOV R6,#255
DJNZ R6, $
DJNZ R5,DLY2 ;TOTAL DELAY = ((1+2*255)+2)*10 = 5130

///// 3. INSTRUCTION 0X30 + DELAY 160uSec
MOV R7,#0X30
LCALL INS

LCALL DLY_160U

///// 4. INSTRUCTION 0X30 + DELAY 160uSec
MOV R7,#0X30
LCALL INS

LCALL DLY_160U

///// 5. INSTRUCTION 0X38 + DELAY 160uSec (DATA LENGTH=8, LINES=2)
MOV R7,#0X38
LCALL INS

LCALL DLY_160U

///// 6. INSTRUCTION 0X08 + DELAY 160uSec (DISPLAY OFF, CURSOR OFF)
MOV R7,#0X08
LCALL INS

LCALL DLY_160U

///// 7. INSTRUCTION 0X01 + DELAY 160uSec (CLEAR DISPLAY)
MOV R7,#0X01
LCALL INS

LCALL DLY_160U

///// 8. INSTRUCTION 0X06 + DELAY 160uSec (INCREMENT CURSOR)
MOV R7,#0X06
LCALL INS

LCALL DLY_160U

///// 9. INSTRUCTION 0X0C + DELAY 160uSec (DISPLAY ON)
MOV R7,#0X0C
LCALL INS

LCALL DLY_160U

///// 10. DATA DISPLAY
MOV DPTR,#MSG ;INITIALIZE POINTER
MOV R0,#0X0 ;INITIALIZE COUNTER
NEXT: MOV A,#0X00
MOVC A,@A+DPTR ;FETCH DATA BYTE FROM INTERNAL EPROM

SETB RS ;SELECT DATA REGISTER
CLR RW ;WRITE MODE
MOV P2,A ;OUTPUT DATA TO PORT 2
SETB E
CLR E ;APPLY ENABLE PULSE

LCALL DLY_160U

INC DPTR ;INCREMENT TO NEXT DATA
DJNZ R0,NEXT

HERE: LJMP HERE ;~~~~~~END OF PROGARM~~~~~~~

////////////////////////////////////////////////////////////////////////////////
///// SUBROUTINES
CSEG AT 0X0E00
INS: CLR RS ;SELECT INSTRUCTION REGISTER
CLR RW ;WRITE MODE
MOV P2,R7 ;OUTPUT TO PORT 2
SETB E
CLR E ;ENABLE PULSE
RET

DLY_160U:
MOV R6,#160
DJNZ R6,$ ;TOTAL DELAY = 80*2*1uSec = 160uSec
RET

//////////////////////////////////////////////////////////////////////////////////
///// MESSAGE
MSG: DB 'NiK'

END

NOTE:
1. 1ST TIME WHEN I PROGRAMMED MICROCONTROLLER AND CONNECTED IN CIRCUIT, BACKLIGHT OF LCD FLICKERED FOR SOME TIME AND IT BECOME DEAM. THAN I FOUND THAT
IC7805 STOPPED WORKING, IT WAS PROVIDING ONLY 4.1V. SO, THAN I CHANGED IC7805 AND IT WAS WORKING PROPERLY.

2. I TESTED CONNECTION FROM MICROCONTROLLER TO LCD PINS WITH CONTINUITY TESTER.

3. WHEN I MEASURED RESISTANCE ACROSS BRIGHTNESS CONTROL POT (CONNECTED IN BOARD), IT IS SHOWING ABT 4.8K ONLY (i.e. BETWEEN VCC AND GND).

4. TESTED CIRCUIT WITH BOTH INITIAL INSTRUCTION 30H &38H.


List of 78 messages in thread
TopicAuthorDate
LCD Problem            01/01/70 00:00      
   stop shouting - also            01/01/70 00:00      
      Sorry Erik            01/01/70 00:00      
         no need to be 'sorry'            01/01/70 00:00      
            timing            01/01/70 00:00      
               delays aren't necessary if you monitor busy            01/01/70 00:00      
   Pullup resistors on P0            01/01/70 00:00      
      already answered            01/01/70 00:00      
   make sure            01/01/70 00:00      
      Is there any test procedure to test LCD Module?            01/01/70 00:00      
         from the shop            01/01/70 00:00      
   did you try...            01/01/70 00:00      
      tthat is SOME wait            01/01/70 00:00      
         ...            01/01/70 00:00      
            well, maybe is is a good thing            01/01/70 00:00      
               i need a lcd testing procedure            01/01/70 00:00      
                  like this            01/01/70 00:00      
                     lcd testing            01/01/70 00:00      
                        Couple of links            01/01/70 00:00      
                           no datasheet            01/01/70 00:00      
                              Should work the same...            01/01/70 00:00      
                                 +1 for this answer            01/01/70 00:00      
                                    LJMP limits            01/01/70 00:00      
      delays aren't necessary if you monitor busy            01/01/70 00:00      
      May be LCD is damaged!!            01/01/70 00:00      
         Pin 3 may require a negative voltage            01/01/70 00:00      
            PLEASE!!!!            01/01/70 00:00      
               There is a "convention"            01/01/70 00:00      
            to clarify?            01/01/70 00:00      
         two problems with the 'advice' you followed            01/01/70 00:00      
            Only lower line of LCD is showing!            01/01/70 00:00      
               looks like pretty normal behavior to me ...            01/01/70 00:00      
                  'cheap' -5 for a LCD            01/01/70 00:00      
   where is that standard?            01/01/70 00:00      
      It's not an EIA or a DIN standard ...            01/01/70 00:00      
         you said exactly that            01/01/70 00:00      
            We've all told him to read his LCD datasheet            01/01/70 00:00      
               this is getting ridiculous.            01/01/70 00:00      
                  ok, I deserve -1 from before            01/01/70 00:00      
                     why not spell it correctly            01/01/70 00:00      
                  That's why there are datasheets            01/01/70 00:00      
   LCD is workingggg!!!!!!            01/01/70 00:00      
      Now get to work            01/01/70 00:00      
         MISTAKES made            01/01/70 00:00      
   Datasheet, which created a problem.            01/01/70 00:00      
   Can LCD datasheet be uploaded for others referen.?            01/01/70 00:00      
      You have to get the correct datasheet            01/01/70 00:00      
         need lcd testing procedure            01/01/70 00:00      
            You need more data!            01/01/70 00:00      
               addendum to Richards post            01/01/70 00:00      
                  There is a de-facto standard            01/01/70 00:00      
                     lcd problem            01/01/70 00:00      
                        Disconnect d1            01/01/70 00:00      
                        problem with second line of lcd            01/01/70 00:00      
                           program            01/01/70 00:00      
                              your code has a problem?            01/01/70 00:00      
                                 looks like experimenting again ...            01/01/70 00:00      
                                 from hitachi data sheet on HD44780            01/01/70 00:00      
                                    I'm starting to hate these datasheets            01/01/70 00:00      
                                       BULL            01/01/70 00:00      
                                          get it RIGHT before you deviate from spec's            01/01/70 00:00      
                                       OK... I give up...            01/01/70 00:00      
                                    8 bit Initialization            01/01/70 00:00      
                                       lcd problem            01/01/70 00:00      
                                          program i used            01/01/70 00:00      
                                             driving voltage            01/01/70 00:00      
                                                its not the contrast problem            01/01/70 00:00      
                                                   why?            01/01/70 00:00      
                                                   Contrast and Initialization            01/01/70 00:00      
                                             you are, I hope, aware            01/01/70 00:00      
                                       That's the one...thanks            01/01/70 00:00      
   about P0            01/01/70 00:00      
      It shows that you "experiment" instead of reading            01/01/70 00:00      
      gibberish            01/01/70 00:00      
   small correction            01/01/70 00:00      
      thanks a lot            01/01/70 00:00      
         Thanks for informing us.            01/01/70 00:00      
            so, next time            01/01/70 00:00      

Back to Subject List