Autor Tema: LCD+TECLADO 4X4 POR PUERTO B PIC 18F4550  (Leído 197 veces)

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

Desconectado SEMICONDUCTORMAN

  • PIC10
  • *
  • Mensajes: 4
LCD+TECLADO 4X4 POR PUERTO B PIC 18F4550
« en: 30 de Julio de 2020, 12:06:54 »
Buen dia compañeros, estoy tratando de implementar un sistema regulador de temperatura con un pin 18f4550 y por mas que trate no pude inicializar la LCD 4x20 por el puerto D asi que lo tengo en el puerto B, tambien necesito adicionar un teclado matricial y vi en un video que se puede usar junto a la LCD en el puerto B asi que lo implemente pero al momento de correrlo en fisico si oprimo cualquier tecla dos veces me salen caracteres diferentes y a parte de esto "se digitan solos", el teclado es de membrana y esta nuevo, no se si hay que colocar resistencias pullup o pulldown, el codigop completo es bastante extenso asi que solo coloco el segmento que me causa problemas
Código: [Seleccionar]
include <18F4550.H>
#use DELAY(clock=6000000)
#define LCD_ENABLE_PIN PIN_B0 // ASIGNAMOS EL PIN "d0" COMO SALIDA PARA E
#define LCD_RS_PIN PIN_B1 // ASIGNAMOS EL PIN "d1" COMO SALIDA PARA RS
#define LCD_RW_PIN PIN_B2 // ASIGNAMOS EL PIN "d2" COMO SALIDA PARA RW
#define LCD_DATA4 PIN_B4 // ASIGNAMOS EL PIN "d3" COMO SALIDA PARA D4
#define LCD_DATA5 PIN_B5 // ASIGNAMOS EL PIN "d4" COMO SALIDA PARA D5
#define LCD_DATA6 PIN_B6 // ASIGNAMOS EL PIN "d5" COMO SALIDA PARA D6
#define LCD_DATA7 PIN_B7 // ASIGNAMOS EL PIN "d6" COMO SALIDA PARA D7
#include <lcd420.c>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD
#DEFINE USE_PORTB_KBD TRUE
#DEFINE USE_PORTB_LCD TRUE
#include <KBD4X4MOD.C>  //Incluir en el encabezado el driver para
#byte porta = 0xf80 // Identificador para el puerto A.
#byte portb = 0xf81 // Identificador para el puerto B.
#byte portc = 0xf82 // Identificador para el puerto C.
#byte portd = 0xf83 // Identificador para el puerto D.
#byte porte = 0xf84 // Identificador para el puerto E.

// Variables Globales
CHAR K;
INT DIR;
 
//Programa Principal
VOID MAIN()
{
   lcd_init(); //Inicializa el LCD
   kbd_init(); //Inicializa el Teclado
 
   //Configura las Resistencias PULL-UP del Puerto B
  //port_b_pullups(0xFF); //PIC16F887
 port_b_pullups(TRUE); //PIC16F877A
 
   LCD_PUTC("\f"); //Limpia el LCD
    //Ciclo infinito
   WHILE(1)
   {
      DIR=0;
      LCD_PUTC("\f");
      while (DIR<20)
      {
         k=kbd_getc();  //Llamar la función del teclado y almacenar el
                        //valor digitado en una variable tipo carácter. Si
                        //no se oprime ninguna tecla el teclado
                        //retornara el carácter nulo.*/
   
         WHILE( (k=='\0')) //si no se oprime ninguna tecla sigue llamando al teclado.
         {
            k=kbd_getc();
         }
         if( (k!='*')&&(k!='#'))
         {
            lcd_putc(k);
            DIR++;
         }
      }
   }
}


Muchas gracias y quedo atento a sus comentarios

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 397
    • Mcu Tronics
Re:LCD+TECLADO 4X4 POR PUERTO B PIC 18F4550
« Respuesta #1 en: 30 de Julio de 2020, 14:31:30 »
has probado con otra libreria para el LCD, como la flex_lcd, siempre que la he usado no me ha dado problemas, o debe ser forzosamente la que tienes declarada???

saludos
Nunca se deja de aprender

Desconectado SEMICONDUCTORMAN

  • PIC10
  • *
  • Mensajes: 4
Re:LCD+TECLADO 4X4 POR PUERTO B PIC 18F4550
« Respuesta #2 en: 30 de Julio de 2020, 15:50:19 »
Hola Amigo me puedes compartir la libreria? ya que las que consigo tampoco me han funcionado

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 397
    • Mcu Tronics
Re:LCD+TECLADO 4X4 POR PUERTO B PIC 18F4550
« Respuesta #3 en: 30 de Julio de 2020, 16:18:51 »
Claro dame oportunidad de llegar a casa y te la adjunto, la he usado con LCD de 2X16 y de 4X20 sin problemas
Nunca se deja de aprender