Source for true 122mm 16x1 LCD? Not a 8x2 in one line.

I have some legacy equipment I'm fixing up which has a 122mm wide 16x1 display. I ordered some replacements, but to my great disappointment (and that of many others judging from my forum searches), these are really 8x2 displays on a single line. I've found some libraries that try to work around this, but none that support scrolling which is part of the functionality I use.

Does anyone know of a true 122mm 16x1 LCD or a library which makes the difference transparent?

The displays I am using now are Optrex Japan have the following markings:
PWB 16129-CEM
9872H4
and have two chips, a Hitachi HD44780A00 and a Sanyo LC7930

Just make sure the device has two chips, an HD44780 compatible controller and an HD44100 compatible auxiliary controller.

Don

RyanN: I have some legacy equipment I'm fixing up which has a 122mm wide 16x1 display. I ordered some replacements, but to my great disappointment (and that of many others judging from my forum searches), these are really 8x2 displays on a single line. I've found some libraries that try to work around this, but none that support scrolling which is part of the functionality I use.

Does anyone know of a true 122mm 16x1 LCD or a library which makes the difference transparent?

Hmmm.

Are you saying the displays use two chips each? The Sanyo LC7930 is just a clone of the HD44100, and the fact that they actually have SMD chips with numbers indicate that they are of some considerable antiquity.

The combination of these two chips is used to drive a 16 by 2 display, so if they are only driving a 16 by 1, then it would seem they are already an a redundant configuration that will scroll with the normal library. Just call it a 16 by 2 and do not access the second line.

Are you saying the displays use two chips each?

Yes.

Just call it a 16 by 2 and do not access the second line.

An interesting thought that might work in a new project -- but he is dealing with legacy equipment and most likely can't change the firmware. Since the memory map is considerably different for a 2-chip 16x1 display compared to a 2-chip 16x2 display this would be likely to introduce additional problems as well.

It's also a possibility that the legacy firmware utilized the 5x10 font that is available on the true 1-line displays and this feature won't work on a display that is initialized as a 2-line device.

Also, the 1-line devices use a different multiplex rate than the 2-line devices and yet another multiplex rate when run with the 5x10 character set. This will mess up the contrast introducing another aspect that would have to be dealt with as well.

Don

It is indeed a legacy device of “considerable antiquity”.

After looking in to it, what I have is considered 1/8 duty whereas what is now commonly available is 1/16 duty. Page 8

If I try using a new LCD, I just get the first eight characters. If I do a test, initializing the new LCD as a 8x2, I can make it work. I haven’t figured out an easy way to wrap the LCD code to make a 8x2 behave like a 16x1.

I’ve looked at the data sheet for every new 16x1 LCD I can find for sale and they all seem to break the 16 characters into two sets of eight.

I did find the LiquidCrystal440 library where the author handles this “crazy eight” addressing, but it doesn’t handle scrolling.
The device uses the LCD for data entry (awkward!) so I use a fair amount of scrolling and cursor manipulation.

I did just notice that one of my displays has the Sanyo auxiliary controller I mentioned earlier and one has the Hitachi 44100H. The new LCDs just have a single blob.

floresta: Also, the 1-line devices use a different multiplex rate than the 2-line devices and yet another multiplex rate when run with the 5x10 character set. This will mess up the contrast introducing another aspect that would have to be dealt with as well.

Well now, you have forced me to read through the whole HD44780 datasheet - and be up well past midnight. :astonished:

As far as I can see, the two alternate character sets have no effect on the configuration of the display memory ("DDRAM") as the necessary outputs for 5x10 are already provided by the main controller chip. The only reason to use a second chip with the HD44780 would seem to be to produce a contiguous 16 character line, ignoring the superfluous outputs. The different bias levels are inherent in (fixed by) the module design and the contrast voltage, likewise.

I therefore cannot see how there can be any other configuration difference between one module and another with different numbers of rows per character, given that each is a 2-chip module. And the enquiry here appears to be specifically in regard to composing new firmware, not fitting a new display to existing, fixed firmware.


OK, update on that:

RyanN: I've looked at the data sheet for every new 16x1 LCD I can find for sale and they all seem to break the 16 characters into two sets of eight. ... I did just notice that one of my displays has the Sanyo auxiliary controller I mentioned earlier and one has the Hitachi 44100H. The new LCDs just have a single blob.

In summary of my comments previously, I think you will find that the "single blob" or single chip displays will in fact, divide a 16 by 1 display into two quite separate "lines" of 8, whereas one with two "blobs" or chips will handle a 16 by 1 display as a single line.

To handle scrolling on any form of two line display - and it is a not uncommon topic here - you will have to maintain an external buffer (or arrange to read characters out of the LCD) in order to deal with rollover from one "line" to the other. I do not think any of the libraries have considered the substantial extra complexity worthwhile to justify this inclusion.

Paul__B: To handle scrolling on any form of two line display - and it is a not uncommon topic here - you will have to maintain an external buffer (or arrange to read characters out of the LCD) in order to deal with rollover from one "line" to the other. I do not think any of the libraries have considered the substantial extra complexity worthwhile to justify this inclusion.

Sorry to keep you up. Thanks for confirming what I suspected, that this would not be a minor task. Can the HD44780 report what is at the cursor's position? On an 8x2 could you read the first character on the second line, shift left, then write this character to the last position on the first line? Might be possible without using an external buffer. Fortunately speed isn't a big issue for me.

Can the HD44780 report what is at the cursor's position?

Yes. You set the cursor to the desired location and then read the data. It's sort of like reading the busy flag except that RS is high to get data and you read all eight bits instead of just the high bit.

I don't recall how (or if) the LiquidCrystal440 program deals with the 1-line 16x1 displays. I helped John a bit when he was writing that library but mostly with the part that reads the busy flag. The 'crazy eight' addressing that he dealt with concerns the four line displays where the text inherently overflows from the first row to the third instead of to the second.

Well now, you have forced me to read through the whole HD44780 datasheet - and be up well past midnight.

Did you find the part where it shows how the memory map changes when you configure the device to use one line of memory? I only came across that tidbit a few years ago and I have been using these things for decades. It's been right there in plain sight (Figure 2 in the DDRAM section) but I kept on overlooking it. Basically the difference is that there is no gap between addresses 0x27 and 0x40 as there is when you have to use two lines of memory.

Don

I'm having the same problem. I need to replace 1601 LCD in a piece of industrial equipment so I cannot program the text addressing. My original module is also the PWB 16129-CEM but I have 44100 and 44780 chips. I tried to replace it and discovered only the first 8 characters appear.

Is there any possible "simple" hardware workaround to this (I'm intimidated to even do the research on an external buffer)? Or do I just need to get my hands on the old modules?

I tried to replace it and discovered only the first 8 characters appear.

That's because it only has one chip. The complete explanation can be found by following the [u]LCD Addressing[/u] link at http://web.alfredstate.edu/weimandn.

Or do I just need to get my hands on the old modules?

The replacement module doesn't necessarily have to be old but it does have to have two chips.

Don

floresta: That's because it only has one chip. The complete explanation can be found by following the [u]LCD Addressing[/u] link at http://web.alfredstate.edu/weimandn.

The replacement module doesn't necessarily have to be old but it does have to have two chips.

Don

I'm looked through that link and it goes way over my head. I'm a novice when it comes to this stuff. I speak C like a baby.

I found one that has 3 ICs... what's with the extra 1? My broken one has 44100 and 44780. I've found a replacement with (2) 44100's and (1) 44780. Do you think that would be compatible? The seller doesn't know.

I was under the impression that you absolutely needed to use a 16x1 display.

I’m looked through that link and it goes way over my head.

You don’t really have to understand everything, the important part in your case is the addressing for the first 16 characters.

Look at the numbers inside the first sixteen sets of boxes in the memory map for each display. You will find that they are all 00 01 02 03 . . . 0E 0F except for the display that you tried, the 16x1 (Type 1).

That means that almost any display that will physically fit in your equipment should work. A 16x1 display with only one chip is one example of those that won’t. Another is an ‘extended temperature range’ display which typically requires a negative voltage for the contrast adjustment.

You may have to tinker with the contrast if you substitute one of these multi-row displays for your original single-row display. You won’t know until you try it.

Don

I found one that has 3 ICs... what's with the extra 1? My broken one has 44100 and 44780. I've found a replacement with (2) 44100's and (1) 44780. Do you think that would be compatible? The seller doesn't know.

I forgot to answer this part.

The 44780 is the controller chip which contains all of the brains, all of the memory (for up to 80 characters), and the circuitry to drive 16 characters (but only in 8 columns).

Each 44100 adds the capability to drive another 16 characters (again limited to 8 columns). So your three chip setup can drive a total of up to 48 characters in up to 24 columns. It is probably a 20x2 or a 24x2 display.

NOTE: The term 'column' refers to the memory map, not the display itself. This difference is explained in the link in reply #10. This is why a 16x1 with only one chip has a different memory map than a 16x1 with two chips.

Don