Autor Tema: AYUDA EN TECLADO PS/2 CON PIC 16F84  (Leído 3177 veces)

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

Desconectado electronando

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 427
AYUDA EN TECLADO PS/2 CON PIC 16F84
« en: 12 de Octubre de 2005, 16:42:00 »
BUENO NO SE SI ALGUIEN PODRIA AYUDARME QUISIERA MANEJAR UN TECLADO DE COMPUTADORA PARA CONECTARLO CON EL PIC 16F84 Y LUEGO MANDAR LOS DATOS SERIALMENTE POR EL HIPERTERMINAL CUALQUIERA O POR UN LCD , POR LO MENOS QUE SE VEAN LOS CARACTERES QUE TIPEO LA VERDAD ESTUVE ARMANDO UNO EN BASIC PERO NO ME FUNCIONO Y TENIA UN CODIGO EN ASM QUE ESTABA PEOR QUE EN CHINO NO SE SI CONOCEN ALGUN CODIGO COMPRENSIBLE ACA LOS SITIOS DE DONDE SALI MAS CONFUNDIDO AUNQUE PARECE Q TIENEN BUENA INFORMACION PARA EL QUE DOMINE
http://www.electronic-engineering.ch/microchip/projects/keyboard/v1xx/keyboard_v1xx.html

TIENEN TODO PERO LA VERDAD EL CODIGO ESTA MUY COMPLICADO POR LO MENOS PARA ANALIZARLO AGRADECERIA SI ALGUIEN TIENE ALGUNA IDEA , ARME UNO EN BASIC PERO NO ARRANCA locolocoloco

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: AYUDA EN TECLADO PS/2 CON PIC 16F84
« Respuesta #1 en: 12 de Octubre de 2005, 19:47:00 »
Te adjunté este archivo que da detalles sobre el teclado PS/2, tal vez lo encuentres útil.

http://rapidshare.de/files/6211885/Teclado_AT-PS2_Interfaz_y_funciones_v1.2.pdf.html


Desconectado microcarsil

  • PIC10
  • *
  • Mensajes: 44
RE: AYUDA EN TECLADO PS/2 CON PIC 16F84
« Respuesta #2 en: 15 de Octubre de 2005, 14:34:00 »
Aqui te dejo un ejemplo con el pic18f452 programado en PCWH, espero que te sirva.

PIC18F452           KEYBOARD
    Vcc----------------> +5v
    RB0---------------> Clock
    RB7----------------->Data
    GND---------------->GND


#include "18f452.h"
#fuses HS, NOWDT,NOPROTECT, PUT, BROWNOUT, NOLVP
#use Delay(Clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <bootloader.h>

int bitcount=11;
int data=0;

unsigned char const unshifted[68][2] = {
0x0d,9,
0x0e,"º",
0x15,"q",
0x16,"1",
0x1a,"z",
0x1b,"s",
0x1c,"a",
0x1d,"w",
0x1e,"2",
0x21,"c",
0x22,"x",
0x23,"d",
0x24,"e",
0x25,"4",
0x26,"3",
0x29," ",
0x2a,"v",
0x2b,"f",
0x2c,"t",
0x2d,"r",
0x2e,"5",
0x31,"n",
0x32,"b",
0x33,"h",
0x34,"g",
0x35,"y",
0x36,"6",
0x39,",",
0x3a,"m",
0x3b,"j",
0x3c,"u",
0x3d,"7",
0x3e,"8",
0x41,",",
0x42,"k",
0x43,"i",
0x44,"o",
0x45,"0",
0x46,"9",
0x49,".",
0x4a,"-",
0x4b,"l",
0x4c,"ñ",
0x4d,"p",
0x4e,""",
0x52,"´",
0x54,"`",
0x55,"¡",
0x5a,13,
0x5b,"+",
0x5d,"ç",
0x61,"<",
0x66,8,
0x69,"1",
0x6b,"4",
0x6c,"7",
0x70,"0",
0x71,".",
0x72,"2",
0x73,"5",
0x74,"6",
0x75,"8",
0x79,"+",
0x7a,"3",
0x7b,"-",
0x7c,"*",
0x7d,"9",
0,0
};

unsigned char const shifted[68][2] = {
0x0d,9,
0x0e,"ª",
0x15,"Q",
0x16,"!",
0x1a,"Z",
0x1b,"S",
0x1c,"A",
0x1d,"W",
0x1e,""",
0x21,"C",
0x22,"X",
0x23,"D",
0x24,"E",
0x25,"$",
0x26,"•",
0x29," ",
0x2a,"V",
0x2b,"F",
0x2c,"T",
0x2d,"R",
0x2e,"%",
0x31,"N",
0x32,"B",
0x33,"H",
0x34,"G",
0x35,"Y",
0x36,"&",
0x39,"L",
0x3a,"M",
0x3b,"J",
0x3c,"U",
0x3d,"/",
0x3e,"(",
0x41,";",
0x42,"K",
0x43,"I",
0x44,"O",
0x45,"=",
0x46,")",
0x49,":",
0x4a,"_",
0x4b,"L",
0x4c,"Ñ",
0x4d,"P",
0x4e,"?",
0x52,"¨",
0x54,"^",
0x55,"¿",
0x5a,13,
0x5b,"*",
0x5d,"Ç",
0x61,">",
0x66,8,
0x69,"1",
0x6b,"4",
0x6c,"7",
0x70,"0",
0x71,".",
0x72,"2",
0x73,"5",
0x74,"6",
0x75,"8",
0x79,"+",
0x7a,"3",
0x7b,"-",
0x7c,"*",
0x7d,"9",
0,0
};

void decode(unsigned char sc);

#int_ext
void int_ext_isr(void)
{
   if(bitcount < 11 && bitcount > 2)
   {
        data = (data >> 1);
        if( input(PIN_B7) == 1)
          data = data | 0x80;
   }
   if(--bitcount == 0)
   {
        decode(data);
        data = 0;
        bitcount = 11;
   }
}

void main(void)
{
   set_tris_b(0xff);
   printf("
INTERFACE DE TECLADO v1.0"Giño;
   ext_int_edge(H_TO_L);
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);

   while(1)
   {
   }
}

void decode(unsigned char sc)
{
   static unsigned char is_up=0, shift = 0;
   int i=0;                              

   //-------- El último dato recibido fue el identificador de Up-Key
   if (!is_up)
      {
         switch (sc)
            {
            //-------- Identificador de Up-Key
               case 0xF0 :
                  is_up = 1;
                  break;
               //-------- SHIFT Izquierdo
               case 0x12 :
                  shift = 1;
                  break;
               //-------- SHIFT Derecho
               case 0x59 :
                  shift = 1;
                  break;
               //-------- ENTER
               case 0x5A :
                  printf("
"Giño;
                  break;
               default:
                  if(!shift)
                     {
                        for(i = 0; i<=68; i++)
                        {
                           if (unshifted[0] == sc)
                           {
                              printf("%c", unshifted[1]);
                           }
                        }
                     }
                  else
                    {
                        for(i = 0; i<=68; i++)
                        {
                           if (shifted[0] == sc)
                           {
                               printf("%c", shifted[1]);
                           }
                        }
                     }
                 break;
            }
     }
     else
         {
         //-------- No se permiten 2 0xF0 en una fila
         is_up = 0;
         switch (sc)
            {
               //-------- SHIFT Izquierdo
               case 0x12 :
                  shift = 0;
                  break;
               //-------- SHIFT Derecho
               case 0x59 :
                  shift = 0;
                  break;
            }
         }
}





Microcarsil

Desconectado nunes

  • PIC10
  • *
  • Mensajes: 2
Re: AYUDA EN TECLADO PS/2 CON PIC 16F84
« Respuesta #3 en: 12 de Julio de 2007, 10:15:34 »
Amigos gostaria de um projeto com pic 16F628A para ler apenas as teclas: Y,J,H,N,V,B,T,R,P,F,4 TODAS EM MINUSCULAS.
Me ajudem se possivel.
Me mande um aviso para agnm1@veloxmail.com.br
Gabriel Nunes

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania


 

anything