1602 Display trouble?

Hello,

So I have had this 1602 display laying around for ages and I haven't ever been able to figure out why. I'm sick of it so I decided I'm gonna do whatever I can to make this thing work.

I've been using this and I have loaded its sample program up and it still won't do anything.

I don't even see the pixels turn on or anything. Its just completely idle. Any ideas?

Not enough information.

Link to datasheet? How have you wired it? What code are you running?

Any ideas?

You have made over 700 posts on this forum so you should know that your problem cannot be answered by others with the information you have supplied.

You are using a very common display with a library that is known to work so where do you think the trouble might be?

Don

Sorry, I wasn't at my workbench when I made the post. I'd thought somebody would have some obscure situation with a solution.

The display I'm using is a POWERTIP PC1602C Rev A
It also has PHICO D-0 94V-0 on it.
From what I've found it should be the same pin out as a normal 1602 display.

I have no idea what the problem is, that's why I'm here asking...

Where are the pins located with respect to the display? Some of the Powertip displays have the pins at the lower left and those typically do not have the same pinout as a normal display.

Don

Just like the picture.
That is what I assume to be the proper way, seeing as how the text is upright.

That looks 'normal' to me.

First get the backlight working (pins 15 and 16), you will probably need a current limiting resistor in one of the backlight leads.

Next connect the the power and the contrast (pins 1, 2, and 3) and see if you can adjust the contrast to get blocks on the top row.

Don't bother with the Arduino until you get this working.

After you get the blocks then connect the six connections to the Arduino, connect R/W (pin 5) to GND, and try the 'hello world' demo sketch.

Post photos if you have problems. I'll check back in the morning to see how you did.

Don

wow, i wasnt turning the pot enough.
Alright so I uploaded the hello world to the arduino and this is all I'm getting.
I tried changing the contrast to make sure the hello world wasn't buried.

Seems to me the display is not initialized. Can you post your code?

Its just the HelloWorld from the liquidcrystal library. Nothing too special or custom.

/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

wow, i wasnt turning the pot enough.

That's a 10-turn pot.

It looks like you have pin 5 connected to +5v instead of to GND.

Don

floresta:

wow, i wasnt turning the pot enough.

That's a 10-turn pot.

It looks like you have pin 5 connected to +5v instead of to GND.

Don

Good eye! I looked at the pic too but I saw the black and trusted this fellow a bit more than I should :grin:

Oh wow, musta misplaced it. I'll change when I get back to my dorm and let you know if it works or not!

Okay so I put the pin 5 to the ground and I'm still getting the same issue

whoops, I also had a couple pins in the wrong place as well.
Other than that, I have a question. How would I use everything? I only have 4 data lines connected now, how would I use the other 4?

I only have 4 data lines connected now, how would I use the other 4?

You have a choice of using either 4 data bits or 8 data bits. The operation of the display is the same in either case. The programming for the 4-bit mode is more complex but that was done by those who wrote the library. There is no practical reason for you to want or need to use the 8-bit mode.

Don

So I canuse all of the characters in the display just using 4 bit mode. Is there any example code or projects that demonstrate that?

So I canuse all of the characters in the display just using 4 bit mode.

"You have a choice of using either 4 data bits or 8 data bits. The operation of the display is the same in either case."

Is there any example code or projects that demonstrate that?

I don't think that you have done your homework.

This code will display 80 characters on a 20x4 or 40x2 display. You can use it unmodified on your 16x2 display but only 32 of the characters will be visible unless you 'shift' the display.

Use this code as a starting point, increase the delay and reposition the cursor to (0,0) each time around and you should see all 80 characters, one after another, on your display.

#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);       // put your pin numbers here

void setup()
  {
    lcd.begin(20, 4);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
      {
        lcd.print(i);
        delay(100);                            // this delay allows you to observe the addressing sequence
      }
  }


void loop()
  {  
  }

Don