Matriz de Leds PIC16f628a Controlada por Teclado PS2 - Consulta

hola amigo tecniloco te agradezco de todo corazón la gran aportación que has hecho, realmente me ha servido muchísimo el diagrama de conexión, tengo una duda el pic16f716 lo colocaste solo para utilizar la memoria que posee para almacenar los mensajes o también tiene su programación aparte al igual que el pic18f452:unsure: :D no había notado el pic16f716 en la simulación, gracias amigo te mando un gran abrazo

No es para la memoria es para manejar el teclado ps2 aqui esta el hex

Código:
:1000000000308A00542A0000831A0A28A500030E33
:10001000A6000F288312A500030EA600A6140A0846
:10002000AD008A018313A50E0408A7002008A800CC
:100030002108A9002208AA002308AB002408AC006C
:1000400083120B1E25288B18B02927088400280846
:10005000A0002908A1002A08A2002B08A3002C0850
:10006000A4002D088A00260E83008312250EA618F0
:10007000831609000A108A100A1182070D34093408
:100080000E34BA3415347134163431341A347A34A7
:100090001B3473341C3461341D3477341E343234D1
:1000A0002134633422347834233464342434653482
:1000B0002534343426343334293420342A34763405
:1000C0002B3466342C3474342D3472342E3435345D
:1000D00031346E3432346234333468343434673417
:1000E000353479343634363439342C343A346D344A
:1000F0003B346A343C3475343D3437343E34383420
:1001000041342C3442346B344334693444346F34D6
:10011000453430344634393449342E344A342D345D
:100120004B346C344C34F1344D3470344E3422340E
:100130005234B434543460345534A1345A340D3408
:100140005B342B345D34E73461343C34663408343A
:10015000693431346B3434346C3437347034303483
:100160007134E634723432347334353474343634A2
:100170007534383479342B347A3433347B342D3439
:100180007C342A347D34393476341B3405340534D8
:1001900006340634043404340C340C34033403348D
:1001A0000B340B34833483340A340A34013401347D
:1001B00009340934783402340734073411344034B4
:1001C000003400340A108A100A11E93E03188A0A22
:1001D00082000D3409340E34AA34153451341634E7
:1001E00021341A345A341B3453341C3441341D34F2
:1001F00057341E34223421344334223458342334C7
:10020000443424344534253424342634B734293452
:1002100020342A3456342B3446342C3454342D3480
:1002200052342E34253431344E3432344234333463
:100230004834343447343534593436342634393438
:100240004C343A344D343B344A343C3455343D34E8
:100250002F343E34283441343B3442344B3443341D
:10026000493444344F3445343D34463429344934D8
:100270003A344A345F344B344C344C34D1344D34FA
:1002800050344E343F345234A83454345E345534F0
:10029000BF345A340D345B342A345D34C73461348E
:1002A0003E3466340834693431346B3434346C345D
:1002B0003734703430347134E63472343234733459
:1002C0003534743436347534383479342B347A34E4
:1002D00033347B342D347C342A347D3439347634D1
:1002E0001B340534053406340634043404340C3429
:1002F0000C34033403340B340B34833483340A3426
:100300000A340134013409340934783402340734AE
:10031000073411344034003400348316061183123C
:1003200006110830A10094290000A117A529A113E6
:10033000BE0C03180615031C06112117A52921134D
:10034000A10B9829A329000006158C308400840B8A
:10035000A729AA290000A11B9729211B9F29003446
:1003600030080A3C031CC3293008023C0318C32987
:100370000310B90C831686158312B3018619B30ACC
:10038000330BC329B917B00B352A3908BA00B408A2
:10039000031D232A3A08F03A0319D829E23A03192F
:1003A000DB294B3A0319DE29033A0319E129E32932
:1003B0000130B400222A0130B500222A0130B500F4
:1003C000222AB501222AB508031D042ABB01031005
:1003D0003B0D3A203A020319F62903103B0D3A204F
:1003E000A100A1080319F629BB0AE72903103B0D58
:1003F0003A203A02031D032A03103B0D013E3A2026
:10040000BD00BE008D21212ABB0103103B0DE2205F
:100410003A020319142A03103B0DE220A100A1089F
:100420000319142ABB0A052A03103B0DE2203A02E5
:10043000031D212A03103B0D013EE220BD00BE003A
:100440008D21222A302AB4013A08123A03192C2AA3
:100450004B3A03192E2A302AB501302AB501302A29
:10046000B9010B30B0000130B1000130B100B20A67
:100470000B128B108A112528383084008313000852
:100480000319502A0530A100A001A00B452AA10B99
:10049000442A7C30A000A00B4B2A4E2A800B422A13
:1004A00000340B30B0007F2A03081F3983005F300F
:1004B000A0002130840083138001840AA00B5C2AF1
:1004C0002030A000A030840083138001840AA00B98
:1004D000652AA001840183131F308305831606114A
:1004E0008312061583161F149F141F158312B4015F
:1004F000B501B601B7016430B8003C22512A831619
:10050000061486151F308500811306308312A00063
:10051000A00B882A8B2AB201B101B3018316011303
:1005200083128B100B16C0308B04310B9A2AB10149
:100530008B100B168316851483128518D72A37085B
:10054000FC3E0318D42A043ED92AAE018B1BAE17F9
:100550008B130330BE008D21AE1B8B170130B70704
:10056000D42AAE018B1BAE178B130B30BE008D212E
:10057000AE1B8B170130B707D42AAE018B1BAE1709
:100580008B138330BE008D21AE1B8B170130B70754
:10059000D42AAE018B1BAE178B130A30BE008D21FF
:1005A000AE1B8B17B701D42AFA30B8003C22952A2B
:1005B00063000A108A140A118207A52AB12ABD2AEB
:0205C000C92A46
:02400E00BA3FB7
:00000001FF
;PIC16F716

no esta en la simulacion porque el proteus no simula teclado este es el hex para el 16f716 use ese pic porque era el unico que tenia cerca con un cristal de 16,9344 reciclado de un toca cd
 
Última edición:
hola amigo tecniloco perdona por no responderte, nueva mente te agradezco por esta gran aportación espero que a todos los demás miembros del foro les sea útil esta gran aportación y resuelvan todas sus dudas respecto a la matriz de led al igual que ami me fue de gran ayuda, sinceramente te felicito por tu proyecto es excelente. de todo corazón gracias te mando un gran abrazo y un :aplauso: te lo mereces.
 
Buenos dias amigo tecniloco80, en la matrix de 7x40, la memoria i2c que maneja en el proyecto? es para almacenamiento de mensajes o tiene programación aparte?
 
hola amigo tecniloco perdona la molestia, me ha surgido una duda del diagrama de conexión que nos compartiste, los 6 circuitos integrados horizontales son registros de desplazamiento cd4094 sino me equivoco por ser de 8 pines, pero mi duda es los 5 circuitos integrados verticales que están justo alado de los transistores de que tipo son? no logro descifrar su tipo por que son de 9 pines hehe, te agradezco de todo corazón la ayuda amigo muchas gracias.
 
hola amigo tecniloco perdona la molestia, me ha surgido una duda del diagrama de conexión que nos compartiste, los 6 circuitos integrados horizontales son registros de desplazamiento cd4094 sino me equivoco por ser de 8 pines, pero mi duda es los 5 circuitos ............

Esos son transistores darlington en arrays es el ULN2803an



Amigo podrías subir el código en picc ??? por_favor

este el codigo del pic 16f716 solo cambie el include y el use delay por uno que pueda conseguir como el 16f628
Código:
#include "16F716.h"
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT
#use Delay(Clock=16934400)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)
#zero_ram
unsigned char edge, bitcount;
char got_interrupt;
char interrupt_count;
char status_b3;
#bit INTF_BIT = 0x0B.1 
unsigned char const unshifted[82][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',
0x76,0x1b,//esc
0x05,0x05,//f1
0x06,0x06,//f2
0x04,0x04,//f3
0x0c,0x0c,//f4
0x03,0x03,//f5
0x0b,0x0b,//f6
0x83,0x83,//f7
0x0a,0x0a,//f8
0x01,0x01,//f9
0x09,0x09,//f10
0x78,0x02,//f11
0x07,0x07,//f12
0x11,'@',
0,0 
}; 

unsigned char const shifted[82][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',
0x76,0x1b,
0x05,0x05,
0x06,0x06,
0x04,0x04,
0x0c,0x0c,
0x03,0x03,
0x0b,0x0b,
0x83,0x83,
0x0a,0x0a,
0x01,0x01,
0x09,0x09,
0x78,0x02,
0x07,0x07,
0x11,'@',
0,0 
}; 
void init_kb(void);
void decode(unsigned char sc);
#int_ext
void int_ext_isr(void){
unsigned char data;
   if(bitcount < 11 && bitcount > 2){
      data = (data >> 1);
      status_b3 = input(PIN_B3);
      if((status_b3) == 1){
          data = data | 0x80;
      }
   }
   if(--bitcount == 0){
      decode(data);
      data = 0;
      bitcount = 11;
      got_interrupt = TRUE;
   }
   got_interrupt = TRUE;
   interrupt_count++;
   disable_interrupts(INT_EXT);
}

void main(void)
{
int value = 0;
   delay_ms(100);
   init_kb();
   output_float(PIN_B0);
   output_float(PIN_B3);
   set_tris_a (0x1f);
   port_b_pullups(TRUE);
   delay_us(5);
   interrupt_count = 0;
   got_interrupt = FALSE;
   status_b3 = 0;
   ext_int_edge(H_TO_L);
   INTF_BIT = 0;
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);
   while(1){
      if(got_interrupt == TRUE){
            got_interrupt = FALSE;
            INTF_BIT = 0;
            enable_interrupts(INT_EXT);
         } 
        if( input(PIN_A1)==0 ){
       
        
        switch( value ){
        case 0:printf("%c",0x03);
        value=value+1;
        break;
        case 1:printf("%c",0x0b);
        value=value+1;
        break;
        case 2:printf("%c",0x83);
        value=value+1;
        break;
        case 3:printf("%c",0x0a);
        value=0;
        break;
        }
        delay_ms (250);
        }
      } 
} 

void init_kb(void){
   bitcount = 11;
   printf("" );
}

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

   if (!is_up){
         switch (sc){
               case 0xF0 :
                  is_up = 1;
                  break;
               case 0x12 :
                  shift = 1;
                  break;
               case 0x59 :
                  shift = 1;
                  break;
               case 0x5A :
                  shift = 0;
                  printf ("");
                  break;
               default:
                  if(!shift)
                     {
                        for(i = 0; unshifted[ i ][ 0 ]!=sc && unshifted[ i ][ 0 ]; i++);
                        if (unshifted[ i ][ 0 ] == sc)
                           {
                              printf("%c", unshifted[ i ][ 1 ]);
                           }
                     }
                  else
                     {
                        for(i = 0; shifted[ i ][ 0 ]!=sc && shifted[ i ][ 0 ]; i++);
                        if (shifted[ i ][ 0 ] == sc)
                           {
                              printf("%c", shifted[ i ][ 1 ]);
                           }
                     }
                     break;
               } 
         }
      else
         {
         
         is_up = 0;
         switch (sc)
            {
               case 0x12 :
                  shift = 0;
                  break;
               case 0x59 :
                  shift = 0;
                  break;
            } 
         }
}
 
Última edición:
buenas tardes amigo tecniloco80, el codigo que tenes para el pic 18f452 en la simulacion no tiene transistores ni los uln 2803 , al montar el circuito ya con los transistores funciona igual o tenes otro para ello
de antemano muchas gracias por tu respuesta
juanc08
cali colombia
 
Última edición:
Hola aqui les subo todos los archivos que encontre de esta matrix para que puedan hacerla funcionar disculpen por no subirlos antes es que me dio flojera reunir todos los archivos :D
son libres de modificar lo que quieran del codigo por que creo que se puede hacer mejor
yo lo hice asi por limite de tiempo
Ver el archivo adjunto matrix.part01.rar

Ver el archivo adjunto matrix.part02.rar

Ver el archivo adjunto matrix.part03.rar

Ver el archivo adjunto matrix.part04.rar

Ver el archivo adjunto matrix.part05.rar

Ver el archivo adjunto matrix.part06.rar

Ver el archivo adjunto matrix.part07.rar

Ver el archivo adjunto matrix.part08.rar
 
Muchas gracias amigo por tu aportacion en verdad voy a descargar tus archivos subidos los para poder simularlos y armarlo muchas gracias amigo

Código:
#include "16F716.h"
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT
#use Delay(Clock=16934400)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)
#zero_ram
unsigned char edge, bitcount;
char got_interrupt;
char interrupt_count;
char status_b3;
#bit INTF_BIT = 0x0B.1 
unsigned char const unshifted[82][2] = { 
0x0d,9, 
0x0e,'º', 
0x15,'q', 
0x16,'1', 
0x1a,'z', 
0x1b,'s',
si quisiera compilarlo para el pic16F628A como lo modificaria en los fuses amigo ya que es mas comercial y mas barato creo yo. ups creo que tbm necesito el programa C para poder modificarlo y compilarlo

---------- Actualizado después de 2 horas ----------

No la programacion esta hecha con el PIC C Compiler , lo que subi es solo la parte de la matrix el teclado funciona con otro pic un 16fxxx ,lo hice primero con un solo pic pero no quedaba mucho espacio paro los mensajes ahora puedo usar las Fx del teclado para grabar en memoria interena del pic 4 mensajes con F1 F2 F3 F4 graba y con F5 F6 F7 F8 reproduce F9 es un efx f10 negativo
f11 velocidad - f12 velocidad + esc borra msj 0
Amigo TECNILOCO80 gracias por tu aporte de los archivos que has subido, en verdad esta muy bueno. me hubiera gustado que la programación sea en pic basic ya que ese es el que practico quisiera saber como se programa esta matriz a través del teclado ps2 o se necesita algo mas te agradecería mucho puedas darnos esa ultima pausa. Yo tengo un circuito que estuve haciendo con un amigo del foro, pero el ya no se conecta y en verdad me agradaría postearlo. no se logro terminar el proyecto, pero lo que falta del programa es muy poco esta en picbasic y Vb para la creación de nuevas letras dibujos o imágenes espero subirlo pronto y si mi amigo quien junto a el hicimos este proyecto no se enoja o se enfada pues no veo motivos de no adjuntarlo y poder terminarlo espero puedan ayudarme a terminarlo amigos
 
Última edición por un moderador:
Buen trabajo

Una duda, sabéis si el cristal de 16.93 MHz hay que ponerlo si o si, o se puede poner uno de 16.000 MHz o cual, por que no lo encuentro por ningún lado
 
Ok gracias

Un saludo



Nada, no lo encuentro por ningún lado, sabéis donde puedo encontrar un resonador cerámico de 16.93 MHz online?







Un saludo

 
Última edición:
Hola compañero tecniloco80 agradesco tu gran aporte, leyendo tu mensaje para los cambios del pic del teclado estos serian los cambios #include "16F716.h" por #include "16F628.h" y #use Delay(Clock=16934400) por #use Delay(Clock=20000000) o abria otro cambio en el codigo, agradesco su respuesta de antemano.
 
Hola compañero tecniloco80 agradesco tu gran aporte, leyendo tu mensaje para los cambios del pic del teclado estos serian los cambios #include "16F716.h" por #include "16F628.h" y #use Delay(Clock=16934400) por #use Delay(Clock=20000000).

Si esos serian los cambios para un cristal 20Mhz



Nada, no lo encuentro por ningún lado, sabéis donde puedo encontrar un resonador cerámico de 16.93 MHz

yo lo saque de un toca cd danado
 
Última edición:
Gracias compañero tecniloco 80 ahora tengo que armar un grabador de pic para el pic 18f452 ya que solo poseo un jdm ya que solo he utilizado pic 16f628 , he estado probando un proyecto de matriz de leds con teclado de una pagina rusa pero no funciona , les adjunto el diagrama que estaba desarrolando.
 

Adjuntos

  • mc150-1.jpg
    mc150-1.jpg
    61.1 KB · Visitas: 298
Hola ,por las imagenes y por lo dicho por el compañero tecniloco8o ese es el mismo ,estos los encuentras en aparatos reproductores de c.d.
 
Atrás
Arriba