old LCD display grief HD44780A00

Janne

Senior Member
Hi,

I'm having a problem trying to get an older (from about 1994) lcd display to work. It's a a nice 2x40 display with a cool looking stainless steel or chromed display opening :). The problem is that I'm having no luck in getting it to work with picaxe.

The picaxe is connected to the lcd using hippy's lcd routines (picaxe 40x1), the information is found here: http://www.hippy.freeserve.co.uk/picaxelc.htm
Anyone who wants to skip reading that, it's just the normal 4-bit interfacing to the common LCD.

I tried the system with a modern lcd display, that had hd44780U controller chip installed, and it worked just as expected. But the older display with hd44780A00 doesn't work at all. I have 2 of those big displays, tried them both and they didn't work. I also tried another 2x16 character display also with hd44780A00, and same thing, no luck. All of these displays were taken from original packaging, so they're presumed to be unused and good.

Does anyone know any traps with the older chip that might cause the display not to work? Yesterday i tried searching for the datasheet of the A00 display version, but i didn't find one, so i have no clue if the old chipset even supports 4-bit interfacing etc.. Also, any help locating the datasheet for the older chip would help. I also tried modifying the code with longer delays between data transfers, it just made the new display work darn slowly, but didn't help with the case of the older lcd's.

test code attached below, just in case:

Code:
#PICAXE 40X1
'#NO_TABLE
'#NO_DATA
pause 500	  
	  
	  
'***********************************************************************	  
	  
	  'OUTPUTS
	  SYMBOL  ENABLE12V = 1
	  SYMBOL  CS	  = 0 
	  
	  'LCD OUTPUTS
	  SYMBOL  RS        = 2         ; 0 = Command   1 = Data
        SYMBOL  E         = 3         ; 0 = Idle      1 = Active
        SYMBOL  DB4       = 4         ; LCD Data Line 4
        SYMBOL  DB5       = 5         ; LCD Data Line 5
        SYMBOL  DB6       = 6         ; LCD Data Line 6
        SYMBOL  DB7       = 7         ; LCD Data Line 7

        SYMBOL  RSCMDmask = %00000000 ; Select Command register
        SYMBOL  RSDATmask = %00000100 ; Select Data register

        SYMBOL  i       	= b2   'loop variable
        SYMBOL  rsbit        	= b3
        SYMBOL  TEMP 	  	= b1	 'SHORT TERM TEMP VARIABLE
        SYMBOL  TEMPW  		= W5   'TEMP WORD VARIABLE
        SYMBOL  DAC		= W6   'DAC OUTPUT VALUE
        SYMBOL  TEMPWL		= B10
        SYMBOL  TEMPWH		= B11
        SYMBOL  S1		= B4
        SYMBOL  S10		= B5
        SYMBOL  S100		= B6
        '***********************************************************************

PowerOnReset:

GOSUB InitialiseLcd 'RUN LCD DISPLAY INIT

EEPROM 6,("value")
FOR i = 6 TO 10
	READ  i,temp
	GOSUB SendDatabyter
NEXT

temp = $C0	'move to start of the second line
GOSUB SendCmdbyter
hspisetup spimode00, spislow 'setup the hardware SPI port
high cs 'put DAC chip select to idle
high enable12v

main:		'MAIN PROGRAM LOOP

readadc10 1,DAC
DAC = DAC * 4 MAX 4095
pause 200

'bit 15; 1= write to DACb 0= write to DACa
'bit 14; 1= enable input buffer 0 = input buffer is disabled
'bit 13; 1= outputgain at 1x 0 = 2x output gain 
'bit 12; 1= outputs enabled 0 = outputs are floating (high impedance)
'bits 11-0 Transferred data, MSb first.

TEMPW = DAC | %0011000000000000	'mask the 4 control bits --> writing to DACa, input buffer disabled, output at 1x gain, outputs enabled.
TEMPW = TEMPW & %0011111111111111
'sertxd (#var_out)

'*****spi transfer
low cs 	'low chip select
HSPIOUT (TEMPWH,TEMPWL)
PAUSE 1
high cs	'cs back to idle, latches data to output




goto main



    
    

    
    
    
    
    '********* LCD routines below **************
    InitialiseLcd:

        FOR i = 0 TO 5
          READ i,temp
          GOSUB SendInitCmdbyter
        NEXT

        ' Nibble commands - To initialise 4-bit mode

        EEPROM 0,( $33 )    ; %0011---- %0011----   8-bit / 8-bit
        EEPROM 1,( $32 )    ; %0011---- %0010----   8-bit / 4-bit

        ' byter commands - To configure the LCD

        EEPROM 2,( $28 )    ; %00101000 %001LNF00   Display Format
        EEPROM 3,( $0C )    ; %00001100 %00001DCB   Display On
        EEPROM 4,( $06 )    ; %00000110 %000001IS   Cursor Move

                            ; L : 0 = 4-bit Mode    1 = 8-bit Mode
                            ; N : 0 = 1 Line        1 = 2 Lines
                            ; F : 0 = 5x7 Pixels    1 = N/A
                            ; D : 0 = Display Off   1 = Display On
                            ; C : 0 = Cursor Off    1 = Cursor On
                            ; B : 0 = Cursor Steady 1 = Cursor Flash
                            ; I : 0 = Dec Cursor    1 = Inc Cursor
                            ; S : 0 = Cursor Move   1 = Display Shift

        EEPROM 5,( $01 )    ; Clear Screen

        RETURN

    SendInitCmdbyter:

        PAUSE 150                        ; Delay 15mS

SendCmdbyter:

	rsbit = RSCMDmask               ; Send to Command register

SendDatabyter:
		
	rsbit = rsbit | OUTPINS
	rsbit = rsbit & %00000111	
	pins = temp & %11110000 | rsbit ; Put MSB out first
	PULSOUT E,10   
	pause 100                  ; Give a 10uS pulse on E
	pins = temp * %00010000 | rsbit ; Put LSB out second
	PULSOUT E,10                     ; Give a 10uS pulse on E
	pause 100

	rsbit = RSDATmask               ; Send to Data register next

	RETURN
 

BeanieBots

Moderator
Many 'older' LCD displays that I have require a negative voltage for the contrast. Besides that, they have been fine with PICAXE control.
 

westaust55

Moderator
One thing that does crop up very occasionally is not a function of the LCD driver chip but the module and its connection terminals.

These mentioned modules have the connections for the power supply reversed on pins 1 and 2 compared to the "normal" arrangement.


Edit, looking at the last page of a hd44780U datasheet suggests that the A00 is just a variant with the Japanese Font instead of the European font.
 

Attachments

Last edited:

john2051

New Member
re: lcd

Hi Janne,

I have a 2x40 char lcd with the same chip on it. It works perfectly with a serial bacpack board, and directly on a matrix multimedia pic development board. The only thing that had me scratching my head for a few days, was the pin out connections. In the end it seemed that this one was connected as a seiko display. It had two rows of seven pins.
I almost threw this away thinking it was faulty. I'm pleased I didnt give up!

Hope this encourages you to persevere....

Regards John
 

Janne

Senior Member
Cool, the right answer the the problem arrived 4 minutes after posting :).. Indeed applying -3V to the contrast pin made it work right away.

The big displays came with an old microprocessor demo board. When i looked into the board out of curiosity earlier, i wondered why it had this icl7660 IC right next to the LCD header socked :D.. I guess this one answers that question.

This display has the normal pin arrangements, but I had to probe the connections earlier, since there is no markings about the pin numbers in the lcd whatsoever.
 
Top