Autor Tema: Imprimir un entero en un display lcd  (Leído 927 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado vulca

  • PIC10
  • *
  • Mensajes: 3
Imprimir un entero en un display lcd
« en: 07 de Agosto de 2021, 22:19:54 »
Buneas
Estoy teniendo problemas al querer imprimir un número entero en un display lcd LM016L mayor a 126

Esta es son mis encabezados y configuración
Código: [Seleccionar]
#include<16f877a.h>
#fuses XT, NOWDT, PUT, NOPROTECT, BROWNOUT, NOCPD, NOWRT, NODEBUG
#use delay(clock=4M)
#define use_portd_lcd true   //se define el puerto para la LCD
#define use_portb_kbd true   //se define el puerto para el teclado matricial
#include<lcd.c>            //libreria de lcd
#include<kbd.c>            //libreria de teclado
#include<stdio.h>
#include<stdlib.h>

Sección de impresión
Código: [Seleccionar]
int directorio[30] = {13264879, 64849217, 31974682, 98663241};
int fila = 0;
printf(lcd_putc "%d", directorio[fila]);

Dentro de la simulación de proteus al querer imprimir 129 aparce -127

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:Imprimir un entero en un display lcd
« Respuesta #1 en: 07 de Agosto de 2021, 23:15:21 »

Código: [Seleccionar]
printf(lcd_putc "%d", directorio[fila]);
Si especificas signed (%d) entenderá signed.

Debió ser:
Código: [Seleccionar]
printf(lcd_putc "%u", directorio[fila]);     // unsigned

Desconectado vulca

  • PIC10
  • *
  • Mensajes: 3
Re:Imprimir un entero en un display lcd
« Respuesta #2 en: 08 de Agosto de 2021, 13:08:26 »
Lo utilice pero para los casos donde quiero imprimir 13264879 y 64849217 me da 239 y 65 respectivamente. Al igual que con los demás datos.

Código: [Seleccionar]
lcd_gotoxy(1,1);
printf(lcd_putc "%u", directorio[fila]);
lcd_gotoxy(1,2);
printf(lcd_putc "%u", directorio[fila + 1]);


Por lo que veo ahora si imprimo 256 aparece 0.
Entiendo que es por que es el límite con 8 bits y anteriormente el octavo bit representaba el signo. Hay alguna forma de solucionarlo?

Desconectado vulca

  • PIC10
  • *
  • Mensajes: 3
Re:Imprimir un entero en un display lcd
« Respuesta #3 en: 08 de Agosto de 2021, 13:20:55 »
Ya lo conseguí, tuve que cambiar el tipo de dato a int32.
Pongo la solución por si alguien le sirve algún día.

Código: [Seleccionar]
unsigned int32 directorio[10] = {13264879, 64849217, 31974682, 98663241};
int fila = 0;

...

printf(lcd_putc "%lu", directorio[fila]);


 

anything