Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/04/2010 #1


Problema Libreria LCD de MikroC
Hola...

Alguien se ha dado cuenta del problema de utilizar una LCD en MikroC al hacer lo sgte:

Si por ejemplo queremos visualizar un simple contador en la LCD de 00-99. Entonces se crea el sgte codigo:

-Se crea una varia tipo char y una de tipo entero para el contador
-Se imprime en la LCD el valor del contador utilizando una conversión: ShortToString o IntToString, por ejemplo en la FILA 1, COL1
-Se incrementa el contador.

El problema resulta que si quiero imprimir en la FILA 1, COL1 (ej: LcdOut(1,1,txt)) el contador aparece en una columna mas delante(por ejemplo FIL1,COL5).

Lo he probado tanto en la nueva version de MikroC con en la vieja....alguien que le halla pasado esto POR FAVOR COMENTE o realicen el ejercicio.

De antemano gracias....FPAEZ
17/04/2010 #2

Avatar de iDan

Respuesta: Problema Libreria LCD de MikroC
Hola codemaker22


A ver... podrias postear tu codigo y el PIC que usas...??
17/04/2010 #3

Avatar de ByAxel

Respuesta: Problema Libreria LCD de MikroC
En realidad no es un problema ya que por ejemplo si usa el IntToString necesita de un array con 7 char de longitud y lo que hace es imprimir los 7 char en el LCD. Aquellos que no sean símbolos ascii simplemente no se visualizaran en el LCD es por eso que deja espacios en blanco pero realmente está escribiendo desde FILA1, COL1.

Pero claro esa es una molestia, por lo que la única forma es hacerlo manualmente e incluso varios de sus ejemplos no usan sus propias librerías para ese tipo de conversiones, lo hacen todo manual.
17/04/2010 #4

Avatar de iDan

Respuesta: Problema Libreria LCD de MikroC
Vaya respuesta Carlos Alexis...


Sinceramente me entro la duda cuando puso la conversion ShortToString o IntToString ya que nunca la habia usado... entonces siempre e estado realizando todo manualmente... algo por lo cual sea util utilizar este tipo de conversiones en un momento determinado??
17/04/2010 #5

Avatar de ByAxel

Respuesta: Problema Libreria LCD de MikroC
Eso depende del caso o si es necesario usarlo para reducir ciertos trabajos; en un ejemplo
Código PHP:
int dt
char txt[7];

void main() {
   
dt 826;
   
IntToStr(dttxt);

El resultado es:

Podría usar solo las posiciones 4 y 5 del array para usarlos en un determinado trabajo, pero como digo eso depende.

En la imagen se aprecia como es el resultado de la conversión y al mandarlo directamente al LCD lo hace a todo el array incluyendo los espacios.
Es por eso que digo, mejor hacerlo manualmente o usar un bucle for para enviar solo los que son números pero eso ya seria usar más código.
17/04/2010 #6

Avatar de iDan

Respuesta: Problema Libreria LCD de MikroC
Seeee... siempre hay un truco, y supongamos que se quisieran eliminar esos espacios en blanco de la cadena (algo asi como Java) si no los llegaramos a necesitar?? se podria hacer eso?? es que yo cuando tenia que hacer un contador no usando este tipo de conversion hacia lo siguiente:

Código:
char *txt[10]={"0","1","2","3","4","5","6","7","8","9"};
//...
t++;
u=t%10;
d=t/10;
delay_ms(500);
Lcd_Out(1,1,txt[d]);
Lcd_Out(1,2,txt[u]);
digo para resumir el programa... ya que con menos lineas es mas facil entender un programa...
17/04/2010 #7

Avatar de ByAxel

Respuesta: Problema Libreria LCD de MikroC
No hay forma ya que si se logra extraer esos espacios del array seguiría teniendo 7 bytes y al usar "Lcd_Out" enviaría igual los 7 bytes del array por lo que, lo aconsejable en este caso seria extraer solo los números del array grande y ponerlo en un array más pequeño (no es nada cómodo)...
Lo peor es que el valor convertido a string nunca tendría la misma longitud (1 dígito, 2 dígitos, 3 dígitos, signo, 4 dígitos, etc)... entonces la idea de pasar del array grande al pequeño se pone más compleja...

Una solución seria:
Código PHP:
   dt 826;
   
IntToStr(dttxt);

   for(
a=a<strlen(txt) ; a++){
      if(
txt[a]>='0' && txt[a]<='9'){
         
Lcd_Chr(1,a+1,txt[a]);
      }
   } 
De esa manera solo escribiría los números en el LCD y en la posición deseada.
Tan solo es una idea que pude ser usada en un sub o función; corrígeme si me equivoco.
17/04/2010 #8

Avatar de iDan

Respuesta: Problema Libreria LCD de MikroC
Si... la verdad no quedando de otra (no poder borrar los espacios), extraer el dato requerido por medio de ciclos como el for seria la mejor forma... media vez no sea una cadena muy grande... de otra manera solo quedaria hacerlo manualmente...


Saludos Carlos Alexis
18/04/2010 #9


Respuesta: Problema Libreria LCD de MikroC
Bueno siguiendo con el tema, por aca encontre una solución. La probre y funciona de lujo...

// Remove leading blanks
//
j=0;
for(i=0;i<=11;i++)
{
if(op[i] != ' ') // If a blank
{
lcd[j]=op[i];
j++;
}
}
//
// Display result on LCD
//
Lcd_Out(1,6,lcd); // Output to LCD

La pueden probar y se daran cuenta que si funciona.

F.PAEZ
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.