desktop

Controlar una matriz de leds con un pic 16f628a

Como serian esos delays en este caso? es decir, por cuanto tiempo? y en donde colocarlos? ya que estoy programando con pic basic del pic simulator ide
 
mirá yo te lo pongo en C vos despues lo modificas para hacerlo en basic.

Código:
rutina_antirrebote() {
delay_ms(10); // Espero 10 ms.
if(input(PIN_BO)) { // Se fija si el pin RB0 (en caso de que tengas un pulsador conectado ahí) esté presionado.
 delay_ms(10);       // En caso de que así sea espera 10 ms para que lo dejes de presoinar.
   }

}

Esta rutina la puedes modificar a tu gusto cambiandole los valores del delay a tu gusto.

Espero te sirva.
 
Buenas amigos monte el siguiente circuito de una matriz de led con el pic 16f84a y me funciono perfecto pero el pic se me daño y consegui fue un pic16F628A que supuestamente lo sustituye pero ahora no me trabaja a pesar de hacer los cambios en el programa ahora la matriz no me sale como antes adjunto el programa original para el pic 16f84 y luego el que modifique para el pic 16f628A por favor auxilio. quiero que me digan si hay algun error en el programa ya que no se mucho de programacion en asembler. o si tengo que cambiar algo en el circuito para que se adecue para trabajar con el pic 16F628A.
 

Adjuntos

  • matriz_de_led_7x32_194.rar
    97.5 KB · Visitas: 1,542
hey amigo estoy tratando de hacer alg parecido pero es que soy muy novato en esto sera que esto se puede hacer con comunicacion con el PC usando el mx232, si es posible? por favor ayudenme que estoy un poco perdido
 
ok amigo me imagino que si se puede hacer algo para hacerlo mediante la computadora la verdad yo tambien soy un poco novato, deberias buscar ayuda en el foro. esta matriz te garantizo que trabaja 100%, pero para programarle lo que dice tienes que hacerlo en el archivo .asm. el pic628a tiene entrada para comunicacion serial por la red salen varios temas de como usarla tambien hay una pagina de ucontrol donde hablan del tema con una matriz pero no dan el proyecto completo solo te dan ideas de lo que podrias hacer.dejame cuando consiga los link te los paso a ver si te sirve para algo.busca el tema sustituir pic 16f84 por pic 16f628a hay sale la matriz que hice es 100% funcional esta todos los archivos y el esquema
.
 
gracias amigo, en lo que me pueda ayudar la verdad es q he buscado muchisimo y no he encontrado nada,ademas no estoy nada familiariado con pic´s asi que esto se complica aun más, pero estoy leyendo para ver que entiendo.
le recomiendo como hacer esto con el pc

gracias
 
Hola amigos estoy haciendo ingeniería reversa de un sistema de secuenciado automático de una tira de leds (cada uno tiene tres colores) y se controlan a través de RGB con una alimentación general de 12v dc en el controlador.El tema es que los colores que se forman alimentando cada cañón pasan por una secuencia de transisción que permite ampliar la gama de colores en forma de fade out dando un aspecto muy delicado en el pasaje de los colores.Porsupuesto que cuando el color es uno de los primarios ,en ese momento dicho cañon tiene su voltaje máximo y luego este voltaje va bajando mientras sube el de los otros cañones generando asi la gama de colores.Todos funcionan con el +12 en común y varian sobre -12 en cada cañon.Me interesariá emular esto con un PIC si fuera posible ,se me ocurre que con pwm. Disculpen lo largo del mensaje pero es para aportar datos relevantes, si alguién tiene una idea de por donde debo empezar el análisis se los agradezco.Atte Pablo
 
Dayanmata.
Yo tambien estoy tratando de hacer una matriz de leds, con el PIC 16f628
La tengo funcionando , con un pequeno problema a nivel de refrescos.
pero de todas maneras se ve bien.
logro desplazar varios mensajes , que se van moviendo por los doce paneles de leds 7x7
con el cual lo hise.

siquieres podriamos cambiar información y cuando lo hayamos logrado desarrollar bien, lo podriamos postera en el Foro. ya corregido y funcionando.
 
Última edición por un moderador:
hola veo compañeros..yo necesito hacer una matriz de leds de 7*20 y no se como hacer el desplazamiento...ya puedo hacer una letra pero la verdad no se como manejar el clock de los registros 74164 que son los que me desplazan por columna ..estoy trabajando con picbasic...alguien me podria colaborar..es que los ejemplos que veo son en assembler...muchas gracias por su atencion

saludos
 
Hols a todos soy novato en esto y queria hacer un panel de leds como proyecto
pero no puedo lograr programar para qUE la matriz muestre todo un mensaje
abria alguien qUE m pueda ayudar
 
Última edición por un moderador:
necesito controlar 60 salidas para 20 leds rgb como puedo hacer esto con un pic?? en algun lado me dijeron que se puede con 4 pic 16f628 pero no tengo idea de como hacer eso alguien tiene un diagrama?? o una idea de que pic usar??
 
A que te refieres con controlar.
Encender todos a la vez?.
Encenderlos secuencialmente?.
Cuando un pic no dispone de los suficientes pines para sacar informacion, se puede multiplexar, esta informacion, tal vez si utilizas un registro de desplazamiento. con SN 74HC164 puedas controlar los 60 y hasta mas,
Aunque la salida del registro es secuencial. a la velocidad apropiada se podria dar la sensacion de todos los leds iluminadpos al mismo tiempo.
 
xaviergarvi.

Oye Hice un diagramita en Pint, Peo no he podido adjuntarlo , no se como hacerlo.
Tal vez te lo podria enviar directamente a tu Correo.
O que alguien me ensene por favor, como adjuntar imagenes y diagramas.



Mira . esta seria una de las muchas maneras de hacer lo que tu quieres.

SE podria hacer un circuito similar a este , para manejar los LEDS RGB.


Enviariamos primero un 0 a PORTB 0. Al pasar por el transistor Tendriamos a la salida 5 Volts.

Enviamos un pulso a Data por PORTA,0

Ahora Enviamos Un Clock A los SN 74HC 164 que sea nesesario para manejar la cantidad de leds que queremos, cada SN 74HC164 Maneja hasta 8 salidas * ( 8 Leds )
La ultima salida de cada SN 74HC164 se conecta al pin Data ( pin 1y2) de el siguiente SN 74 HC 164 y asi susesivamente hasta lograr la cantidad de salidas que queremos

Veamos:

Iluminare los LEDS Rojos.

BCF PORTB,0 ; Salida para primera hilera de LEDS Rojos
BCF Data ; DATA en 0
BSF Clock ; Ingresa el 0 Del DATA, sale un 0 Por la primer salida de
; el SN 74HC164.
; El primer Led Rojo Enciende, Anodo( RB0 = 5 Volts
; Katodo 0 Volts ( salida 1 del primer SN 74HC)

CALL Retardo_1ms ; Dura iluminado este Tiempo
BCF Clock ; Pongo el reloj en 0
BSF Data ; Ahora coloco DATA en 5 Voltios .y lo dejare asi hasta
; Ilumniar la totalidad de los LEDS ROJOS
CALL Retardo_1ms ‘ Se apaga el Led Durante Este Tiempo.

; Ahora bien Lo que haremos ahora en adelante es DESPLAZAR el Primer 0 ( Cero ) que introdujimos En Data, Desplazandolo por la totalidad de los SN 74HC164 que Hayamos Colocado.

BSF Clock ; Desplazo el 0 ( cero) Saldra cero por la segunda
; Salida del primer SN 74HC,
CALL Retardo_1ms : el Segundo LED ROJO ilumninara durante este T.
BCF Clock ; Cero al Clock
CALL Retardo_1ms ; Ledapagado durante este tiempo.

BSF Clock ; Asi iremos desplazando el Cero por
CALL Retardo_1ms ; Shift Register
BCF Clock ; iluminando cada led
CALL Retardo_1ms ; Hasta Completar los 60 o ma sleds.
; Cuando terminemos.
; Ahora colocaremos Cero en la salida de RB1 y
; Repetiremos lo anterior para iluminar la hilera de ; Verdes
;Esta seria una de las muchas maneras de hacer un desplazamiento secuencial para los LEDS.

#DEFINE Clock EQU PORTA,0
#DEFINE Data EQU PORTA,1

Al comienzo Coloco en alto Las salidas de PORTB, para que ninguno illumine,

BSF PORTB,0
BSF PORTB,1
BSF PORTB,2

Y para habilitar cada hilera, Simplemente Coloco un cero en la salida del PORTB correspondiente

BCF PORTB,0
Los demas PORTB seguiran en alto hasta que decida Hacerlos Iluminar.

Puedo tambien Hacer

#DEFINE Clock EQU PORTA,0
#DEFINE Data EQU PORTA,1
#DEFINE Rojo EQU PORTB,0
#DEFINE Verde EQU PORTB,1
#DEFINE Azul EQU PORTB,2

Quedaria entonces
BSF Rojo
BSF Verde
BSF Azul
Para que por ahora ninguna hilera illumine.

Para que una \hilera illumine

BCF Rojo
BCF Data
BSF Clock
CALL Retardo
BCF Clock
BSF Data
BSF Clock
Call Retardo
BCF Clock
CALL Retardo


Y ETC.
 
Hola,
pic-man,
Tu as dicho que hiciste la matriz com Quartus II en formato grafico, como en la figura http://micropic.files.wordpress.com/2008/01/ledmultiplex.png
Yo estoy empezando a utilizar Quartus II ahora, y no consigo encontrar el Symbol File de pic16f628a. Como lo as colocado en Quartus??
Muchas gracias

(Perdon que mi español no es muy bueno)

hola, no sé si ya te allan contestado tu pregunta, y te digo que tu imagen que tienes alli, nada que ver con lo que es fpga ya que nunca vas a encontrar un pic alli, el un fpga lo que tu creas es hardware y si necesitas algo tienes que programarlo y pasarlo a algo grafico en pocas palabras si quieres hacer un registro de corrimiento, memoria ram un cpu tienes que hacerlo tu mismo programando VHDL y la vdd yo casi no uso el modo grafico ya que le quita la emocion de programar un fpga y en este caso no sabria decirte que tipo de librerias alla alli y como que tipo de harware puedes encontrar, lo que si estoy seguro es que nunca vas a encontar un pic alli.
Saludos!

nota contesto tu pregunta un año despues, ya asta as de saber esto, pero detodos modos alos que lean esto apenas espero y les sirva...
 
hola a todos ,necesito de su gran ayuda amigos
esta es una matriz 7X40 lo probe en proteus funciono muy bien y arme luego el circuito, tambien el panel de leds,etc ,pero a ultimo momento perdi el codigo hex para el pic ,resulta que el sito web ya no existe,pido encarecidamente si alguien lo tuviera por favor, la idea original del proyecto es una matriz 5X24 Jose Pino (http://Josepino.com) y que luego la modifico Marcos Aguilar(http://mksdgo.homelinux.com) para una matriz 7X40 ,si no me equivoco el hex es
Código:
5MATRIZOKI17.HEX
 
gracias por contestar amigo vaco_802808 ,la ventaja de este circuito es que se puede meter el anuncio que tu quieras hasta 128 letras desplazandose,a traves del eprom del pic al momento de grabar el pic (winpic800) ,adjunto esquema que solo es para 5X24 la modificacion incluye para una matriz de 7X40 para una mejora de la visualizacion de los caracteres ,no se como lo hizo pero habilito los pines 11 y 12 (RB5 y RB6) del pic ademas adjunto el hex para 5x24 nose como se podia modificar mi fuerte es el PBP pero el assembler esta muy dificilismo ,Sds
 

Adjuntos

  • Dibujo.JPG
    Dibujo.JPG
    60.5 KB · Visitas: 405
  • JP6284.zip
    3.3 KB · Visitas: 556
Yager.
Yo creo que trabajar en base al hex de otroas personas no es muy bueno.
Ya que uno no sabe en realidad como esta trabajando el programa.
Lo primero que debes hacer es seleecionar con que pines del pic ( puerto ) vas a alimentar la matriz. Anodo o catodo?.
Para manejar una matriz de mas de 7 x40 lo mejor es uysar un registro de desplazamiento ( SN 74HC164 ) por ejemplo.
Ahora bien seleccionar por que pines del PIC vas a manejar el DATA y el CLOCK para el Shift Register.

cada shift register tiene 8 salidas por lo tanto nesesitas 5 SN 74hc164.
para el primer SN unes los pines 1 y 2 . nde ahi en adelante ... la ultima salida de cada SN 74HC debe ir al pin 1 y 2 del siguiente SN.
Los Clock los puedes conectar en serie ( todos los clock de los SN Conectados en serie.)

Si quiero ilumninar toda una hilera de LEDS ( 7 ).
Envio 7 unos o 7 ceros ( de acuerdo a como tengas polarizados los leds ).Por el PORTB
B'00000000' o B'11111110' ( anodo o catodo ?)
Ahora envio un pulso de Data desde un pin por ejemplo RA0, hacia los Pines 1 y 2 del primer SN74Hc.
Ahora envio un Clock por ejemplo por el PORTA,1. hacia el pin de clock del SN74HC.
Bien ya tenemos iluminada esta primera columna.
Ahora enviamos el siguiente dato que queremos mostrar ., lo enviamos por el PORTB B'xxxxxxxx'
YA NO ES NESESARIO ENVIAR MAS DATAS, enviamos ahora un pulso de clock.
Ya se desplazao e iluminara la segunda Columna.
De esta Forma hasta la columna 40.
para seguir enviando informacion desde la primera columna , enviamos nuevamente el dato deseado por PORTB, y AHORA SI otro Pulso de data, y uno de Reloj.
Esta clase de programa la he hecho es en ASSEMBLER, es el unico que conosco.
esto es a groso modo pero asi es como funciona la matriz ( de acuerdo a como yo las he hecho, pero claro debe haber un sin fin de maneras mas ).
Habria que ver como esta construido tu panel para tratar de ayudarte a desarrollar tu programa.
 
Atrás
Arriba