1
OLEDs / spontaneous reverse mode with NHD-0420CW
« on: August 09, 2017, 12:30:03 PM »
Hi - I used an NHD-0420CW for a recent product. Early on, I noted that sometimes it powered up reversed, so I appended a control 0x20 to the init sequence, and that seemed to fix it. I have delivered a couple units, and now the customer says that one of them spontaneously reversed itself and won't go back normal on powerup. I'm perplexed.
Below is my init sequence, applied once at powerup. I never use reverse at all, but I do go back and forth between 3-line and 4-line format (3-line with middle line double size), so am regularly sending control sequences for this. (Edit - I'm talking to this in SPI mode, if that matters.)
Possibilities:
1) I don't understand something, and need to be sending additional init, or regularly goosing mode.
2) The LCD is damaged (client did mention something about a power outage during an electrical storm, but system is well grounded and good filtering on line input).
3) I'm using the ribbon connector soldered on the back, and perhaps it came loose during shipment, might be an intermittent pin connection.
4)
This is high end hardware for a national lab, high visibility. I'm a bit embarrassed over this, need a confident fix fast. Please help.
(System is running ARM-ASM on an NXP LPC2468 cpu, bare assy, no os.)
Thanks!
Jeff Casey
Rockfield Research Inc.
Las Vegas, NV
init sequence:
bl msec1
write FIO4CLR,1<<12 ; pull DRESET low for display
bl usec500 ; pause a bit
write FIO4SET,1<<12
bl usec500
dcom 0x2A ; function set extended
dcom 0x71 ; function sel A
ddata 0 ; disable internal VDD reg, enable reg 5V
bl flushd
dcom 0x28 ; func set
dcom 0x08 ; displ off, curs off, blink off
bl flushd
dcom 0x2A ; func set
dcom 0x79 ; oled com set enabled
bl flushd
dcom 0xD5 ; set clock
dcom 0x70 ; set clock
dcom 0x78 ; OLED com set disabled
bl flushd
dcom 0x09 ; ext func 4 lines
dcom 0x06 ; com seg dir
dcom 0x72 ; func sel B
ddata 0 ; ROM cgram sel
bl flushd
dcom 0x2A ; func set
dcom 0x79 ; OLED com set enabled
bl flushd
dcom 0xDA ; set seg pins config
dcom 0x10 ; ...
dcom 0xDC ; func sel C
dcom 0 ; ..
bl flushd
dcom 0x81 ; set contrast control
dcom 0x7F ; ...
bl flushd
dcom 0xD9 ; set ph length
dcom 0xF1 ; ...
bl flushd
dcom 0xDB ; set VCOMH
dcom 0x40 ; ...
bl flushd
dcom 0x78 ; OLED com set disabled
dcom 0x28 ; func set
dcom 0x01 ; clear
dcom 0x80 ; set addr 00
dcom 0x0C ; display on
dcom 0x20 ; added *** later, ensures display is not reversed....?
bl flushd
Below is my init sequence, applied once at powerup. I never use reverse at all, but I do go back and forth between 3-line and 4-line format (3-line with middle line double size), so am regularly sending control sequences for this. (Edit - I'm talking to this in SPI mode, if that matters.)
Possibilities:
1) I don't understand something, and need to be sending additional init, or regularly goosing mode.
2) The LCD is damaged (client did mention something about a power outage during an electrical storm, but system is well grounded and good filtering on line input).
3) I'm using the ribbon connector soldered on the back, and perhaps it came loose during shipment, might be an intermittent pin connection.
4)

This is high end hardware for a national lab, high visibility. I'm a bit embarrassed over this, need a confident fix fast. Please help.
(System is running ARM-ASM on an NXP LPC2468 cpu, bare assy, no os.)
Thanks!
Jeff Casey
Rockfield Research Inc.
Las Vegas, NV
init sequence:
bl msec1
write FIO4CLR,1<<12 ; pull DRESET low for display
bl usec500 ; pause a bit
write FIO4SET,1<<12
bl usec500
dcom 0x2A ; function set extended
dcom 0x71 ; function sel A
ddata 0 ; disable internal VDD reg, enable reg 5V
bl flushd
dcom 0x28 ; func set
dcom 0x08 ; displ off, curs off, blink off
bl flushd
dcom 0x2A ; func set
dcom 0x79 ; oled com set enabled
bl flushd
dcom 0xD5 ; set clock
dcom 0x70 ; set clock
dcom 0x78 ; OLED com set disabled
bl flushd
dcom 0x09 ; ext func 4 lines
dcom 0x06 ; com seg dir
dcom 0x72 ; func sel B
ddata 0 ; ROM cgram sel
bl flushd
dcom 0x2A ; func set
dcom 0x79 ; OLED com set enabled
bl flushd
dcom 0xDA ; set seg pins config
dcom 0x10 ; ...
dcom 0xDC ; func sel C
dcom 0 ; ..
bl flushd
dcom 0x81 ; set contrast control
dcom 0x7F ; ...
bl flushd
dcom 0xD9 ; set ph length
dcom 0xF1 ; ...
bl flushd
dcom 0xDB ; set VCOMH
dcom 0x40 ; ...
bl flushd
dcom 0x78 ; OLED com set disabled
dcom 0x28 ; func set
dcom 0x01 ; clear
dcom 0x80 ; set addr 00
dcom 0x0C ; display on
dcom 0x20 ; added *** later, ensures display is not reversed....?
bl flushd