# LCD grafico GLCD basado en controlador KS0108, desarrollo en MikroC



## Ruben Andrade (Sep 19, 2008)

Pues el tema es el siguiente, quiero graficar en GLCD (graphic lcd crystal display) basado en controlador KS0108, espero se me una mas gente, por el moemento estoy aprendiendo a programar con MikroC. Ahi va mi primera duda, y es :

Yo tengo toda la logica del sistema que estoy diseñando programada en ASM, el pic empleado es el PIC16f887 de 44 pines de montaje superficial, le tengo trabajando el modulo conversor A/D, el modulo comparador con voltaje de referencia, interrupciones en el puerto b (7 pulsadores), y los tres timer (tmr0,tmr1,tmr2) ya ocupados cada uno haciendo su trabajo. Ahora solo me falta visualizar todo esto, por eso la GLCD. 

¿Puedo dejar esa parte de codigo en ASM y hacer la parte de la LCD en C?
Hasta pronto.


----------



## asherar (Sep 19, 2008)

Efectivamente. El compilador C de mmikroC y el HT-picC te permiten incluir instrucciones o partes de código mediante la función "asm" en la forma:

...
(viene código C)
*asm* { ( instrucciones en assembler) };
(sigue código C)
...

Tenés que fijarte en el documento de ayuda o en el del compilador porque algunas cosas cambian de un compilador a otro. Por ejemplo la forma de invocar a las variables, los bits, etc.

Saludos

Editado: mikroC no tiene rutinas para el 16F876 que hagan "sprintf" para convertir un numero en cadena y poder mandarlo como texto. 
Te paso una rutina que hice para el rango 0 a 999 y anda al pelo. Al menos hasta ahora no le encontré bugs. 


```
//  Este es el encabezador para poner en un archivo "varios.h"
char *hex2dec(char HEX);

//  Esta es la rutina 
//  El dato HEX debe ser un número de tres cifras (0 a 999).
//  Así como está escribe los ceros a la izquierda
char *hex2dec(char HEX)
{
char U, C, D, CH[4]; 

  C =  HEX/100;
  D = (HEX - C*100) /10;
  U = (HEX - C*100 - D*10);
  CH[0] = 48+C; // 48 es el ascii del 0
  CH[1] = 48+D;
  CH[2] = 48+U;
  CH[3] = 0;       // Fin de la cadena

return CH;
}

// Esta es la forma de invocarla desde el programa. 
// TORQUE es una variable char sin signo, de hasta 16 bits. 

    strcpy(TXT,hex2dec(TORQUE));
    Mostrar_Texto(8, 9,TXT); // TORQUE
```


----------



## javierdavid2006 (Oct 16, 2010)

Hola a todos, tengo un problema y es que quiero mostrar una conversion analogia a digital en una glcd de controlador ks0108 realizado en ccs de pcw, pero no se como poner la variable de voltaje en el glcd, para los textos fijos no tengo problemas.

Gracias a todos.


----------



## COARITES (Oct 20, 2010)

Esto va para alguien que tenga un tiempito. Tengo a la mano un GLCD de TOWWAY el LM12864ldy queria saber si este glcd tiene incorporado un controlador ks108 y si se puede programar en PICC de CCS.


----------



## robott2 (Dic 18, 2015)

Hola a todos. Quiero saber si alguien puede ayudarme.
Estoy trabajando con una LCD Gráfica y el microcontrolador 18F4685 con el compilador de mikro C.

El detalle es que al momento de correr el programa en proteus, la LCD me muestra cosas raras.
Al inicio pretendí mandar una imagen   y en la LCD me divide en dos la pantalla y sólo me muestra la mitad de la imagen en ambas mitades de la LCD.

Pensé que sería mi programa, así que mandé una línea y  me pone  barras en negro y después me dibuja la línea que yo programo.

¿Me podrían ayudar? Ya no sé si es mi programa o es la conexión.

El código es éste:

```
char GLCD_DataPort at PORTD;
sbit GLCD_CS1 at RB0_bit;
sbit GLCD_CS2 at RB1_bit;
sbit GLCD_RS at RB2_bit;
sbit GLCD_RW at RB3_bit;
sbit GLCD_EN at RB4_bit;
sbit GLCD_RST at RB5_bit;

sbit GLCD_CS1_Direction at TRISB0_bit;
sbit GLCD_CS2_Direction at TRISB1_bit;
sbit GLCD_RS_Direction at TRISB2_bit;
sbit GLCD_RW_Direction at TRISB3_bit;
sbit GLCD_EN_Direction at TRISB4_bit;
sbit GLCD_RST_Direction at TRISB5_bit;


void main (){

  Glcd_Init();

 while (1){
  Glcd_Fill(0);
   delay_ms (1000);
Glcd_H_Line(10, 50, 20, 1);
}

}
```


----------

