Autor Tema: Display LCD con PIC16f877  (Leído 26013 veces)

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Display LCD con PIC16f877
« Respuesta #15 en: 20 de Junio de 2009, 19:44:53 »
mira la imagen q adjunto, esas opciones no son para configurar el lcd con la libreria de ccs? hay se puede escoger el puerto a utilizar y los bit de control
Recién lo he probado, pero las definiciones que realiza no corresponden con la librería  :shock: Así que no tendrán ningún efecto en la misma. Otra chanchada de los amigos de CCS  :?
No contesto mensajes privados, las consultas en el foro

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Display LCD con PIC16f877
« Respuesta #16 en: 20 de Junio de 2009, 20:52:03 »
mira la imagen q adjunto, esas opciones no son para configurar el lcd con la libreria de ccs? hay se puede escoger el puerto a utilizar y los bit de control
Recién lo he probado, pero las definiciones que realiza no corresponden con la librería  :shock: Así que no tendrán ningún efecto en la misma. Otra chanchada de los amigos de CCS  :?

HOla a todos, yo alguna vez presente ese problema... y si no estoy mal debes estar trabajando con un cristal de 20 Mhz, cambialo a uno de 4 Mhz y utiliza la libreria que te pasaron...
mira bien la configuracion de los pines del 16f877a que veo algo sospechoso en la protoboar...
y no mandes ninguno de los pines a tierra conectalos todos... estoy seguro que cuando conectes todos se te arregla el problema...

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Display LCD con PIC16f877
« Respuesta #17 en: 20 de Junio de 2009, 21:21:17 »
mira la imagen q adjunto, esas opciones no son para configurar el lcd con la libreria de ccs? hay se puede escoger el puerto a utilizar y los bit de control
Recién lo he probado, pero las definiciones que realiza no corresponden con la librería  :shock: Así que no tendrán ningún efecto en la misma. Otra chanchada de los amigos de CCS  :?

 :shock: :? pero que mal ...entonces para qué!! esta esa opcion ahi??
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Display LCD con PIC16f877
« Respuesta #18 en: 20 de Junio de 2009, 21:55:00 »
En la v4.088 la lcd si se deja configurar a gusto ...
El papel lo aguanta todo

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Display LCD con PIC16f877
« Respuesta #19 en: 20 de Junio de 2009, 22:17:27 »
Una pregunta, la linea:
  LCD_PUTC("hola");
es valida? acaso esa funcion no es para colocar solo un caracter? porq con la libreria lcd q trae CCS si queremos mostrar un string hay q hacer un
  printf(lcd_putc, "hola");
Es todo un tema el LCD, a mi siempre me da problemas jeje.
saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Vash

  • PIC10
  • *
  • Mensajes: 9
Re: Display LCD con PIC16f877
« Respuesta #20 en: 21 de Junio de 2009, 03:57:56 »
Hola gracias por responder tan rapido  :) me alegra mucho la participacion del foro, voy a probar esta nueva libreria, en cuanto al pin 3 del lcd no hay problema si se conecta a tierra en lugar de un potenciometro ya que no es un pin de control, y al conectarlo a tierra simplemente estamos dando resistencia 0 es decir el mayor contraste, bueno asi debe de ser pero ya ven que en esto asi es a veces jala con algo y luego jalo sin eso  :lol: aun asi tambien voy a probar lo del potenciometro, voy a darme prisa con la nueva libreria, les comento y si surgen problemas espero me ayuden, solo una pregunta los comando del lcd con esta nueva libreria son los mismos?

solo les dejo una foto de lo que les comento con el potenciometro para que vean que efectivamente no afecta, solo que este lo hice en ensamblador  :), y estoy aprendiendo a programar el pic en CCS me parece muy interesante y me interesa mucho, de hecho estaba muy animado con esto del CCS ya que programaba en 15 min lo que antes me llevaba horas, aunque ahora que lo intente en el proto no salio :( saludos y nos vemos.




Ah lo olvidaba tambien estoy usando un XT de 4Mhz.

Nos vemos
« Última modificación: 21 de Junio de 2009, 04:03:09 por Vash »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Display LCD con PIC16f877
« Respuesta #21 en: 21 de Junio de 2009, 12:42:20 »
Sip, los comandos son los mismos!
No contesto mensajes privados, las consultas en el foro

Desconectado Vash

  • PIC10
  • *
  • Mensajes: 9
Re: Display LCD con PIC16f877
« Respuesta #22 en: 22 de Junio de 2009, 16:35:29 »
Muchas gracias por la yuda, ya quedo  :) . El unico cambio que hice fue la libreria, nos vemos

Desconectado Vash

  • PIC10
  • *
  • Mensajes: 9
Re: Display LCD con PIC16f877
« Respuesta #23 en: 20 de Julio de 2009, 13:43:43 »
Hola.

Ya arme el termometro y ya funciona, solo hay un unico detalle y es que a la hora de simular me salen unos mensajes referente al lcd y al puerto, ya probe cambiando de puerto y siguen saliendo, cabe aclarar que funciona bien fisicamente sin importar eso, les dejo la imagen de la simulacion en proteus con los mensajes que les digo, a que se deben?



Logic contention(s) detected on net------> es lo que dice el mensaje.

y aqui el codigo.

//Device/Fuses/Etc.-----------------------------
#include <16F877A.h>
#device adc=10
#include <math.h>
#fuses nowdt //No Watch Dog Timer
#fuses xt
#fuses put //No Power Up Timer
#fuses noprotect //Code not protected from reading
#fuses nobrownout //No brownout reset
#fuses nolvp //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#fuses nocpd //No EE protection
#use delay(clock=4000000)
#include <flex_lcd.c>
#use standard_io(A)
#use standard_io(B)

VOID MAIN(VOID){
   float TEMPE,VALUE;

   lcd_init();
   lcd_gotoxy(3,1);
   lcd_putc("Bienvenido");
   delay_ms(1000);
   lcd_putc("\f");
   
   lcd_gotoxy(1,1);
   lcd_putc("Termometro\nDigital");
   delay_ms(1000);
   lcd_putc("\f");
   
   lcd_gotoxy(1,1);
   lcd_putc("Temperatura");
   delay_us(1500);
   
   while(true){
      setup_port_a( ALL_ANALOG );
      setup_adc(ADC_CLOCK_DIV_32);
      set_adc_channel(0);//se elige el RA0
      delay_us(20);
      VALUE = read_adc();
      setup_adc( ADC_OFF );
      TEMPE=(VALUE*(0.48875));
      lcd_gotoxy(1,2);
      printf(lcd_putc,"Actual: %02.1F  C",TEMPE); //XXX.X C
      delay_ms(100);
   }
}
 

Nos vemos y gracias.


Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Display LCD con PIC16f877
« Respuesta #24 en: 20 de Julio de 2009, 13:46:38 »
si a pesar de que funciona perfectamente a mi tambien me aparecen esos mensajes, es como si no se detectara la conexion entre los pines q se especifican
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Display LCD con PIC16f877
« Respuesta #25 en: 27 de Julio de 2009, 18:37:34 »
Muchas gracias por la yuda, ya quedo  :) . El unico cambio que hice fue la libreria, nos vemos

Hola amigo,
podrías verificarme que es lo que cambiaste, antes no te funcionaba, pero ahora si,
que le cambiaste, solo la libreria del lcd puedes lincarme las dos librerias quiero echarles un ojo, igales iguales, pero que una no funciona,

Te importaria cargarlas en tu proximo post.

Un saludo.

Desconectado gabimelgar

  • PIC10
  • *
  • Mensajes: 11
Re: Display LCD con PIC16f877
« Respuesta #26 en: 02 de Noviembre de 2009, 19:01:08 »
Hola gracia spro la respeusta mira coloco mi programa en el cual   no funcina cada ves que  coloco la interrupcion global "" enable_interrupts(global); " deja de funionar mi programa  ya no me muestar pero si la quito la muestra y cuando lo quiero conectar con otro pic no funciona o puedes orientarme paar  conectar 2 pics. gracias


Hola Murdco, como estas?
Pudiste solucionar el problema de las interrupciones? me pasa lo mismo q a vos, cuando coloco la sentencia:

enable_interrupts(int_rda);    //activo interrupcion serial rs-232
enable_interrupts(global);    //habilito la interrupcion

me deja de funcionar el lcd, ya probe cambiandola de orden, pero nada.
Alguien tiene idea de q puede estar pasando?
lo raro es q en la simulación del isis anda perfecto.
les dejo mi codigo para ver si me pueden dar una mano:

Código: [Seleccionar]
#include <16F877A.h>                         /* PIC16F877A */
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //manejo del RS232


#include <flex_lcd.c>
//#include <kbd.c>
#include <stdlib.h>
#include <math.h>


#define SUBE_IP  input(pin_d5)
#define BAJA_IP  input(pin_d4)
#define RED  pin_C0
#define GREEN  pin_C1
#define BLUE  pin_C2


int IP=1;
char flag=0,var=11; //variables globales
char * str[] = "0123456789";

///LLAMADA FUNCION INTERRUPCION
#int_rda
void rs232()
{
   BYTE i=0,j=0,address,value; //definicion...
   char digito; //...variables
   char string[30];
   int len=0;
   char dirIp[4];

   disable_interrupts(global); //apago interrupcion
   gets(string);

   len=strlen(string);
   //quito los caracteres \n y \r
   string[len-1]=0;
   string[len-2]=0;
   strncpy (dirIp, string, 3);
   lcd_gotoxy(1,1);
   if (atoi(dirIp) == IP){ //si es para mi
      printf(lcd_putc,"Mio");
      lcd_gotoxy(1,2);
      printf(lcd_putc,string);
   }else{ //si no es para mi
      printf("%s \n\r",string);
      printf(lcd_putc,"\fNo Mio");
   }

   enable_interrupts(global); //activamos de nuevo la interrupcion serial rs-232
}


///PROGRAMA
void main(void)
{
   int p1=1,p2=1,s=0,b=0,color=0;
//   char tmp[3]="aa";
//   ext_int_edge(H_TO_L); // Habilita interrupcion por flanco H_to_L
   enable_interrupts(int_rda); //activo interrupcion serial rs-232
   enable_interrupts(global); //habilito la interrupcion
   lcd_init();
   lcd_putc("Espera");

   do{ //bucle...
      if(SUBE_IP){
         output_high(RED);
         output_low(GREEN);
         if (s){
            lcd_gotoxy(1,2);
            IP++;
            printf(lcd_putc,"IP: %d ",IP);
            s=0;
         }
      }else{
         s=1;
      }
      if(BAJA_IP){
         output_high(GREEN);
         output_low(RED);
         if (b){
            lcd_gotoxy(1,2);
            IP--;
            printf(lcd_putc,"IP: %d ",IP);
            b=0;
         }
      }else{
         b=1;
      }
   }while(TRUE); //...infinito
}



Muchas Gracias

Desconectado Estorki

  • PIC10
  • *
  • Mensajes: 10
Re: Display LCD con PIC16f877
« Respuesta #27 en: 14 de Febrero de 2012, 23:03:13 »
Suky, muchísimas gracias por la librería.

Llevo casi tres días tratando de escribir sin éxito mi propia librería para el LCD y con este flex_lcd.c me ha funcionado todo a la primera. Buscando información por google he llegado a este foro en múltiples ocasiones, asi que me complace ser nuevo miembro de lo que parece una fantástica comunidad.
Bueno, me he percatado que el hilo es del 2009, si hay alguna librería por el estilo más avanzada y quereis compartirla, pues encantado de la vida.

Muchas gracias a todos  :)
« Última modificación: 14 de Febrero de 2012, 23:07:57 por Estorki »