Autor Tema: Matriz de leds 5x7  (Leído 14715 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Matriz de leds 5x7
« en: 31 de Octubre de 2006, 21:39:50 »
Estoy tratando de aprender a manejar estas matrices....viendo el ejemplo de vszener , pero no tengo suerte....
Lo principal que quiero hacer es ir prendiendo de a uno los leds....

1-2-3-4-5
6-7-8-9-10
11-12..........

Lo que no me queda claro es como manejarlo....si lo imagino como una matriz para ir cambiando es facil...pero con el pic ya no lo es, ya que tengo en el pic (estoy aprendiendo con el 16f84) tal cual esta en el ejemplo con el 4028:
RA0->A
RA1->B
RA2->C
RA3->D

RB0->Fila1
RB1->Fila2
-------------------
RB6->Fila7

No entiendo como ir cambiando de de columnas si del pic salen solo 4 patas y son 5 columnas. Por ejemplo, si quiero prender el de la esquina superior izquierda, que seria el 1 tendria que poner en 0 la fila 1 y 0 en la columna 1 y todo lo demas 1, es asi?

01111111
11111111
11111111
11111111
11111111
11111111
11111111

Como manejo el tema del puerto a y b???


Espero haber sido claro.
Desde ya mil gracias por la ayuda!!

« Última modificación: 31 de Octubre de 2006, 22:32:57 por aripod »

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #1 en: 04 de Noviembre de 2006, 17:14:53 »
nadie?

Desconectado Astaroth_25

  • PIC12
  • **
  • Mensajes: 52
Re: Matriz de leds 5x7
« Respuesta #2 en: 04 de Noviembre de 2006, 21:55:15 »
nadie?
Lo que podrias usar es un registro de desplazamiento por ejemplo el 74hc164 asi utilizar menos pines del PIC..
tendrias uno para el DATO que es el que selecciona la fila y otro pin para el clock y puedes utilizar otro para resetear el registro si asi lo requieres

Y si quieres seguir ahorrando pines puedes utilizar otro para 74hc164 para donde entra el dato que indica que columnas se van a prender...

Saludos
Bueno ahi tienes el LINK donde se trato mas a fondo sobre el tema

http://www.todopic.com.ar/foros/index.php?topic=14136.0
« Última modificación: 04 de Noviembre de 2006, 22:15:38 por Astaroth_25 »
HEAVY - METAL ..por siempre  Ψ Ω Ψ

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #3 en: 08 de Noviembre de 2006, 14:52:37 »
Estoy utilizando el 16f84...entonces, si conecto el puerto A a las filas, y el B a las columnas tengo justo la cantidad de pines....pero como hago para ke se prenda por ejemplo...el led de la fila 2 y columna 5? o cualkiera??

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Matriz de leds 5x7
« Respuesta #4 en: 08 de Noviembre de 2006, 15:02:27 »
Estoy utilizando el 16f84...entonces, si conecto el puerto A a las filas, y el B a las columnas tengo justo la cantidad de pines....pero como hago para ke se prenda por ejemplo...el led de la fila 2 y columna 5? o cualkiera??

¿Tu limitación está en el hardware o en el software?

Si es en el software, ¿qué lenguaje de programación utilizas?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #5 en: 09 de Noviembre de 2006, 19:19:26 »
Hard no creo, ya ke hice la conexion simple....del pic a la matriz,,pin a pin:



La cosa es ke no se como controlar el prendido de los leds...

Si tengo en el puerto A las filas y en el puerto B las columnas...tendria ke ir poniendo 0 y 1 segun quiera,,,por ejemplo...si quisiera prender el led de la fila 2 y columna 3 deberia hacer:

PORTA=0b00100;
PORTB=0b00100000;

Estoy programando en C, uso el MPLAB con el compilador CC5X.

Desconectado Astaroth_25

  • PIC12
  • **
  • Mensajes: 52
Re: Matriz de leds 5x7
« Respuesta #6 en: 09 de Noviembre de 2006, 22:33:02 »
Ahi tienes una forma de conexion utilizando un registro de desplazamiento con el cual seleccionas la fila que se va a encender y por el PORTB sacar el dato.
HEAVY - METAL ..por siempre  Ψ Ω Ψ

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Matriz de leds 5x7
« Respuesta #7 en: 10 de Noviembre de 2006, 08:37:42 »
aripod, cuéntame cómo funciona esa matriz (nunca la he usado).

Cuando le pones un 1 en una columna y un 1 en una fila, ¿se enciende el led de la intersección?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Matriz de leds 5x7
« Respuesta #8 en: 10 de Noviembre de 2006, 12:26:47 »
Buenas!!!! en el post de Ejemplitos en C para el 16F648A, concretamente en el número 49, hay un programa que utiliza una matriz 5x7.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #9 en: 10 de Noviembre de 2006, 22:10:42 »
Ya baje ese ejemplo...pero no anda :(

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #10 en: 10 de Noviembre de 2006, 22:24:10 »
Hice esto, copiando del codigo ke decis...:

Código: [Seleccionar]
void main(void)
{
TRISA=0;
TRISB=0;

int i,letra[5];
letra[0]=0b00000001;
letra[1]=0b01110110;
letra[2]=0b01110110;
letra[3]=0b01110110;
letra[4]=0b00000001;

while(1)
{
for(i=0; i<5;i++)
{
PORTA=i;
PORTB=letra[i];
delay_ms(10);
}
}
}

Pero no logro entender como es el funcionamiento de la matriz esta.
Por el puerto A ke es lo ke tengo ke enviar? y por el B?
No es ke hay ke seleccionar por el puerto A las columnas y el puerto B las filas y ya???

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Matriz de leds 5x7
« Respuesta #11 en: 11 de Noviembre de 2006, 07:31:28 »
Por el puerto A son las filas y por el puerto B las columnas, si vas al data sheet verás que no se puede mantener el nivel alto de columna y fila fijo, sino que hay que realizar una pausa para que sea visible, por eso es el retardo de 10ms cada vez que lanzamos parte d eun dato.


PD: Por cierto, amí el ejemplo de la matriz si me funciona, ¿has puesto todos los componentes que dice el ejemplo? en las columnas el decodificador 4028 para el barrido de las mismas.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #12 en: 12 de Noviembre de 2006, 13:12:56 »
Porke hay ke poner ese componente para las columnas?? NO puede ser directo??

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Matriz de leds 5x7
« Respuesta #13 en: 12 de Noviembre de 2006, 15:14:42 »
Si puede ser directo, pero con dicho componente te ahorras pines del pic.

PD: El ejemplo está realizado con dicho componente


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado aripod

  • PIC16
  • ***
  • Mensajes: 170
Re: Matriz de leds 5x7
« Respuesta #14 en: 12 de Noviembre de 2006, 19:14:12 »
Sera cuestion de seguir probando......

Ahora...para hacer una matriz...pero de pulsadores....como es el razonamiento?
Todavia no tengo bien definido cuantos son...pero,,,minimo van a ser 16.....necesitaria justo una matriz de 4x4........
No haria falta ke habra un thread para poner todas las dudas ke tengo sobre el poryecto ke estoy haciendo, es verdad?

Probe haciendo esto:



Código: [Seleccionar]
#include <delay.h>
bit columna1@PORTB.7;
bit columna2@PORTB.6;
bit columna3@PORTB.5;
bit columna4@PORTB.4;
bit fila1@PORTB.3;
bit fila2@PORTB.2;
bit fila3@PORTB.1;
bit fila4@PORTB.0;

bit led@PORTA.2;

void main(void)
{
TRISA=0;
TRISB=0b11110000;
PORTB=0;

while(1)
{
columna1=1;
delay_ms(20);

if(fila1==1)
{
delay_ms(100);
led=1;
delay_ms(1000);
led=0;
}

if(fila2==1)
{
delay_ms(100);
led=1;
delay_ms(1000);
led=0;
}

if(fila3==1)
{
delay_ms(100);
led=1;
delay_ms(1000);
led=0;
}
if(fila4==1)
{
delay_ms(100);
led=1;
delay_ms(1000);
led=0;
}
columna1=0;

}
}

Pero no tuve suerte......ke es lo ke estaria mal? no encuentro la falla

No puedo hacer esto, para recorrer la matriz con dos fors?
int fila[4];
bit fila[0]@PORTB.3;
bit fila[1]@PORTB.2;
bit fila[2]@PORTB.1;
bit fila[3]@PORTB.0;
¿¿¿???
Aclaracion: No uso CCS, sino CC5X
« Última modificación: 12 de Noviembre de 2006, 20:35:07 por aripod »