Inicialization optrex 51320

rgallardo

New member
Hello:

I'm working with F-51320GNB-LW-AB, LCD Module, but I can't do it work.
I have a specific question:
In the initialization (RESET LOW-10ms- and then RESET HIGH-1ms-), just before "the function setup by command input", I obtain V5=2,19;V4=2,22;V3=1,84;V2=1,8;V1=2,05. But the default state is LCD bias set to 1/9(The circuit is OK, I reviewed almost ten times).
This is normal?
The V1,V2....never change to negative, even after the inicialization(with the power control setting).

I'm work to 4MHz, 3x step_up voltage circuit, power control internal, handling the signals A0,RD,WR,CS1,RES
The program is:
Code:
----------------------------------------------------------------------
void Inic_Display(void) 
{       
        output_low (COMANDO_RES);
        delay_ms(15);
        output_high (COMANDO_RES);
        delay_ms(3);   

        output_low (COMANDO_CS1);
        output_high (COMANDO_RD);
                
        Write_Display(CMD,RESET_DISPLAY);               //0xE2
        Write_Display(CMD,LCD_BIAS_1_9);                //0xA2
        Write_Display(CMD,ADC_SELECT_NORMAL);           //0xA0
        Write_Display(CMD,COMMON_OUTPUT_NORMAL);        //0xC0           
        Write_Display(CMD,V5_RESISTOR_RATIO);           //0x26   
        Write_Display(CMD,ELECTRONIC_VOLUME_SET);       //0x81 
        Write_Display(CMD,ELECTRONIC_VOLUME_INIT);      //0x20 
        Write_Display(CMD,(POWER_CONTROL_SET |
                           VOLTAGE_REGULATOR |
                           VOLTAGE_FOLLOWER |
                           BOOSTER_CIRCUIT));           //2F
        
        Write_Display(CMD,DISPLAY_ON);                  //0xAF
        delay_ms(3000);
}
----------------------------------------------------------------------
void Write_Display(int comando, int data) 
{  
        if(comando == CMD)                              //=0x01
        {  
                output_low (COMANDO_A0);                //Comando
        } 
        else 
        {
                output_high (COMANDO_A0);               //Dato
        }
        output_low (COMANDO_WR);
        
        DATOS = data;                   
        delay_us(1);
        
        output_high (COMANDO_WR);
        delay_us(1);
}
----------------------------------------------------------------------
void PRUEBA(void)
{
        Write_Display(CMD,START_LINE_SET+0x1F);         //40~7F
        Write_Display(CMD,PAGE_ADDRESS_SET+0x03 );      //0xB0~0xB8
        Write_Display(CMD,COLUMN_ADDRESS_HIGH+0x04);    //0x10~0x18
        Write_Display(CMD,COLUMN_ADDRESS_LOW);          //00
        Write_Display(DATO,0x8F); 
        Write_Display(CMD,DISPLAY_ON);                  //0xAF
        delay_ms(1000);                 
}
----------------------------------------------------------------------
Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.
 

CF Tech

Administrator
Do you know which controller is used on the 51320? Do you have links to the 51320 data sheet and the controller data sheet? For anyone to help, they would also need that information at a minimum.
 
I have used the F-51320GNB-LW-AB in several projects. You can look at my sample code in this thread:
https://forum.crystalfontz.com/showthread.php?t=3619 in the "grlcd_code.zip" file.

There is also some discussion in another thread:
https://forum.crystalfontz.com/showthread.php?threadid=3808 which has a sample image in the 7th post.

Your init section looks approximately correct. I notice you are using 8080 mode control signals. Do you have pin 29 (C86) tied to ground? Also, pin 30 (IRS) must be tied to +5v to use the internal resistor settings.

Without more information about your hookup, or a schematic, I cannot offer any ideas why it doesn't work.
 
Your schematic looks OK for the modes you are using. Are you operating the display and cpu at 5v or 3.3v or what?

Since the charge pump is not being activated (V1~V5, Vout, etc), there is uncertainty that your commands are actually being received by the display. Are you sure that your PIC ports are set to outputs? Do you have any test equipment (oscilloscope) to verify that your control signal timing is OK? It is possible you are not controlling the display effectively. Maybe you could try using 6800 mode, but that would need a few code changes.

Have you tried to do a status read from the display, during parts of the init routine, to see whether the status bits ever change? You will then need to add code to switch your data bus port to/from input mode. You could see if the RESET bit changes when you change the COMANDO_RES input.

In my use of the display, I always turn on the charge pump in steps (0x2C, delay, 0x2E, delay, 0x2F). I have done it this way, in my code, for years, and I don't remember exactly why. Perhaps I had trouble with just using only 0x2F, when I was first experimenting. Have you tried to do it in steps?

Perhaps as a temporary measure, you can substitute a 9v battery as an external supply, connected (-) to V5, (+) to gnd, and only use the V/F control bit (i.e. use 0x29 instead of 0x2F). That way you should be able to see whether pixels become visible. You may need to use a potentiometer across the battery, with the wiper to V5, so you can adjust contrast. Or use one of the other power configurations shown in the data sheet.

Can you think of any other details about your setup that may help to give a clue to the problem?
 
Last edited:
I have thought of some more things to tell you. I have installed between 75 and 100 of these displays into equipment, and only a few problems were seen. To help me decide whether the display was bad, or my circuit board was bad, I bought an eval board:
http://www.apollodisplays.com/51320eval.php

I know it is expensive, but I needed a tool to check displays. A few displays had problems, but mostly my circuit had one of 3 problems:

1. Shorted traces (solder bridge), typically between two pins of the tiny 30-pin ZIF connector.

2. Open traces, usually a pin tail of the 30-pin ZIF connector had a bad solder connection to the pcb pad.

3. Vout not high enough or drifting, due to leakage. The charge pump circuit is very sensitive to leakage, so use high quality caps, and be very sure the pcb surface near the caps is cleaned of flux/rosin from soldering (under the cap body).

I don't know if this will help you or not.
 

rgallardo

New member
I'm operating the display and cpu at 5v.
I verify that the control signal timing is OK with a oscilloscope.Now turn on the charge pump in steps like you.
I treated to do a status read from the display in the init routine, changing the port like input, but I just read 0xFF, the measured voltaje in theses pins was 3,50 V (the pic recognizes it like logic 1), the RESET bit no changes when changes the COMANDO_RES input.
Then I put -9V in V5 changing to V/F control bit and nothing was seen.

An extra cuestion:
If you write a word in the RAM, for example 0xFF, and then put the DISPLAY_ON, this apears (in the display) horizontally (128) or vertically(64) ( - or |)?
 

rgallardo

New member
I'm operating the display and cpu at 5v.
I verify that the control signal timing is OK with a oscilloscope.Now turn on the charge pump in steps like you.
I treated to do a status read from the display in the init routine, changing the port like input, but I just read 0xFF, the measured voltaje in theses pins was 3,50 V (the pic recognizes it like logic 1), the RESET bit no changes when changes the COMANDO_RES input.
Then I put -9V in V5 changing to V/F control bit and nothing was seen :( .

An extra cuestion:
If you write a word in the RAM, for example 0xFF, and then put the DISPLAY_ON, this apears (in the display) horizontally (128) or vertically(64) ( - or |)?
 
Are you measuring your signals at the display? It is almost impossible to measure the signals at the controller on the display, since it is covered with potting compound, so the best you can do is test at the pins of the ZIF connector. If you measure at the cpu pins, you don't know whether the signal is really reaching the flex tail of the module.

As for using the 9v battery, you should use a 10Kohm pot across the battery to vary the voltage. There are different connections shown on pages 8-45 and 8-46 of the SED15605 data sheet. The voltage can be connected to either V5 or Vout, depending on the configuration. But notice that the IRS pin must also be changed to match the configuration. You should be able to find that varying the voltage from -4 to -9 will make the pixels change from dark to light (assuming backlight is on). This is after the init code has set the register values, and you may need to use 0x2F for power control. I am guessing here because I have not had a problem like this, and have never tried the other configurations.

If these things give you no result, then I suspect that the connection to the flex tail of the display is bad. Maybe you could post a picture of your circuit board (preferably high resolution and in-focus :rolleyes: ). What PIC cpu, and what ports are you using?

The data bytes give 8 vertical pixels (|), in the selected column (1 of 128) and selected page (1 of 8), see page 8-29.
 

rgallardo

New member
Cosmicvoid, I detected the problem(now the display is working ).
The Display that I have was 51553, in its back appears 51320 :D . Changing the conections it works :rolleyes: .

Thankyou :)
you were helpful.
 

CF Tech

Administrator
rgallardo: I am glad that you were able to get it going. Nice work:)

And three cheers for cosmicvoid: "Hip-Hip-Hooray!", "Hip-Hip-Hooray!", "Hip-Hip-Hooray!"
 
Top