Autor Tema: diferencia entre printf(lcd_putc"") y lcd_putc("")  (Leído 21250 veces)

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

Desconectado Lord_Duran

  • PIC12
  • **
  • Mensajes: 76
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #15 en: 26 de Agosto de 2010, 17:32:41 »
Saludos Suky.

ya logre hacer que me muestre en la LCD, pero solamente en 2 líneas, con la misma libreria para el lcd 4x20 "#include <LCD4x20.C>".

el código es el siguiente:

Código: [Seleccionar]
#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>

void main()
{
   int16 q;
   float p;
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   lcd_init();
   while(1)
   {
      set_adc_channel(0);
      delay_us(10);
      q = read_adc();
      p = 5.0 * q / 1024.0;
      printf(lcd_putc, "\fADC = %4ld", q);
      printf(lcd_putc, "\nVoltage = %01.2fV", p);

      delay_ms(100);
   }
}

aun me falta mostrar otros datos en las lineas 3 y 4 del lcd, haber que tal me va.

Un favor, me puedes dar alguna sugerencia para que se me muestren los datos en el centro de cada línea??

Muchas gracias.

Desconectado Lord_Duran

  • PIC12
  • **
  • Mensajes: 76
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #16 en: 26 de Agosto de 2010, 17:49:25 »
Nuevamente, saludos.

Ya logre que me muestre en las 4 líneas, tambien que me mande datos al puerto serial, uyyyy......, que me costo hacer esto, pero con la yuda de Suky lo logre, muchas gracias....!!

el código es el siguiente:

Código: [Seleccionar]
#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>

void main()
{
   int16 q;
   float p;
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   lcd_init();
   while(1)
   {
      set_adc_channel(0);
      delay_us(10);
      q = read_adc();
      p = 5.0 * q / 1024.0;
      printf(lcd_putc, "\fADC = %4ld", q);
      printf(lcd_putc, "\nVoltage = %01.2fV", p);
      printf(lcd_putc, "\ntercer mensaje");
      printf(lcd_putc, "\ncuarto mensaje");
      printf("ADC = %4ld", q);
      printf("Voltaje = %01.2fv\r", p);  // El \r permite cambiar de línea
      delay_ms(100);
   }
}

Ahora, lo que no me queda claro es cómo llega los datos al puerto serial, eso lo quiero para tomarlo desde un programa interfaz en la PC y que me muestre esos datos. Se que lo que pido es parte de algun otro tema en el foro, pero no lo encuentro, porfavor, me gustaria uqeme de una mano si usted save donde esta ese post.

Y porfavor, alguna sugerencia para centrar los datos que se muestran en cada línea del LCD.

Muchas gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #17 en: 26 de Agosto de 2010, 18:51:18 »
Los datos a la PC le va a llegar codificados en ascii, por como lo envías. Y para centrar el mensaje, conociendo la cantidad de caracteres que se imprimen, puedes agregarle unos espacios al comienzo de la linea.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Lord_Duran

  • PIC12
  • **
  • Mensajes: 76
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #18 en: 26 de Agosto de 2010, 20:47:15 »
Saludos.

Cree un nuevo tema en este link, es sobre el ADC, bueno, lo hice por que seguramente este no es el hilo idicado. Porfavor, necesito más ayuda.

http://www.todopic.com.ar/foros/index.php?topic=31813.0

Muchas gracias..!!

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #19 en: 27 de Agosto de 2010, 01:31:28 »
Hola.
Aprovecho este hilo para hacer una pregunta con respecto al LCD 4x20 que hay en las librerías.
Estoy haciendo una práctica con un PIC16F628A para iniciarme en C con los PIC sobre todo con este programa el PCWHD, la práctica consiste en transmitir datos via RS232 del PC al PIC y que este me muestre los datos en un LCD de 4x20, el problema que tengo es que uso B1 y B2 del PIC para la comunicación aprovechando la interrupción, y los 4 bits más altos del puerto B para los datos de 4 bits para el LCD; y en le puerto _A  A0 = enable , A1=R/W  y A2=RS..mi gran duda es como modifico el LCD420.c para cambiar el enable, R/W y RS del puerto B al Puerto A sin tanto trauma para mí, mientras aprendo un poco más del lenguaje C   ;-)

Gracias por la mano que me puedan dar.

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #20 en: 27 de Agosto de 2010, 01:34:54 »
La librería de CCS no es flexible en eso, puedes buscar otra librería como flex_lcd_4x20. c o algo así que está en el foro de CCS.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #21 en: 27 de Agosto de 2010, 02:51:12 »
La librería de CCS no es flexible en eso, puedes buscar otra librería como flex_lcd_4x20. c o algo así que está en el foro de CCS.


Saludos!

Gracias Suky, ya tengo la flex_lcd_4x20, hago las declaraciones para los puertos a usar, pero al compilarlo me sale un error diciendo que:

Error 128 ,  en el archivo flex, donde dice que me hace falta el #device antes de una linea de el archivo, supongo que me quiere decir que debo poner el procesador que estoy usando, pero si ya está declarado en el main.c y en el main.h, bueno ya probé en ambos y me sale el mismo error...

Código: C
  1. #include <16F628A.h>
  2.  
  3. #FUSES NOWDT                    //No Watch Dog Timer
  4. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  5. #FUSES PUT                      //Power Up Timer
  6. #FUSES NOPROTECT                //Code not protected from reading
  7. #FUSES BROWNOUT                 //Reset when brownout detected
  8. #FUSES NOMCLR                   //Master Clear pin used for I/O
  9. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  10. #FUSES NOCPD                    //No EE protection
  11.  
  12. #use delay(clock=4000000)
  13. #use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)
  14.  
  15. //#include "I:TES_PICC\main.h"
  16. #int_TBE
  17. #include "I:TES_PICC\Flex_LCD4x20.c"
  18.  
  19. void  TBE_isr(void)
  20. {
  21.  
  22. }
  23.  
  24. #int_RDA
  25. void  RDA_isr(void)
  26. {
  27.  
  28. }
  29.  
  30.  
  31.  
  32. void main()
  33. {
  34.  
  35.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  36.    setup_timer_1(T1_DISABLED);
  37.    setup_timer_2(T2_DISABLED,0,1);
  38.    setup_comparator(NC_NC_NC_NC);
  39.    setup_vref(FALSE);
  40.    enable_interrupts(INT_TBE);
  41.    enable_interrupts(INT_RDA);
  42.    enable_interrupts(GLOBAL);
  43. //Setup_Oscillator parameter not selected from Intr Oscillator Config tab
  44.  
  45.    // TODO: USER CODE!!
  46.  
  47. }

Algo debo tener mal..agradezco una ayuda y explicación de que es o que hago mal.

Gracias de antemano.

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #22 en: 27 de Agosto de 2010, 09:18:21 »
Hay un #int_TBE y después el include de la librería  :shock: Si estás usando ese código, ahí está el error.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #23 en: 30 de Agosto de 2010, 00:03:41 »
Hay un #int_TBE y después el include de la librería  :shock: Si estás usando ese código, ahí está el error.


Saludos!

Gracias Suky por tu colaboración, pero tenía un error en el compilado, y era que le daba al botón de Build All y no al de Compiler  :D..en fía ya estoy jugando con este LCD  ;-)

Mil gracias

Saludos

Desconectado Lord_Duran

  • PIC12
  • **
  • Mensajes: 76
Re: diferencia entre printf(lcd_putc"") y lcd_putc("")
« Respuesta #24 en: 31 de Agosto de 2010, 21:53:33 »
Saludos

Cree un nuevo tema sobre dudas que tengo en el uso de funciones en CCS, porfavor, necesito esas aclaraciones para seguir avanzando.

http://www.todopic.com.ar/foros/index.php?topic=31867.0

Muchas gracias