Need help with an LCD!!!!

I need help with an LCD problem…I am running a 20x2 dot matrix LCD with the Sanyo LC7985NA controller. The unit also has a Seiko chip SED1181FLA. I have the screen powered up and it has (20) solid 5x7 dots only on the top row. I tried using the prewritten LCD codes with no luck.

I tested the pinouts by checking continuity and found all GND’s and +5V. I also found DB0-7, RS, RW, & E.

Please review these photos I posted on Flickr. They give a little information about what is happening…

My Pinout:

Pin 1 - Metal Casing GND #1
::::Unattached for now (not necessary)

Pin 2 - LED GND (this is a two-colored external LED which I know how to control)
::::Unattached for now (not necessary)

Pin 3 - +5V Green LED
::::Unattached for now (not necessary)

Pin 4 - + 5V Red LED
::::Unattached for now (not necessary)

Pin 5 - DB4
::::Attached to Arduino Pin 5

Pin 6 - DB5
::::Attached to Arduino Pin 4

Pin 7 - DB6
::::Attached to Arduino Pin 3

Pin 8 - DB7
::::Attached to Arduino Pin 2

Pin 9 - E: Execution start input to R/W
::::Attached to Arduino Pin 11

Pin 10 - RS
::::Attached to Arduino Pin 12

Pin 11 - Sanyo V5, Seiko VSSH
::::Attached to GND

Pin 12 - Sanyo VDD, Seiko VDD
::::Attached to +5V

Pin 13 - Sanyo R/W, DB0, DB1, DB2, DB3, Seiko VSS
::::Attached to GND

Pin 14 - Metal Casing GND #2
::::Unattached for now (not necessary)

My Code:

LiquidCrystal Library - setCursor

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 to all the positions of the LCD using the
setCursor(0 method:

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

Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (
example added 9 Jul 2009
by Tom Igoe
modified 22 August 2009
by Tom Igoe

// include the library code:
#include <LiquidCrystal.h>
// these constants won’t change. But you can change the size of
// your LCD using them:
const int numRows = 2;
const int numCols = 20;
// 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 rows and columns:
lcd.begin(numRows, numCols);
void loop() {
// loop from ASCII ‘a’ to ASCII ‘z’:
for (int thisLetter = ‘a’; thisLetter <= ‘z’; thisLetter++) {
// loop over the rows:
for (int thisRow= 0; thisRow < numRows; thisRow++) {
// loop over the columns:
for (int thisCol = 0; thisCol < numCols; thisCol++) {
// set the cursor position:
// print the letter:
lcd.print(thisLetter, BYTE);

Any ideas of what could be wrong? It would greatly be appreciated!


You really should have added this onto your previous thread (
since it’s obviously the same problem.

I’m glad to see that you have added the pictures and code - now there’s a chance that we can solve your problem. Assuming that your code is correct, which I haven’t checked against the photo yet, then one very good possibility is that you haven’t got the RW line (which is normally pin 5) grounded. Your display appears to have a somewhat non-standard pinout, so I am curious how you identified the various pins.

I do not understand what you mean by this:

"Pin 9 - E: Execution start input to R/W"

“E” is the “Enable” pin which is pulsed by the Arduino to transfer information between the Arduino and the LCD module.

“R/W” is the “Read/Write” pin which determines the direction of data flow. It is typically grounded (low) so that data will go from the Arduino to the LCD module.

Also: You are using the sample code from the LiquidCrystal Tutorial which is really messed up. I suggest that you start with the ‘Hello, world!’ example that is packaged with the LiquidCrystal library itself.


Don you are the man!

I ended up using the following code and it worked!

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
lcd.print(“hello, world!”);

void loop() {}

Weird thing though, the blocks were still visible and the hello world was displayed on top so you couldn’t see hello world too well. I pulled the ground wire off totally and it worked…why do you think that is?? Is it not grounded anymore?

Oh well though, as long as its working!

Thanks again!

Usually those displays have some kind of contrast control. One of the pins receives a voltage between VDD and VSS and this controls the contrast. Turn on maximum contrast and you see those bars.

Gotcha thanks Mircho that worked. My LCD is finally up and running thanks to you guys.