Character Display Compatibility (HD44780 vs. WS0010) - Page 1
Forum section: electronics / general

author: t0mt0m
author_rank: Contributor
timestamp: January 09, 2023, 01:51:54 pm
content: Hi,i want to replace the 40x2 character display of a 1986 akai s900.Since I had an OLED variant from vishay lying around i hooked it up but it does not work correctly.The first line is displayed correctly, but the second half of the second line is blank.You could say it's only showing 75%.The original display is a Optrex DMC40218UE.The oled one i have is this:OLED-040N002A-LPP5N00000https://www.mouser.at/datasheet/2/427/oled040n002alpp5n00000-1153452.pdfI know the generic 40x2 lcds you get for ~10$ work out of the box on the S900.So what could be the reason the oled does not display all characters?Theres a few jumpers on the back of the display. I was thinking about testing the J68_J80 jumper which is currently set to 6800 mode and changing it to 8000 mode. But then i took a look at the service manual and the original lcd has pin 5 labelled as R/W, so that would indicate it is using 6800 mode as well, right?Maybe someone experienced with these displays can give me some tips.I really love the look of the oled display and would like to put it to good use.thankscheers

author: Doctorandus_P
author_rank: Super Contributor
timestamp: January 09, 2023, 02:33:04 pm
content: Is that display supposed to be HD44780 compatible?Have you checked commands of the display?Another possibility is timing. Some of these displays are more sensitive to timing differences then others, also the datasheet specify or assume a certain clock frequency (for the display chip itself) and that of course also influences timing.And maybe your display is just broken. Swap it for another and observe the results.

author: madires
author_rank: Super Contributor
timestamp: January 09, 2023, 03:13:32 pm
content: Quote from: t0mt0m on January 09, 2023, 01:51:54 pmThe LCDs use an HD44780 (or compatible), while your OLED has a WS0010 (actually two because of 40x2). Both controllers are quite compatible (from an instruction point of view) but not 100%.

author: t0mt0m
author_rank: Contributor
timestamp: January 09, 2023, 03:35:36 pm
content: Thanks so much for the replies.So that basically means there's nothing I can do to make it work, other than putting a microcontroller in between to do some kind of translation or modifying the akai's firmware, which is completley out of my range of abilities.Anyway I'll hook up the display to an arduino to make sure it's not faulty but i think it's unlikely since it was new.

author: ozcar
author_rank: Frequent Contributor
timestamp: January 09, 2023, 08:21:20 pm
content: Quote from: t0mt0m on January 09, 2023, 03:35:36 pmGood idea.My immediate thought was that perhaps there was some difference between the two displays relating to the way the data RAM addresses correspond to the positions on the display, causing some of the characters to be placed "off screen". The address required for the start of the second line is usually not contiguous with the end of the first line, but then having an address discontinuity in the middle of a line would be a bit weird.The data sheet you linked to shows the RAM -> character position relationship on page 4. To confuse things a little they give the column addresses on the top line in decimal (starting at 1) but the RAM addresses in hexadecimal (starting at 0). Then they have apparently messed up the values given for the first line of the display by ending the line with a repeat of the beginning (should presumably end with 10 11 12 13 not 00 01 02 03).The data sheet I can turn up for DMC40218 does not seem to give the equivalent information, but having the second line begin at 0x40, with no silly break in the middle of the line is what I would expect.

author: james_s
author_rank: Super Contributor
timestamp: January 09, 2023, 08:35:32 pm
content: Quote from: t0mt0m on January 09, 2023, 03:35:36 pmIt depends on what the actual issue is, if it's a matter of timing it's possible you could insert a delay or pulse extender for the offending signal but it's going to depend on exactly what is causing the malfunction. You'd probably have to use a logic analyzer to look at how the display is being driven, and then try driving your display with an arduino or something and look at the signals to see how they differ. Then you can try to reproduce the faulty behavior by altering the code in order to confirm exactly what's making it misbehave.

author: Ian.M
author_rank: Super Contributor
timestamp: January 09, 2023, 09:57:53 pm
content: Seehttps://web.alfredstate.edu/faculty/weimandn/lcd/lcd_addressing/lcd_addressing_index.htmlfor HD44780 addressing vs display layout.Using an Arduino to test the addressing would definately be the way forward, as you need to be *CERTAIN* they are mapped the same. One issue I have run into before that caused mysterious corruption of the layout of displayed text was writing to a HD44780 too fast - the firmware didn't check the busy bit and the display was a rather old one which I believe was slower than normal, so any command that took slightly longer than usual to complete resulted in the next one being silently ignored, resulting in lost cursor address positioning commands (because they were the first sent for any text field) and corrupted layout!

author: t0mt0m
author_rank: Contributor
timestamp: January 10, 2023, 08:07:59 pm
content: Thanks a lot for the suggestions!However I've decided to give up for now and go the cheap LCD route.I don't have much time right now and I'd rather make some music with the S900.I've tested the OLED on the arduino using the LiquidCrystal library and it showed stuff on the whole display - so i assume it's not faulty.however it was not acting right either. So yeah, these controllers are not compatible. And after a while it has stopped displaying anything at all. I really hope I haven't ruined it.I can't see how though.Before that i tried to sniff the AKAIs display signal but couldn't get that to work either. I guess my programm is way to slow, I only got 2 chars and that's it. Also the S900 obviously needs some feedback from the display like the busy signal, because without it it reacts extremely slow to menu changes etc.I quit.But thank you all for your help

author: james_s
author_rank: Super Contributor
timestamp: January 10, 2023, 08:57:19 pm
content: What did you try to sniff it with? Even the fastest HD44780 type display should be trivial to read with one of those cheap USB logic analyzers. OLED displays are nice but they seem to be a lot less robust than LCD. My friend managed to kill one trying to adapt it to a piece of audio gear, I think at some point he must have momentarily connected the power backwards or to the wrong pin. Internally the OLED controllers are all 3.3V I think and the logic in old gear is almost all 5V.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: January 10, 2023, 10:37:33 pm
content: Quote from: t0mt0m on January 10, 2023, 08:07:59 pmProbably the best idea, especially as you have no control over the driving code in fixed equipment.Quote from: t0mt0m on January 09, 2023, 01:51:54 pmThat's remarkably close to almost workingIs the info on the second line 'as expected' ?LCD displays can often have varying mappings into the LCD controller memory, especially when the physical display is smaller than the controller's max. That's fixed by LCD pinout and layout design.Also, some code uses delays instead of BUSY polling, and delays tuned for 44780 may not work on another controller.eg if your newer board is slower, it may drop info, and display the last half, on the first half line ?