Autor Tema: PIC16F876 lcd con teclado  (Leído 1862 veces)

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

Desconectado GONZALOSEBASTIAN_LOPEZ

  • PIC10
  • *
  • Mensajes: 2
PIC16F876 lcd con teclado
« 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");
      }
   }

}



Desconectado skp

  • PIC10
  • *
  • Mensajes: 1
Re: PIC16F876 lcd con teclado
« Respuesta #1 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.

Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Re: PIC16F876 lcd con teclado
« Respuesta #2 en: 18 de Abril de 2011, 11:45:27 »
C=Collage de cosas
Mucho espacio, poca eficiencia.
Es como te dicen.