Autor Tema: Programacion Matriz de led 53x5  (Leído 4749 veces)

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

Desconectado Karencita

  • PIC10
  • *
  • Mensajes: 1
Programacion Matriz de led 53x5
« en: 02 de Abril de 2016, 22:51:24 »
Hola chicos! Soy nueva en esto de la programación con matrices y estoy haciendo un proyecto donde realizo una matriz 53x5 con el pic 16f873a un registro de desplazamiento 74hc164n y necesito que me muestre diferentes palabras pero en la programación no hayo como declarar letras en cada pin y no en los puerto no se si estoy errada en lo que digo si de algo me pueden ayudar se lo agradecería

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programacion Matriz de led 53x5
« Respuesta #1 en: 02 de Abril de 2016, 23:48:06 »
Citar
pero en la programación no hayo como declarar letras en cada pin y no en los puerto no se si estoy errada en lo que digo si de algo me pueden ayudar se lo agradecería

Podrias explicar esto ?, es decir como queres que funcione, por que un pin puede tener 2 valores 0 o 1.
Otra de las cosas es que no sabemos de que compilador/lenguaje estas usando. Ya que podria ser C ( CCS o XC8 normalmente ) o BASIC.

Desconectado Moechh

  • PIC10
  • *
  • Mensajes: 16
Re:Programacion Matriz de led 53x5
« Respuesta #2 en: 22 de Abril de 2016, 22:15:26 »
He vuelto con mas dudas ahora solo quisiera que me ayudaran a hacer que este codigo haga un corrimiento
* registro 74164 con pic.zip
(153.22 kB - descargado 257 veces)

el primer archivo es el original
l segundo yo lo modifique pero no solo se puede hacer el corrimiento unos momentos despues se detiene o se altera

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programacion Matriz de led 53x5
« Respuesta #3 en: 23 de Abril de 2016, 08:18:59 »
No tenes un while aunque sea pone un while(1); al final del main, para que se quede alli.

Ya que termina el for.... y ... a donde va ? no se queda encerrado en ningun lado, ni repite algo.

Tambien podrias reemplazar:

Código: C
  1. output_bit(DATO,valor & bitMask[j]);

por

Código: C
  1. output_bit(DATO,bit_test(valor,j));

Y no necesitarias un array con las mascaras.

Desconectado Moechh

  • PIC10
  • *
  • Mensajes: 16
Re:Programacion Matriz de led 53x5
« Respuesta #4 en: 23 de Abril de 2016, 23:51:39 »
No tenes un while aunque sea pone un while(1); al final del main, para que se quede alli.

Ya que termina el for.... y ... a donde va ? no se queda encerrado en ningun lado, ni repite algo.

Tambien podrias reemplazar:

Código: C
  1. output_bit(DATO,valor & bitMask[j]);

por

Código: C
  1. output_bit(DATO,bit_test(valor,j));

Y no necesitarias un array con las mascaras.
No realiza nada al contrario lo que yo quiero es que valor=datosalida[] pase de de la posicion 0 a la 7 del byte const Da[8]={0b10000000,
                     0b01000000,   
                     0b00100000,
                     0b00010000,
                     0b00001000,
                     0b00000100,
                     0b00000010,
                     0b00000001,};
yo quiero que rrecorra todas esas pociciones

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programacion Matriz de led 53x5
« Respuesta #5 en: 24 de Abril de 2016, 07:32:32 »
Yo crei que preguntas por como enviarle datos al registro de desplazamiento.

Pero lo que queres hacer es mover la imagen ?, Si podes explicarte un poco mas seria genial

Desconectado Moechh

  • PIC10
  • *
  • Mensajes: 16
Re:Programacion Matriz de led 53x5
« Respuesta #6 en: 24 de Abril de 2016, 23:36:20 »
Yo crei que preguntas por como enviarle datos al registro de desplazamiento.

Pero lo que queres hacer es mover la imagen ?, Si podes explicarte un poco mas seria genial
esto es lo que pretendo pero resumirlo mas

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programacion Matriz de led 53x5
« Respuesta #7 en: 25 de Abril de 2016, 09:32:42 »
Código: C
  1. 0b01000000,    
  2.                      0b00100000,
  3.                      0b00010000,
  4.                      0b00001000,
  5.                      0b00000100,
  6.                      0b00000010,
  7.                      0b00000001};

Suponete que eso esa es la imagen a enviar. Y queres que se dezplace a la izquierda.

Hay 2 formas de hacerlo, uno es que se desplaze a la izquierda y "desaparesca", y la otra es que aparezca a medida que va saliendo por el otro lado.

La que desaparece es "simple". ya que deberias rotar cada dato X cantidad de veces.

Código: C
  1. for (x=0;x<8;x++)
  2. {
  3.       temp = Datos[x] << Rotacion;
  4.       ApagoComunes;
  5.       EnviodatosAlShift(temp)
  6.       EnciendoComunes;
  7. }

Y cada cierto tiempo procedes a modificar Rotacion, de 0 a 1, y ahi vas a tenerlo desplazado 1 lugar a la izquierda, luego 2, y van a ser 2 lugares.
El tema es que se van a ir llenando de 0 a la derecha, por lo cual va a ir "desapareciendo". La otra solucion para que aparezca del otro lado es rotarlos asi:

Código: C
  1. temp = (Datos[x] << Rotacion) || (Datos[x] >> (8 - Rotacion));

Rotacion va de 0 a 7, ya que 8 volveria a comenzar.. si hacemos esto , por ejemplo con estos datos:

Dato: 10100011
Rotacion: 3

temp va a ser: 00011101
Esos ultimos 3 bits estaban antes al comienzo. y ahi tenes tu rotacion.
Ahora solo tenes que modificar lo que le enviabas al shift register, por el dato rotado, y tambien, deberias hacer algo tal ves con un timer para que vaya incrementando la variable Rotacion.

PD: La mayoria del codigo esta escrito para que lo leas y entiendas, pero no va a funcionar un simple copy & paste.

Desconectado Moechh

  • PIC10
  • *
  • Mensajes: 16
Re:Programacion Matriz de led 53x5
« Respuesta #8 en: 25 de Abril de 2016, 13:55:01 »
Código: C
  1. int datossalida [8]={0b01000000,//esta es la primera pocicion
  2.                                                   0b01000000,  //segunda  
  3.                                                   0b00100000, //tercera
  4.                                                   0b00010000, //cuarta
  5.                                                   0b00001000, //quinta
  6.                                                   0b00000100,// sexta
  7.                                                   0b00000010,// septima
  8.                                                   0b00000001,}; // octava
  9. valor=datossalida[0]
  10. lo que yo quiero es que en este array 0 adopte todas las pociciones y vuelva a repetirse ya se que es necesario un for pero de que manera lo hago se me ocurrio hacerlo asi:
  11. void Valor(void) {
  12. for(i=0;i<8;i++){
  13. valor=datossalida[i]}}tambien intente hacerlo asi pero no se genero nada
  14.  
  15. void Valor(void) {
  16. for(i=0;i<8;i++){
  17. output_bit(valor=datossalida[i])}}
  18. para finalizar lo que necesito es que convierta en esto: o mas bien que dentro de esta funcion:
  19. valor=DatosSalida[0];
  20. for(j=0;j<8;j++){
  21.             output_low(CLK);
  22.             output_bit(DATO,valor & bitMask[j]);
  23.             output_high(CLK);
  24. el array de valor=datossalida[]
  25. pase por todas estas pociciones;
  26. valor=datossalida[0]
  27. valor=datossalida[1]
  28. valor=datossalida[2]
  29. valor=datossalida[3]
  30. valor=datossalida[4]
  31. valor=datossalida[5]
  32. valor=datossalida[6]
  33. valor=datossalida[7]


 

anything