Autor Tema: Problema con Salidas en pantalla LCD  (Leído 285 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado midq21

  • PIC10
  • *
  • Mensajes: 9
Problema con Salidas en pantalla LCD
« en: 11 de Febrero de 2018, 22:48:41 »
Buen día/tarde/noche amigos les escribo , ya que, tengo una duda que me tiene trancado mi proyecto la misma es la siguiente:
Cual o cuales son los formatos de salida para sacar en una pantalla lcd, ya que, debo sumar un maximo de 3 crifas ejemplo: 999+999=1998 <--- Este numero trato de colocarlo en un simple código para generar la salida en la lcd y simplemente me arroja "basura" por así decirlo. He probado en todos los formatos desde sacar la expresión en entero, hexadecimal usando salidas como %d,%u,%c y en todas me arroja basura. (solamente con %u pude hacer llegar el numero de salida hasta 255). Si me pueden ayudar porfavor.
Gracias de ante mano.
 
Código: [Seleccionar]
#include <18F4550.h>
#fuses XT, NOWDT, NOPUT, NOPROTECT, NOPBADEN
#define LCD_DB4   PIN_B4    //Posición del PIN D4
#define LCD_DB5   PIN_B5    //Posición del PIN D5
#define LCD_DB6   PIN_B6    //Posición del PIN D6
#define LCD_DB7   PIN_B7    //Posición del PIN D7
#use delay (clock=4000000)
#use standard_io(A,B)

//#define use_portb_lcd TRUE;

#include <lcd.c>



void main()
{  int result;
   setup_adc_ports(NO_ANALOGS);//todos los puertos digitales
   lcd_init();
   result=1998;//0x7CE;
   printf(lcd_putc,"%d",result);
   return;
}
Hay misterios en el universo que no nos corresponde resolver. Pero quienes somos y por qué estamos aquí no figuran entre ellos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:Problema con Salidas en pantalla LCD
« Respuesta #1 en: 12 de Febrero de 2018, 00:17:29 »
La pregunta es... podes escribir cualquier otra cosa ? Texto por ejemplo? O solo el numero te saca basura ?

Ej:
Código: C
  1.    printf(lcd_putc,"Hola");

Desconectado midq21

  • PIC10
  • *
  • Mensajes: 9
Re:Problema con Salidas en pantalla LCD
« Respuesta #2 en: 12 de Febrero de 2018, 08:24:21 »
La pregunta es... podes escribir cualquier otra cosa ? Texto por ejemplo? O solo el numero te saca basura ?

Ej:
Código: C
  1.    printf(lcd_putc,"Hola");

Si, si puedo escribir cualquier texto sin problemas. El problema se da es cuanto ingreso un valor en una variable y trato de sacarlo en la LCD
Hay misterios en el universo que no nos corresponde resolver. Pero quienes somos y por qué estamos aquí no figuran entre ellos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:Problema con Salidas en pantalla LCD
« Respuesta #3 en: 12 de Febrero de 2018, 09:41:46 »
Proba con %Lu

Long Unsigned,

Ya que segun el manual de CCS:

u - Unsigned INT ( el int de CCS es de 8 bits )
d - Signed INT
x - Hex INT
Lu - Long unsigned
Lx - Long hex

Desconectado midq21

  • PIC10
  • *
  • Mensajes: 9
Re:Problema con Salidas en pantalla LCD
« Respuesta #4 en: 12 de Febrero de 2018, 20:39:17 »
Proba con %Lu

Long Unsigned,

Ya que segun el manual de CCS:

u - Unsigned INT ( el int de CCS es de 8 bits )
d - Signed INT
x - Hex INT
Lu - Long unsigned
Lx - Long hex
   No amigo me arroja error, probe con las salidas hexadecimales y si las agarra las convierte mayus y miniscula pero %Lu no lo agarra.
Hay misterios en el universo que no nos corresponde resolver. Pero quienes somos y por qué estamos aquí no figuran entre ellos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:Problema con Salidas en pantalla LCD
« Respuesta #5 en: 12 de Febrero de 2018, 22:15:06 »
con la L en minuscula? es la unica opcion que me queda realmente. Si eso no funciona entonces no se que hacer mas que proveer algun otro tipo de funcion para que convierta el numero en un string.

Desconectado midq21

  • PIC10
  • *
  • Mensajes: 9
Re:Problema con Salidas en pantalla LCD
« Respuesta #6 en: 13 de Febrero de 2018, 10:59:26 »
con la L en minuscula? es la unica opcion que me queda realmente. Si eso no funciona entonces no se que hacer mas que proveer algun otro tipo de funcion para que convierta el numero en un string.
    :( :( :( Nada amigo. El problema es que yo tengo que crear una calculadora y me proporcionaron un teclado matricial pero este mismo trabaja con puro "char", yo leo cada dato y lo envío a través del código , entonces operaciones como (+,-,*) las efectúa bien siempre y cuando no exceda el "255". Básicamente la lcd solamente me permite mostrar 255/0xFF/  Que corresponde con el código ASCII entonces cualquier valor que supere el 255, se reinicia y comienza a generar "basura".
Hay misterios en el universo que no nos corresponde resolver. Pero quienes somos y por qué estamos aquí no figuran entre ellos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:Problema con Salidas en pantalla LCD
« Respuesta #7 en: 13 de Febrero de 2018, 14:36:54 »
proba con un sprintf, sino podes generar tu propia funciona para que cree el string. Ejemplo para 16 bits ( max 65535 )

No me gusta la funcion pero algo asi:

Código: C
  1. void int16toString(uint16_t numero, char * str);
  2. {
  3.         *str++ = (numero / 10000) + '0';
  4.         numero = numero % 10000;
  5.         *str++ = (numero / 1000) + '0';
  6.         numero = numero % 1000;
  7.         *str++ = (numero / 100) + '0';
  8.         numero = numero % 100;
  9.         *str++ = (numero / 10) + '0';
  10.         *str = numero % 10;    
  11. }

Y lo usas asi:

Código: C
  1. char strlcd[7]; // Este debe tener MINIMO 6 lugares
  2. uint16_t num = 50321;
  3.  
  4. int16toString(num,strlcd);
  5. printf(put_lcd,"%s",strlcd);

No revise la funcion que transforma los datos, espero que este bien ...

Desconectado midq21

  • PIC10
  • *
  • Mensajes: 9
Re:Problema con Salidas en pantalla LCD
« Respuesta #8 en: 17 de Febrero de 2018, 08:09:11 »
Buen día amigo, después de leer bastante encontré la solución a este problema.  Básicamente la lcd no te mostrara números mayores a 255 según el tipo de variable que se use es decir "int, float"  <-- Estos tipo de variables permiten que se den salidas no mayores a 255 y si alguna es mayor da vueltas en el código ASCii hasta completar el numero que ud decidió mostrar en la lcd. Si se desea ampliar esta cantidad es necesario crear tipos de datos de mayor almacenamiento para de esta forma ampliar la salida de la lcd.
 
Muchas gracias por la ayuda ;) Nos vemos  :)
Hay misterios en el universo que no nos corresponde resolver. Pero quienes somos y por qué estamos aquí no figuran entre ellos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:Problema con Salidas en pantalla LCD
« Respuesta #9 en: 17 de Febrero de 2018, 08:42:14 »
Todas las LCD que maneje NUNCA se le envia el digito como "int o float", sino que se procede a transformar esos valores en una string, de alli se procede a enviarlos, por eso uno usa el printf o sprintf.

La idea es que si vos tenes un numero asi:

int a = 65321;

lo transforme en esto:

char txt[] = "65321";

Y luego se envian los codigos ASCII al LCD. Aca el problema es alguna rara vuelta que hay que darle al compilador, nada mas. Pero que no tiene nada que ver con la LCD

----------------

Que LCD tenes? me refiero a que driver.