LCDs

Hello guys, this is my first post in the forums ... I hope that there will be plenty more :slight_smile:

Here is my thing..

Today, a friend of mine bought a few LCD displays from a local electronics junk yard which were taken out of old fax and copy machines.

There are two types of LCDs, one is with the label DV-20401 and the other is from a Samsung copy machine with a touch interface running on the LC7981 controller.

The first ones (there are 3 of the DV and 1 of the Samsung's LCDs) have 20 pins, but I couldn't find a suitable datasheet for it. It's very similar to the DV20400 and DV20200. Anyhow, I hooked them up to the arduino (using the LiquidCrystal library) but.. nothing happened. Well.. I think that this is an expected result because I've read that the LiquidCrystal lib. can drive LCDs with the HD44780 controller (maybe I'm wrong?). Anyhow, because I didn't find any correct datasheets on the LCDs, can someone point out some techniques for testing them and maybe some tips about coding a whole driver library for them (I'm somewhat new to the arduino platform, but I know my ways around electronics and the C programming language so I think that I can manage to write a driver for them :))

Moving on to the BIG one :slight_smile:

This LCD is exactly the same with this one from this guy :

frozeneskimo.com/electronics/2007/03/30/lc7981hd61830-driver-for-el-backlit-samsung-lcd/

Now, because I leave in a damned country (Macedonia) where the simplest of parts can not be found (Like the AtMega8) and because I have an Arduino lying beside me, I would like to give this LCD a try with the arduino and bound the together.

Now, has anyone interfaced this kind of an LCD (with a LC7981 controller) with an arduino and might be willing to share the code ?

Or maybe someone has some ideas on how to connect the LCD to the arduino and bring it to life ?

Thats it for now :slight_smile: Thanks to anyone who will read this post :slight_smile:

All the best,
Aleks

AleksMK:

I can help you out a little bit. There are two basic types of LCD displays commonly used with the Arduino.

(1) Character LCDs - These are the ones driven by the HD44780 controller using the LiquidCrystal library.

(2) Graphical LCDs. - This is the kind that you have. These use a different controller and therefore a different library.

Try a Google search for 'Arduino GLCD'.

Don

Thanks for the answer floresta, the thing is that I have LCDs of the both types, one is a character display and the other is a Graphical LCD.

AleksMK:

For the character display I recommend that you start out with the 'Hello World!' example that is found in the tutorial at http://arduino.cc/en/Tutorial/LiquidCrystal. If you have any questions I can help you out.

For the graphical display I recommend that you do the Google search I mentioned above. The US version of Google gives Arduino Playground - GLCDks0108 as it's first hit but I'm not sure if the controller used there is compatible with yours.

Don

The GLCD isn't in me atm, but I've tried connecting the LCD (the character one) and writing up a program using LiquidCrystal library but it didn't work. As I said, I don't think that the display is compatible with the LiquidCrystal library.

Actually, your first thing to do will be to get specs for the pinouts, which you have noted you haven't had much luck...?

Can you post clear, closeup pictures of the LCDs, front and back (scans from a scanner, or a macro shot, would be perfect)?

You may have to get in contact with the manufacturer of the LCDs (maybe even by phone) to get interface information; even there, it may not be possible (depending on if they are considered "obsolete"/"phased out", and they have thrown away/deleted all of their specs for it).

That will be where you want to start; if you don't have an idea at all about the interface, then you are going to need to get the specs.

Beyond that, if all of the LCD driver chips are visible and accessible, then what you will need to do is run a continuity probe using a multimeter between the connector to the pins on the chips; this can be assisted greatly if you have a scanner - place the board on the scanner flat, scan it at the highest resolution, and then in a graphics editor (like photoshop, but even MSPaint can work), do a flood fill on the trace at the connector pin (fill similar colors), and do it in a contrasting color, and it should fill most or all of the trace to the pin(s) on the chips - then you can double check and verify with a multimeter (if it is a double-sided, or multi-layer board, and it only floods to vias, then you may have a problem that isn't easily gotten around - good luck).

Then look up specs for those chips (provided they have non-house markings on them).

You might actually find that the GLCD has only row/column driver chips, and not an actual driver "chip"; these will be tougher to interface with (and depending on the resolution and timing needs, impossible with the ATMega8/168/328).

Scans/pictures of the LCDs will be very helpful for us to (hopefully) help you out, if you can supply them. I can't guarantee anything (too many unknowns), but it can't hurt.

What you want to do at this point, though, is to quit "playing" with them; that will only lead to mistakes that could ruin the LCD or its circuitry - until you know what you are dealing with.

:slight_smile:

[edit]After a bit of review, and as you noted - the DV-20401 LCD seems to likely be a HD44780 compatible display, based on (??) the HC20401 chipset:

I would still look for a datasheet - the connector pinout may not be "standard"; also, the continuity test between it and the chip may help determine what lines go where...
[/edit]

cr0sh thank you very much for that post :). First of all, I want to make my self clear, I will not try to do anything with the LCDs until I've figured out how to use (control) them.

The character LCDs are with the model number DV-2040 and I think that they are obsolete because I didn't find any info about their existence.

Anyhow, all of the chips are made directly on the board itself, so there are no chip numbers :slight_smile:

There are 20 pins, the last ones (19 and 20) are for the LCD backlit LEDs which are driven of a 7V supply. The first pin is ground (because it is connected to the ground of every single component) and the rest of the pins are unknown. Now, the one thing that I've noticed is that in all of the DV-20XXX data sheets that I've found, the pin layout is the same and the only difference is in the last pins that drive the backlit depending on the number f the pin the LCD has.

The DV-Series layout is as in the following :

1 - VSS - GND
2 - VCC for logic
3 - VCC for driving the LCD
4 - RS register
5 - R/W
6 - E signal
7-14 Data signals
15, 16 - Power for the backlit (in my case those are pins 19 and 20)

Pins 15 - 18 are connected to ground (pin 17 is actually connected to the metal holder for the LCD but I think that even that is GND)

This pinout is from the DV-20400 datasheet (mine LCD is DV-20401, difference in one pesky number :))

I'll scan the 2 boards tomorrow and post the pics' here.

The GLCD isn't with me, so I can't give any info about that one atm. But, as I provided in the first link :slight_smile: That guy has the GLCD (I have the exact same one) with the AtMega8 :slight_smile:

Regards,
Aleks

AleksMK:

Don't worry about your character mode display being obsolete. The HD44780 controller would fall in that category as well if you considered it's age alone. I have had mine for about 20 years and since they were purchased on the surplus market they weren't new then.

Use one of your DV-20401 displays and connect just pins 1, 2, 3, 19 and 20. Your backlight should function and when you vary the potentiometer you should get a blank screen with it set to one end and two rows of blocks (row 1 and row 3) with it set at the other end. Adjust the potentiometer until those blocks are just visible but not very dark. If you can't get this much to work (or don't have a potentiometer) then get back to us before proceeding.

If the previous step works then connect RS, E, and the upper four data lines (pins 11, 12, 13, and 14) to your Arduino. Do not forget to ground the R/W pin (pin 5).

Copy and paste the 'Hello World' code from the Arduino playground or from the sample programs in the Arduino download. Make sure that your pin connections agree with the code or vice versa. You can change the lcd.begin() parameters if you want, but your display will work the same if you leave them as shown in the example.

If this 'doesn't work' then let us know what does happen.

Don

Its ALIVE ! :slight_smile:
Ok, so ... I just realized my mistake when I first connected the LCD, I didn't use the potentiometer :slight_smile:

Now, there is another problem, its only displaying in the first (0) column and in the second (1) column and only 8 characters (in both of the columns. I've tried hooking up all 8 datapins, but then it doesn't display anything.

Any ideas ?

Edit :

Ok, now, using all the pins (one wire was floating in the previsious try) (pin 7 - 14) it displays random data but again only using the first two columns and 8 rows.

I've tried hooking up all 8 datapins, but then it doesn't display anything.

Did you change your code to reflect this wiring change?

it displays random data but again only using the first two columns and 8 rows.

Your device has 20 columns and 4 rows.

We need to see your code and we need to know exactly what is being displayed. A photograph showing the display would help as would a photograph showing your interconnections.

Don

Aww, sorry my bad, I meant the first two rows and eight of their columns.

Anyhow, this is the code that I am using, I only uncomment the line for the data transfer (LiquidCrystal lcd()) which I want to use and comment the other one.

#include <LiquidCrystal.h>

//LiquidCrystal lcd(12, 11, 9, 8, 7, 6, 5, 4, 3, 2);

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

void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(20, 4);
  // Print a message to the LCD.
  lcd.print("Helloooooooooooooooooooooooooooooooooo");
  //lcd.setCursor(0, 1);
  //lcd.print("1234567890");
  //lcd.setCursor(0, 2);
  //lcd.print("1234567890");
  //lcd.setCursor(0, 3);
  //lcd.print("1234567890");
}

void loop() {
}

This is my wiring diagram (Arduino pins - LCD pins):

pin 12 - RS pin 4
pin 11 - E pin 6
pin 9 - D0 pin 7
pin 8 - D1 pin 8
pin 7 - D2 pin 9
pin 6 - D3 pin 10
pin 5 - D4 pin 11
pin 4 - D5 pin 12
pin 3 - D6 pin 13
pin 2 - D7 pin 14

This is whats displayed on the LCD :

Aleks:

Nothing matches --

This is the uncommented command: LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

And this is what you claim to have connected (there's no photo for me to check).

pin 12 - RS pin 4
pin 11 - E pin 6
pin 9 - D0 pin 7
pin 8 - D1 pin 8
pin 7 - D2 pin 9
pin 6 - D3 pin 10
pin 5 - D4 pin 11
pin 4 - D5 pin 12
pin 3 - D6 pin 13
pin 2 - D7 pin 14

These connections do not even match the commented command: //LiquidCrystal lcd(12, 11, 9, 8, 7, 6, 5, 4, 3, 2);

This is the only uncommented output code: lcd.print("Helloooooooooooooooooooooooooooooooooo");

Yet your display shows eight numbers, as in the first eight characters of: //lcd.print("1234567890");

Please straighten out your wires and then take a picture of the connections between the LCD and the Arduino. Also show your code and a picture of the display that corresponds to that code.

Don

The wires do match and I've found the problem.

I just got the rest of the character displays and they work. So the first display is a faulty one :slight_smile:

Sorry about the mix up :slight_smile:

Anyhow, thanks for the help so far ... next week I'll take the GLCD at home and will try to figure it out how to light it up so I'll post again.

Meanwhile I'll try to get a few more of this displays.

Again, thanks to everyone for helping me out :wink: