# Datos de GLCD



## Gacsms (Sep 20, 2017)

Buen dia, acudo a este foro por una orientacion. 
Encontre un GLCD HG12631R-EWVO-04 HYUNDAI. Con 6 seis controladores SAMSUNG S6B2108X01-TO.
Resulta que no encotre ninguna info de este Disolay y mucho menos de los controladores.
Me gustaria saber si alguien del foro ya trabajo con este componente y me pueda compartir la info.
Quiero hacerlo funcionar con un PIC 18F4520 en programacion CCS. 
Es para visualizar un menu para un Banco de Pruebas de ECU automotriz.
Muchas gracias a todos.
PD: Subo las imagenes del display en cuestion


----------



## capitanp (Sep 20, 2017)

no es el mismo pero se acerca mucho, debe funcionar igual

http://pdf1.alldatasheet.com/datasheet-pdf/view/95379/HYNIX/HG12605F-DY.html


----------



## Gacsms (Sep 20, 2017)

Gracias Capitanp, por tu interes. Vy a probar.


----------



## Scooter (Sep 20, 2017)

Se ve que los GLCD son mas o menos lo mismo de standard que los alfanumáricos, y "visto uno vistos todos"
Lo digo porque la librería de arduino maneja un quintal de displays diferentes, que se ve que se usan igual


----------



## Daniel Meza (Sep 20, 2017)

Yo opino algo no muy esperanzador,  por lo que veo en la foto de la placa con los chips supongo que se trata de solo los controladores de la matriz de segmentos y no de los de gestión de la interfaz con el controlador.

Como en esta foto:





Se observa un grupo de 4 chips iguales que son los que manejan directamente cada segmento de la pantalla, pero a la izquierda de ellos (imagen inferior) hay dos integrados más que son los "maestros" que controlan a los anteriores (estos integrados son los que faltan en la tuya). 

En otras palabras, tendrás que descifrar como operan los controladores de los segmentos. O bien, si aún tienes a la mano el equipo de donde la sacaste, examina que había antes del conector de ese display; con suerte está por ahí el controlador de la pantalla.

Saludos


----------



## Gacsms (Sep 22, 2017)

Hola Daniel Meza gracias por el interes. voy a hacer lo que sugeris y lo comento. Gracias



Hola Scooter. Vos sabes que estube pensando lo mismo, pero todavia no lo puse en practica, para no hacer macana e inutilizar el display. Cuando tenga los datos lo pongo en practica y comento. Gracias.


----------



## Gacsms (Sep 23, 2017)

Hola, esta es la placa que contiene el display. No veo integrado relacionado con el Glcd en cuestion.  Gracias

Placa con circuitos del display


----------



## Daniel Meza (Sep 23, 2017)

¿Que dices del chip que tiene la estampa del código de barras?, parece ser que ese es el controlador


----------



## Gacsms (Sep 24, 2017)

Hola Daniel, estuve buscando datos del integrado que mencionas y no encontre nada. Parece un integrado personalizado. con la marca de la pistola Symbol


----------



## Gacsms (Nov 16, 2017)

El display trabaja con 4 controladores Samsung 0108  y dos 0107. corrijo lo que postee al principio.
Es un modelo de 128x128 pixeles.
Estoy probando con driver de ccs KS0108, sin modificar. pruebo y comento.


----------



## Daniel Meza (Nov 17, 2017)

Muy bien

Aquí encontré su hoja de datos del 0107, revisa la última página, allí viene un diagrama general para un GLCD.

Saludos


----------



## Gacsms (May 22, 2018)

Buen dia despues de peludear con el display no logro hacerlo funcionar con ninguna libreria del ccs conocida. Lo que no encuentro es una libreria del ccs que controle un display como el mio GLCD 128 x 128  Basado en el Samsung KS0108. si alguien me puede dar una mano. Gracias


----------



## Gudino Roberto duberlin (May 22, 2018)

Hola, has leído el datasheet del display? Cómo inicializarlo? etc?
Sólo es cuestión de modificar una librería de otro formato. Con algún agregado según el protocolo que use de comunicación.
Compara los datos que se necesitan para manejar un GLCD 128x64 basado en el KS0108 y el tuyo, que tiene el doble de filas, no creo que haya grandes diferencias.


----------



## D@rkbytes (May 22, 2018)

Apuntes Informática / Electrónica - Test GLCD (KS0108)


----------



## pandacba (May 22, 2018)

Hay lib e info pero siempre para 128 x64, no para 128 x128 salvo para el display del nokia


----------



## Gacsms (May 23, 2018)

Hola, gracias. Nunca encontré la hoja de datos. asi que no tengo idea que modificar en las librerías, alguien tendría información donde encontrar librerías en Ccs para el GLCD 128 x 128 Pixel, Gracias


----------



## Enrique_0xFF (Ene 20, 2019)

Buenas tardes, me llamo Enrique soy estudiante y hace poco empece con el tema de micronotorladores, estoy viendo los lcd graficos. Encontre en internet un libreria en la cual tengo cual es el funcionamiento del algunas lineas de la funcion "GLCD_String" lo demas como el tema de la inicialicion, envios de camando, etc lo entendi con la hoja de datos.
Espero de su ayuda y desde ya muchas gracias
Les pongo las lineas que no entido de diferentes partes de la funcion:

float Page_inc=0.5;

if (Y_address>(1024-(((page_no)*128)+5)))

 if ((Y_address+column)==(128*((int)(Page_inc+0.5)))) 
    { 
      if (column==5) 
      break; 
      GLCD_Command(0x40); 
      Y_address = Y_address+column; 
     CS1 = ~CS1; 
     CS2 = ~CS2; 
     GLCD_Command((Page+Page_inc)); 
     Page_inc=Page_inc+0.5; 
}

GLCD_Char(font[str_-32][column])_



```
void GLCD_Init()    /* GLCD Initialization function */
{
    Ctrl_dir = 0;    /* Make Control pin as output */
    Data_dir = 0;    /* Make Data pin as output */
    OSCCON = 0x72;    /* Internal 8MHz OSC Frequency */
    RST = 1;        /* Make reset pin High */
    CS1 = 1; CS2 = 1;/* Select Left half of display */
    MSdelay(20);
    GLCD_Command(0x3E);    /* Display OFF */
    GLCD_Command(0x40);    /* Set Y address (column=0) */
    GLCD_Command(0xB8);    /* Set x address (page=0) */
    GLCD_Command(0xC0);    /* Set z address (start line=0) */
    GLCD_Command(0x3F);    /* Display ON */
}

void GLCD_Command(char cmd)/* GLCD Command function */
{
    LCD_data = cmd;    /* Copy command on data pin */
    RS = 0;        /* Make RS LOW for command register*/
    EN = 1;        /* Make HIGH-LOW transition on Enable */
    NOP();
    NOP();
    EN = 0;
    NOP();
    NOP();
}

void GLCD_Char(char data)/* GLCD Data function */
{
    LCD_data = data;    /* Copy Data on data pin */
    RS = 1;        /* Make RS HIGH for data register */
    EN = 1;        /* Make HIGH-LOW transition on Enable */
    NOP();
    NOP();
    EN = 0;
    NOP();
    NOP();
}

void GLCD_String(char page_no, char *str)/* GLCD string write function */
{
    unsigned int i,column,Page=((0xB8)+page_no),Y_address=0;   
    float Page_inc=0.5;                                                   
    CS1 = 1; CS2 = 0;    /* Select Left half of display */
    GLCD_Command(Page);
    for(i=0;str[i]!=0;i++)    /* Print char in string till null */
    {
       if (Y_address>(1024-(((page_no)*128)+5)))
          break;
        if (str[i]!=32)
        {
            for (column=1;column<=5;column++)
            {
                if ((Y_address+column)==(128*((int)(Page_inc+0.5))))
                {
                    if (column==5)
                        break;
                    GLCD_Command(0x40);
                    Y_address = Y_address+column;
                    CS1 = ~CS1; CS2 = ~CS2;
                    GLCD_Command((Page+Page_inc));
                    Page_inc=Page_inc+0.5;
                }
            }
        }
        if (Y_address>(1024-(((page_no)*128)+5)))
            break;
        if((font[((str[i]-32)*5)+4])==0 || str[i]==32)
        {
            for(column=0;column<5;column++)
            {
                GLCD_Char(font[str[i]-32][column]);
                if((Y_address+1)%64==0)
                {
                    CS1 = ~CS1; CS2 = ~CS2;
                    GLCD_Command((Page+Page_inc));
                    Page_inc=Page_inc+0.5;
                }
                Y_address++;
            }
        }
        else
        {
            for(column=0;column<5;column++)
            {
                GLCD_Char(font[str[i]-32][column]);
                if((Y_address+1)%64==0)
                {
                    CS1 = ~CS1; CS2 = ~CS2;
                    GLCD_Command((Page+Page_inc));
                    Page_inc=Page_inc+0.5;
                }
                Y_address++;
            }
            GLCD_Char(0);
            Y_address++;
            if((Y_address)%64==0)
            {
                CS1 = ~CS1; CS2 = ~CS2;
                GLCD_Command((Page+Page_inc));
                Page_inc=Page_inc+0.5;
            }
        }
    }
    GLCD_Command(0x40);
}

void GLCD_Clear()
{
    int i,j;
    CS1 = 1; CS2 = 1;
    for(i=0;i<8;i++)
    {
        GLCD_Command((0xB8)+i);
        for(j=0;j<64;j++)
        {
            GLCD_Char(0);
        }
    }
    GLCD_Command(0x40);
    GLCD_Command(0xB8);
}

/*****************************Delay Function*****************************/

void MSdelay(unsigned int val)
{
     unsigned int i,j;
        for(i=0;i<=val;i++)
            for(j=0;j<165;j++);
}
```


----------

