# mostrar variable numerica en GLCD KS0108 con CCS



## rikicarpio (Jun 12, 2010)

Hola a todos? Estoy realizando un proyecto con GLCD grafico 128x64 basado en KS0108. Utilizo el compilador CCS y lo simulo en PROTEUS. HE posteado dos capturas una del codigo y la otra del simulador donde se puede apreciar las conexiones y tambien el resultado de la simulacion del codigo que pueden ver. Utilizo un PIC 16F877 i las librerias que el compilador me ofrece: <HDM64GS12.c> i <graphics.c>. En la segunda, hay una funcion que permite mostrar texto:

////  glcd_text57(x, y, textptr, size, color)                        ////
////     * Write the null terminated text pointed to by textptr with ////
////       the upper left coordinate of the first character at (x,y) ////
////       Characters are 5 pixels wide and 7 pixels tall            ////
////       - size is an integer that scales the size of the text     ////
////       - color is ON or OFF
muestra, empezando por las coordenadas x,y la variable textptr en el tamaño que quieres.
La variable textptr tiene que ser un string.

Mi problema es que quiero representar cantidades guardadas en variables numericas. 
¿Aguien sabe como convertir en CCS un dato integer16 en un string?
o, ¿Se os ocurre como podria mostrar la varable numérica de alguna forma? ¿Hay alguna libreria por ahí..?

Muchas Gracias de antemano a todos!


----------



## rikicarpio (Jun 12, 2010)

Me parece que ya he dado con la solución. Se trata de utilizar la funcion sprintf para imprimir una variable numerica en una cadena de texto. Luego envio la cadena la GLCD. Podria ser:
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT  
#use delay(clock=20000000)
#include <HDM64GS12.c>
#include <graphics.c>
#include <stdio.h>


char text2[]="r.p.m.";
char text3[]="Tm=95ºC";
char text4[]="Th=68ºC";
char text5[]="Te=27ºC";

long rpm;
char cadena_rpm[5];

#int_ext
ext_isr()
{
rpm++;
}
void main()
{  
   enable_interrupts(GLOBAL);
   enable_interrupts(int_ext);
   ext_int_edge(L_TO_H);
   glcd_init(ON);
   //linea doble vertical
   glcd_line(100,0,100,64,ON);
   glcd_line(100,0,100,64,ON);
   //linea doble horizontal
   glcd_line(0,28,100,28,ON);
   glcd_line(0,29,100,29,ON);
   //mostre el valor de les r.p.m.
   sprintf(cadena_rpm,"%lu",rpm); //imprimeix la variable rpm en la cadena de text cadena_rpm
   glcd_text57(0,0,cadena_rpm,3,ON);
   //mostre r.p.m.
   glcd_text57(65,13,text2,1,ON);
}

Por si le puede servir a alguien!


----------



## el pipo (Mar 31, 2011)

hola que tal? oye tendras un manual donde me enseñe a utilizar las glcd en pic c ccs? te lo agradeceria


----------



## francisco_j_P (Abr 21, 2011)

amigo este tipo de configuración también se puede realizar para una lcd 16x2 o 16x4 para mostrar variables numéricas grandes


----------



## asdlocal (May 13, 2011)

Disculpen amigos del foro necesito sacar imagenes en un lcd de 128 X 64, ks0108, ahora bien tengo un pic18f2550, pero no entiendo muy bien el como sacar dicha imagen, si alguien podria ayudarme le estaria muy  agradecido, porq ya estuve varias semanas en esto


----------



## maverick_007 (Nov 1, 2011)

hola a todos tengo una duda con el lcd en el codigo del ccs aparece la libreria de nombre HDM64GS12 supongo que es otro microcontrolador que maneja la pantalla compatible con el ks0108. ¿estare en lo correcto ? porke tengo una pantalla con el microcontrolador ks0108 y no me gustaria kemarla tratando de descubrirlo .

saludos


----------



## Chico3001 (Nov 2, 2011)

Despreocupate, puedes hacer todas las pruebas de codigo que requieras siempre y cuando mantengas los voltajes dentro de los niveles de operacion de la pantalla.... no se queman por enviarles codigos erroneos...


----------



## maverick_007 (Nov 5, 2011)

grasias por la respuesta lo revisare enseguida.
saludos.


----------

