TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: GONZALOSEBASTIAN_LOPEZ en 10 de Diciembre de 2010, 11:58:24

Título: PIC16F876 lcd con teclado
Publicado por: GONZALOSEBASTIAN_LOPEZ en 10 de Diciembre de 2010, 11:58:24
HOLA soy novato con los pic y siguiendo ej de un libro con CCS. no puedo hacer que cuando presiono una tecla el lcd la muestre. El diagrama tiene en paralelo al lcd con el teclado como detallo a continuacion:

RB0=E(lcd)
RB1= RS y row A
RB2= RW y row B
RB3= row C
RB4= row D y D4
RB5= col 1 y D5
RB6= col 2 y D6
RB7= col 3 y D7

Código: [Seleccionar]

#include <16F876.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)

#define LCD_TYPE       2
#define use_portb_lcd TRUE
#define use_portb_kbd TRUE
#include <lcd.c>
#include <kbd.c>

void main()
{
   char k;
   int x;
   lcd_init();
   kbd_init();
   port_b_pullups(TRUE);
   lcd_putc("\fEscriba...\n");
   
   while (TRUE)
   {
   k=kbd_getc();//lcd envia caracteres en ASCII a k
   x=k-48;// se resta 48d=(0Ascii)=30hex
   
      if(k!=0)
      {
         if(k=='*')
         lcd_putc('\f');
         else
         lcd_putc(k);//imprime cararter
         
         delay_ms(500);
         
         printf(lcd_putc,"\f Car=%c",k);//imprime cararter
         delay_ms(500);
         
         
         printf(lcd_putc,"\f Car=%u",k);//imprime valor ASCII
         delay_ms(500);
         
         
         printf(lcd_putc,"\f Num=%u",x);//imprime valor numerico del caracter
         delay_ms(500);
         lcd_putc("\fListo...\n");
      }
   }

}

(http://)
Título: Re: PIC16F876 lcd con teclado
Publicado por: skp en 17 de Abril de 2011, 16:11:46
Creo que no funciona asi, hay que editar las librerias del teclado y el lcd, ambas utilizan el puerto b, y la libreria lcd.c utiliza el puerto D, como este pic no tiene ese puerto se debe editar la libreria y hacerla que trabaje con el peurto b, lo malo es q el teclado tambien trabaja en el mismo puerto, eso ya se lo dejamos a los que saen, pero hi te doy una idea quizas puedas resolverlo.
Título: Re: PIC16F876 lcd con teclado
Publicado por: kamisama en 18 de Abril de 2011, 11:45:27
C=Collage de cosas
Mucho espacio, poca eficiencia.
Es como te dicen.