Problem getting 24 x 1 LCD display to work

I would like to start off by giving all credit for any code or schematics to the original authors and if I don't quote the authors I deeply apologize, it is purely accidental.

I'm new to Arduino, but I've had courses in micro controllers specifically the pic16 and intro to C++ programming. I'm experienced in soldering and working with my hands.

I have a Arduino Uno R3 and I've gone through all the examples in 1. Basics. Now I'm trying to use a LCD so I can output and continue learning and tinkering.

The problem is I hooked up a WD-C2401P-1GNN LCD to my Arduino and ran a simple version of the Arduino hello world example to test it out and I'm not getting anything on the display. I made sure my solder points have continuity with PCB and no shorts. Is there something special I need to do with this LCD or do I need trouble shoot and see if it's broken.

My main questions would be.

What do I need to do to make this LCD work is possible? (Controllers?)

What do I need to check or figure out before purchasing a LCD for the Arduino in the future? (libraries?)

Can I use any LCD I salvage from any device and connect it to my Arduino?

I wanted to use this as a stepping stone before I use this Graphic LCD 128x64 STN LED Backlight
LCD-00710 LCD from spark fun on my Arduino. Which I also don't know how to wire either because the data sheet is confusing and unlabeled.
So any help with this LCD would also be appreciated. Here is the relevant data sheet.

Here is the code i used

//code from Arduino Hello world example
// 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(24, 1); //My LCD is smaller
// Print a message to the LCD.
lcd.print("Hello World");
}
void loop() {}

The code compiled fine and uploaded. I made sure the board was working and uploaded the blink program and that worked too.

Product page

http://www.allelectronics.com/make-a-store/item/LCD-111/24-x-1-LCD/1.html

I googled how to connect this LCD and here are few useful links that might help.
Some useful links of other people using this LCD

http://forums.parallax.com/showthread.php/133709-a-24x1-LCD-(All-Elect.-LED-111-a-Wintek-WDC2401P-1GNNA)

LCD-111(1).pdf (1.31 MB)

ks0108b.pdf (157 KB)

Graphic LCD 128 x 64 STN LED backlight LCD00710 LCD sparkfun.pdf (83.9 KB)

Well, I discern three particular points from your references.

One is that this controller may not be quite the same as a HD44780, so you probably should look for the particular library cited for this chip rather than the standard LCD library.

Some people have reported the need to actually perform a 10 ms reset pulse to the reset line on the interface, and then a 10 ms delay before attempting to communicate with it.

And you have to take care with identifying the connections.

I am less than impressed with LCDs without backlights.

Thank you for the reply. On one of the sites I posted someone said to put the reset pin to high. Is that what you mean or do I need to put into a output pin and set it digitally high?

With single line displays they are are often internally configured as 2 line displays, so you could try initialising as a 12x2 display and may get lucky.

If not then it may simply be an unsupported controller chip.

EDIT: Seems it is a HD66717 controller so LiquidCrystal library will be unlikely to work. Some quick Google Fu turned up this; http://cratel.wichita.edu/blogs/jeffweide/2008/05/11/arduino-and-the-hitachi-lcd-display-driver/

Yigiter007:
Thank you for the reply. On one of the sites I posted someone said to put the reset pin to high. Is that what you mean or do I need to put into a output pin and set it digitally high?

Regarding that particular aspect, and "tack" notes that it is more of a library problem in the first place, then if you need to do a formal reset, you need to use a pin to firstly activate the reset line for 10 ms, then de-activate it and wait another 10 ms before sending data.

But - try the other library in the first instance.


OK, I have read enough of the datasheet to comprehend that this HD66717 controller is completely different to the HD44780 and clearly the LiquidCrystal library will definitely not work for it. Even worse - the option of four-bit transfer is determined not by software, but by (permanent) selections on the LCD panel itself so you are now constrained to use an annoying (waste of pins) 8-bit data interface. That combined with the datasheet on the seller's site as a (poor) photocopy rather than a proper PDF (and the lack of a backlight), tells me this item is clearly an obsolete disposals "orphan", best avoided.

For future Arduino projects when I get displays or any parts what should I check before i purchase parts so i know they are compatible with the Arduino?

... what should I check before i purchase parts so i know they are compatible with the Arduino?

Your display is probably compatible with the Arduino since you have enough I/O pins to make the necessary connections. The problem is that no one has yet provided a program or library to work with your particular display.

To answer your question - you would have to obtain the part numbers and/or data sheets for the prospective parts and then search to find out if appropriate programs or libraries are available to deal with those parts.

Don

I bought several dozen of these displays to use in a multi-display targeting system using PIC microcontrollers.

They use the HD66717 display controller and ONLY operates in 8 bit mode. The controller has many functions in common with the more common HD44780. Besides the fact that the male connect is on .05 centers and you must either etch your own adapter or solder to the pins, it is a very readable display.

Display contrast IS NOT on pin 3, it is software programmable. Pin 3 is display reset, and all other pins are the same as a HD44780.

To set up the display:
RS LOW (LOW for command, HIGH for data)
0x1C Turn on LCD driver power
0x14 Turn on character display
0x28 set both 12 character lines to 24 X 1
0x4F set contrast to darkest (3F to 4F is best range to choose from)
0xE0 set data address to first character (Home cursor)

To clock a byte
E line low
BYTE
E line high