# Matriz 8x32 con PIC16F84A



## dalisss (Jul 22, 2013)

Hola a todos los que hacemos parte de Foros de Electrónica, en esta ocasión necesito de su experiencia  Por favor ayudaa!
Lo que pasa es que estoy en un proyecto de una matriz de 8x32 con el pic16F84A pero presento un problema al compilar en proteus, no me funciona y la verdad quiero primero verlo funcionando en proteus antes de reproducirlo en vida.
desde hace poco estoy con eso de la programación de pic y memorias, Como no se muchgo sobre eso descargue un .hex ya programado para el 16F84A 
pero lo grabo en el pic y nada, no se si es que tengo algo mal en el circuito o es la programación del .hex que no es la indicada
les dejo unas imágenes. una de ellas con el mensaje de error
pro favor ayuda!


























 ...


----------



## MrCarlos (Jul 22, 2013)

Hola dalisss

Lo más probable es que el archivo .hex que utilizas no sea el adecuado para tu circuito.
Tienes que desarrollar el código que esté de acuerdo con ese circuito que adjuntaste.
Luego compilarlo para generar el .hex.

Sería más fácil el ayudarte si adjuntas el archivo que se genera con tu simulador. Creo que utilizas el ISIS de proteus Versión 8. comprímelo con WinZip o WinRar y adjúntalo en tu siguiente mensaje.

Además es necesario saber que quieres que se presente en esa matriz 8x32 y el modo: que se desplace, que encienda y apague a un determinado ritmo Etc.

saludos
a sus ordenes


----------



## dalisss (Jul 22, 2013)

Gracias pro sus respuestas, si dale ahora mismo estaré subiendo el proyecto en rar



Gracias por la ayuda 
Ya estoy subiendo un Rar con el proyecto en Proteus y el .Hex



en si este proyecto lo llevo para mostrar mensajes que se vallan desplazando

Aca esta el Rar del proyecto de antemano gracias


----------



## MrCarlos (Jul 22, 2013)

Hola dalisss

Bien, Ya tenemos tu esquema, pero. . . Qué es lo que pretende que se vea en esa matriz 8x32 ??
Eso no lo sabemos todavía. Tienes el código para esa matriz ??

El .hex que tienes no te sirve pues es para otro diseño. Tú tienes que desarrollarlo de acuerdo a tu circuito.

saludos
a sus ordenes


----------



## dalisss (Jul 22, 2013)

mostrar mensajes que se vallan desplazando.
no tengo el codigo, no se todavia como programarlo, la verdad la unica programacion que conozco es lenguaje java y vb.net 
por decir que muestre Dalisss


----------



## MrCarlos (Jul 22, 2013)

Hola dalisss

He estado analizando tu esquema con la intención de hacer alguna programación para él.
Pero hay varias cosas por mejorar en ese circuito.
Hay algunas terminales para aplicar señales como por ejemplo voltaje pero las tienes programadas a cero Volts.

Los inversores que están en las salida de los 74LS138 sobran pues a la matriz le debe llegar un nivel bajo por sus terminales superiores.
La resistencia R10 para qué se supone que está ahí ??.

La terminal marcada como R(9)1 le está aplicando un nivel bajo a la entrada del PIC16F64A nombrada MCLR. Esto se debe a que esa terminal(Generador) lo tienes programado a cero Volts.
Ya con eso el PIC no funcionará.

No sé si con Java o con VB.Net se pudiera generar el archivo .HEX que requieres para ver en la matriz 8x32 el letrero *dalisss* desplazándose. Tú que dices conocer esos lenguajes, se podría generar ese .HEX con esos lenguajes ??

Hay aquí en los diferentes temas algún circuito y Código que te pudiera servir para continuar con el tuyo. Tendrías que buscar.

Voy a seguir revisando tu circuito y corrigiendo lo que me parezca fuera de lugar para luego intentar desarrollar el código.

saludos
a sus ordenes


----------



## dalisss (Jul 22, 2013)

Gracias tuve en cuenta tus apuntes, y si es verdad tenia los voltajes a cero Volts. pido disculpas por eso.  

Ya les coloque el voltaje a los tres generadores DC y le quite la resistencia R10 me di cuenta que no hace nada.

A lo que dices los inversores que están en las salida de los 74LS138 sobran no entiendo mucho ese punto me podrías explicar 

Después de estos arreglos pruebo el .Hex que descarge de unos de los foros de Foros de Electrónica pero sigue mandando errores pero ya no se si es de la programación o el circuito pero si veo que ya le llega corriente al pic pues los generadores los puse a 5v

Muchas gracias MrCarlos

Si dale me gustaría que lo sigas viendo pues se nota la experiencia que tienes en el tema. Gracias


----------



## MrCarlos (Jul 23, 2013)

Hola dalisss

Qué hay de lo que te pregunté: *Tú que dices conocer esos lenguajes, se podría generar ese .HEX con esos lenguajes ??*. . . Java o VB.Net

Lo que te puedo decir de los inversores es lo siguiente:
Las matrices de puntos así como las has colocado en tu esquema requieren un nivel bajo(0) en las terminales que están en la parte de arriba. Y consecuentemente un nivel alto(1) en las terminales que están en la parte baja.
Ahora bien, las salidas de los 74LS138 son ciertas cuando son bajas(0) pero con el inversor nos cambia ese nivel lógico haciéndolo alto(1) por lo tanto no funciona así la matriz de puntos.

Con las líneas de arriba de la matriz habilitas(0) las FILAS de ella y por las líneas de abajo habilitas(1) las COLUMNAS; le dices a la matriz que puntos enciendan de esa línea.

Normalmente se hace en el otro sentido: se habilita(1) una COLUMNA y por las FILAS se manda encender(0) determinados puntos para que se vaya viendo una figura en las matriz.
Del modo como Tú tienes conectadas las matrices en más difícil el elaborar el programa.

Juega con el archivo que te adjunto para que descubras cómo funcionan esas matrices. Ten en cuenta que el punto inferior de la extrema izquierda es: columna 0 fila 0. de ahí partimos hacia la derecha y hacia arriba hasta llegar a columna 7 fila 7.
Nota que en la matriz VERDE se notan mejor los puntos encendidos que en la matriz AZUL.

Vas a requerir algún compilador para generar el archivo .hex.

saludos
a sus ordenes


----------



## dalisss (Jul 23, 2013)

Gracias por compartir tu conocimiento!!!! 
De verdad si me esta sirviendo mucho.

Claro si se pueden generar te lo digo por que me encuentro estudiando Ing de Sistemas y se algo del tema   A su disposición cuando quiera ayuda !
Pero ademas de sistemas la electrónica es mi pasión.

Me comentas que necesito que las terminales de arriba de la matriz de punto tienen que estar en un nivel bajo (0) pero el inversor las pasa a alto(1). si bien entiendo entonces para que prenda las terminales de abajo tienen que cambiar a alto(1) para ir prendiendo la matriz.

Que me recomiendas que haga para tenerlo al revés o como es normal
que cambios debo hacerle al circuito??
Ya quisiera ver prendiendo dalisss  
A usted ya le funciono el que adjunte?

Mil gracias por su ejemplo de como jugar con la matriz esta aclarando dudas que tenia respecto al tema


----------



## dalisss (Jul 23, 2013)

Tome en cuenta tu recomendación y tengo otro circuito este de una matriz de 7x32  descargue un .Hex y funciono  manda bien el mensaje trabaja con un PIC 16F628A.


Ahora vendria la parte de la programacion no se con que programa hacer el Hex y como lo debo hacer

El que tengo lo descargue de uno de los foros.


----------



## MrCarlos (Jul 23, 2013)

Hola dalisss

Dices:
*Ahora vendría la parte de la programación no se con que programa hacer el Hex y como lo debo hacer*

Pero había dicho que si se podría con Java o VB.Net

De donde descargaste la matriz de 7X32 debe haber un archivo con terminación .C o .PBP. en ellos está el código.
Esos los puedes abrir con cualquier editor de texto para que veas lo que contiene.

Como te mencioné, vas a tener que instalar un compilador para generar el archivo .hex para poder programar el PIC.

Tienes un programador para PIC’s ??.

saludos
a sus ordenes


----------



## dalisss (Jul 24, 2013)

Hola si necesitare uno mira aca tengo el archivo pbp del que me hablaste y si lo mire con un editor de texto, la cosa es que no se como pasar ese pbp a hex.

probe copiando la programacion del pbp a MicroCode Studio pero cuando lo compilo me da el hex pero no sirve pss la matriz no enciende. tambien peobe con MPlab y paso lo mismo no se como pasar de pbp a hex, ya entiendo el pbp mas no es hex.

te dejo adjunto el programa con el pbp y el hex, eso fue lo que descargue, quiero hacer mi propio hay, si no estoy mal solo es cambiarle la frase que dice 
*"AQUI LO QUE QUIERES QUE APAREZCA EN LA MATRIZ "* 

pues mas abajo se ve como capturas cada carácter y lo convierte

le cambio esa frase por dalisss pero quedo igual ps no se comoo pasarlo a hex.

Gracias


----------



## dalisss (Jul 24, 2013)

Llevo ya tres hex y no me sirven mas si funcionan los que descargo, lo que me da a entender que lo estoy haciendo mal


----------



## MrCarlos (Jul 24, 2013)

Hola dalisss

Y Así vas a continuar mientras no sepas lo que estas haciendo.

Es muy difícil, por no decir imposible, buscar un archivo HEX que le sirva a tu circuito.
El procedimiento es crear el archivo fuente para que haga lo que quieres que haga el PIC y este es el que se compila para generar el archivo HEX.

Para compilar el archivo PBP el cual contiene el código fuente para generar el .HEX requieres Del Software nombrado *PIC Basic Pro.*
No recuerdo de donde se baja ese SoftWare; pero puedes indagar en Google.com buscando por *PIC Basic Pro*

Te adjunto el manual para que lo estudies.

saludos
a sus ordenes


----------



## dalisss (Jul 24, 2013)

si ya tengo el PIC Basic Pro y tambien tengo un Hex que le sirve al circuito tengo un software llamado MicroCode Studio PIC Basic Pro



si ya tengo el PIC Basic Pro y tambien tengo un Hex que le sirve al circuito tengo un software llamado MicroCode Studio PIC Basic Pro

Esta es la programacion que tengo solo resta pasarla a Hex me guié de un archivo pbp y su hex que funcionaron en el circuito

Mi inquietud es como pasar ese Codigo fuente a Hex


```
DEFINE OSC 4

LINEA            var byte[32]
CHAR             VAR BYTE[7]
CHAR_ACT         VAR BYTE ' puntero de caracter
CHAR_LENGTH_ACT  VAR BYTE 'puntero de la longitud del caracter
CHAR_LENGTH      var byte ' longitud de la longitud
Caracter         var byte
Counter1         var byte
Counter2         var byte
Counter3         var byte
Counter4         var byte



'declaracion de alias

DATOS            var PORTA.0
CLOCK            var PORTA.1

'Inicializacion de los datos


TRISB = 0
TRISA = 0

linea[1]=$FF
linea[2]=$FF
linea[3]=$FF
linea[4]=$FF
linea[5]=$FF
linea[6]=$FF
linea[7]=$FF
linea[8]=$FF
linea[9]=$FF
linea[10]=$FF
linea[11]=$FF
linea[12]=$FF
linea[13]=$FF
linea[14]=$FF
linea[15]=$FF
linea[16]=$FF
linea[17]=$FF
linea[18]=$FF
linea[19]=$FF
linea[20]=$FF
linea[21]=$FF
linea[22]=$FF
linea[23]=$FF
linea[24]=$FF
linea[25]=$FF
linea[26]=$FF
linea[27]=$FF
linea[28]=$FF
linea[29]=$FF
linea[30]=$FF
linea[31]=$FF
linea[32]=$FF

char_act=0
counter3=0
counter4=0
counter2=1
char_length_act = 1
low clock
low datos

DATA @0,"Dalisss" 'aca guardamos nuetro programa, es modificable al gusto
read char_act,caracter
gosub tabla_char

'inicio del programa
Inicio:

MENSAJE:
        linea[1]=char[char_length_act]
        IF CHAR_LENGTh_act = char_length  then
           char_act = char_act + 1  
Mens_Salto1:
           read char_act,caracter
           if caracter=$FF then 
              char_act=0
              goto mens_salto1
           endif   
           gosub tabla_char
           char_length_act=0
        endif   
Img:
        counter1=0
                
LineH:
         PORTB = $FF
         counter1 = counter1 + 1      'envia LA ACTIVACION del registro
         if counter1 = counter2 then  'serial paralelo
            gosub send_data0          'para activar la linea vertical
         else
             gosub send_data1
         endif
         if counter1 = 32 then goto LineV
         goto lineh
LineV:
      PORTB = LINEA[COUNTER2]    'determina la posicion activa horizontal
      pauseus 500              'y genera la activacion de los leds verticales
      if counter2 = 32 then
           counter2 = 1
         gosub send_data0   
      ELSE
            counter2 = counter2 + 1
            gosub send_data1
      endif
 
      
Shift_Left:
           if counter3 = 35 then
                counter3 = 0
                COUNTER4 = COUNTER4 + 1
                if counter4 = 2 then ' 250 del counter3 *4 del 
                
                   linea[32]=linea[31]'                   
		           linea[31]=linea[30]'
                   linea[30]=linea[29]'counter4 es aprox 0.5seg
                   linea[29]=linea[28]'si hay mas lineas 
                   linea[28]=linea[27]'hay q agrandar losvectores
                   linea[27]=linea[26]'y cambiar por un for   
                   linea[26]=linea[25]  
                   linea[25]=linea[24]  
                   linea[24]=linea[23]
                   linea[23]=linea[22]'counter4 es aprox 0.5seg
                   linea[22]=linea[21]'si hay mas lineas 
                   linea[21]=linea[20]
                   linea[20]=linea[19]'y cambiar por un for   
                   linea[19]=linea[18]  
                   linea[18]=linea[17]  
                   linea[17]=linea[16]    
       			   linea[16]=linea[15]'
                   linea[15]=linea[14]'counter4 es aprox 0.5seg
                   linea[14]=linea[13]'si hay mas lineas 
                   linea[13]=linea[12]'hay q agrandar losvectores
                   linea[12]=linea[11]'y cambiar por un for   
                   linea[11]=linea[10]  
                   linea[10]=linea[9]  
                   linea[9]=linea[8]  
                   linea[8]=linea[7]'counter4 es aprox 0.5seg
                   linea[7]=linea[6]'si hay mas lineas 
                   linea[6]=linea[5]'hay q agrandar los vectores
                   linea[5]=linea[4]'y cambiar por un for   
                   linea[4]=linea[3]  
                   linea[3]=linea[2]  
                   linea[2]=linea[1]
                   counter4 = 0
                   char_length_act = char_length_act+1
                   GOTO INICIO
                endif
            ELSE
                counter3 = counter3 + 1
            endif
            goto IMG
                      
SEND_DATA0:
           low datos
           pauseus 2
           low clock
           pauseus 2
           high clock
           RETURN

SEND_DATA1:
           HIGH DATOS
           pauseus 2
           low clock
           pauseus 2
           high clock
           RETURN

'tabla de seleccion de caracter
           
TABLA_CHAR:
    select case caracter
            case " "
                char_LENGTH=5
                char[5]=$FF
                char[4]=$FF
                char[3]=$FF
                char[2]=$FF
                char[1]=$FF
            
            case"1" 
                char_LENGTH=4
                char[4]=$FF
                char[3]=%1111110
                char[2]=%0000000
                char[1]=%1011110

            case "2"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001110
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%1011000

            case "3" 
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001001
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%1011101
    
            case "4"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1110111
                char[3]=%0000000
                char[2]=%1010111
                char[1]=%1100111
   
            case "5" 
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0110001
                char[3]=%0101110
                char[2]=%0101110
                char[1]=%0001110
    
            case "6" 
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1110001
                char[3]=%1101110
                char[2]=%0101110
                char[1]=%1000001
    
            case "7"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0001111
                char[3]=%0110011
                char[2]=%0111100
                char[1]=%0111111
    
            case "8"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001001
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%1001001
    
            case "9" 
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1000001
                char[3]=%0110110
                char[2]=%0110111
                char[1]=%1001111
                 
            case "0"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1000001
                char[3]=%0111110
                char[2]=%0111110
                char[1]=%1000001
            
            case "@"
                char_LENGTH=7
                char[7]=$FF
                char[6]=%1000001
                char[5]=%0111010
                char[4]=%0100010
                char[3]=%0101010
                char[2]=%0110110
                char[1]=%1000001    
            
            case ":"
                char_LENGTH=2
                char[2]=$FF
                char[1]=%1101011
            
            case "["
                char_LENGTH=3
                char[3]=$FF
                char[2]=%0111110
                char[1]=%0000000
            
            case "]"
                char_LENGTH=3
                char[3]=$FF
                char[2]=%0000000
                char[1]=%0111110
            
            case "A"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1000000
                char[3]=%0110111
                char[2]=%0110111
                char[1]=%1000000
            
           case "B"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001001
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%0000000
           
           case "C"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1011101
                char[3]=%0111110
                char[2]=%0111110
                char[1]=%1000001 
            
            case "D"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1000001
                char[3]=%0111110
                char[2]=%0111110
                char[1]=%0000000
                
            case "E"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0111110
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%0000000
                
            case "F"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0111111
                char[3]=%0110111
                char[2]=%0110111
                char[1]=%0000000
                
            case "G"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1010001
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%1000001
            
            case "H"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0000000
                char[3]=%1110111
                char[2]=%1110111
                char[1]=%0000000
            
            case "I"
                char_LENGTH=4
                char[4]=$FF
                char[3]=%0111110
                char[2]=%0000000
                char[1]=%0111110
                
            case "J"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0111111
                char[3]=%0000001
                char[2]=%0111110
                char[1]=%0111101
            
            case "K"
                char_LENGTH=4
                char[5]=$FF
                char[3]=%0111110
                char[3]=%1011101
                char[2]=%1101011
                char[1]=%0000000
            
            case "L"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1111100
                char[3]=%1111110
                char[2]=%1111110
                char[1]=%0000000
            
            case "M"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%0000000
                char[4]=%1011111
                char[3]=%1101111
                char[2]=%1011111
                char[1]=%0000000
            
            case "M"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%0000000
                char[4]=%1011111
                char[3]=%1101111
                char[2]=%1011111
                char[1]=%0000000
                
            case "N"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0000000
                char[3]=%1110011
                char[2]=%1001111
                char[1]=%0000000
            
            case "O"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%1000001
                char[4]=%0111110
                char[3]=%0111110
                char[2]=%0111110
                char[1]=%1000001
            
            case "P"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001111
                char[3]=%0110111
                char[2]=%0110111
                char[1]=%0000000
                
            case "Q"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%1111110
                char[4]=%1000001
                char[3]=%0111001
                char[2]=%0111101
                char[1]=%1000011
                
            case "R"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%1001000
                char[3]=%0110111
                char[2]=%0110111
                char[1]=%0000000
            
            case "S"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0111001
                char[3]=%0110110
                char[2]=%0110110
                char[1]=%1001110
                
            case "T"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0111111
                char[3]=%0000000
                char[2]=%0000000
                char[1]=%0111111
                
            case "U"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%0000001
                char[4]=%1111110
                char[3]=%1111110
                char[2]=%1111110
                char[1]=%0000001
            
            case "V"
                char_LENGTH=6
                char[6]=$FF
                char[5]=%0000111
                char[4]=%1111001
                char[3]=%1111110
                char[2]=%1111001
                char[1]=%0000111
                
            case "X"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0001000
                char[3]=%1110111
                char[2]=%1110111
                char[1]=%0001000
                                            
            case "Y"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0001111
                char[3]=%1110000
                char[2]=%1110000
                char[1]=%0001111
                
            case "Z"
                char_LENGTH=5
                char[5]=$FF
                char[4]=%0011111
                char[3]=%0100110
                char[2]=%0110010
                char[1]=%0111100
                
            case else
                char_LENGTH=5
                CHAR[1]=$FF
                CHAR[2]=$FF
                CHAR[3]=$FF
                CHAR[4]=$FF
                CHAR[5]=$FF

    end select
    return
             
                 
END
```


----------



## MrCarlos (Jul 24, 2013)

Hola dalisss

Fíjate en la imagen adjunta.

saludos
a sus ordenes


----------



## coferni1999 (Jul 24, 2013)

Si instalas mplab (que es de descarga gratis) y despues instalas pbp, podes ingresar el programa que tenes y te lo pasa a hex y tambien podes grabar el pic, todo con una version de mplab.
yo ahora no estoy en la pc que tengo eso, pero si no lo pudiste hacerlo si queres mañana me fijo si de pasartelo.


----------



## dalisss (Jul 24, 2013)

Gracias por la imagen adjunta me es muy útil 



Gracias por la ayuda si me parecería bien.
Voy a seguir los pasos de MrCarlos y pruebo el Hex pero tu ayuda también seria importante  en mi proceso de aprender la programación de PIC


----------



## dalisss (Jul 24, 2013)

Buenas tardes!

Mira gracias a tu ayuda pude conseguir lo que quería te dejo evidencias 

Solo me preocupa algo como puedes ver ya muestra el mensaje que quiera solo que en cuando compilo me aparece una advertencia y no se por que si todo va bien, me preocupa pues no se si valla a influir cuando ya lo tenga en vida 

Por que sale ???

GRacias


----------



## george.manson.69 (Jul 25, 2013)

Baja este manual,

realice un pequeño proyecto con matrices.


----------



## coferni1999 (Jul 25, 2013)

dalisss dijo:


> si ya tengo el PIC Basic Pro y tambien tengo un Hex que le sirve al circuito tengo un software llamado MicroCode Studio PIC Basic Pro
> 
> 
> 
> ...




Hola Dalisss, aca te dejo el .hex del programa que pasaste.


----------



## dalisss (Jul 25, 2013)

Gracias por el Manual en PDF lo estoy leyendo y me explican bien en si lo de la matriz
Buena esa !

Gracias por el Hex ya también se como hacerlo (Y)


----------



## MrCarlos (Jul 27, 2013)

Hola dalisss

Qué ocurrió con ese otro circuito que me mencionaste ??
Dijiste:
*Estos últimos días me la pasé estudiando la programación y ya tengo una que me va súper y no manda errores  pero tengo una inquietud*
*podríamos hablar un rato se que sabrás enseguida que es*

cual es esa inquietud que tienes ??

saludos
a sus ordenes


----------



## dalisss (Jul 29, 2013)

Tengo este código fuente que muestra los nombres o bien sea figuras pero estático, sin movimiento. Le programe para que me mostrara un dibujo y como te digo no manda error el proteus y se ve bien, con este pbp con el aprendí a hacer las letras y cuanto dibujo se me pase por la mente

Mi inquietud 

Que podría yo hacerle al código fuente para que envés de mostrar estático lo haga con movimiento de derecha a izquierda 

Te dejo adjunto el proyecto con el pbp y el hex

Gracias


----------



## MrCarlos (Jul 29, 2013)

Hola dalissss 

Lo que normalmente se hace es: 
Habilitar la 1er. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 2da. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 3er. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 4ta. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 5ta. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 6ta. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 7ma. columna en la matriz y por la filas encender los puntos que sean necesarios.
Habilitar la 8va. columna en la matriz y por la filas encender los puntos que sean necesarios.

Luego se hace un desplazamiento para los puntos que encendían en la 1er. Columna enciendan en la 2da.
F1 --> F2 --> F3 --> F4 --> F5 --> F6 --> F7 --> F8 --> F1.
O en la otra dirección:
F8 --> F7 --> F6 --> F5 --> F4 --> F3 --> F2 --> F1 --> F8.
FX solo es para hacer más cortas las líneas escritas arriba. Realmente es una variable nombrada CHAR[X], donde X es un número del 0 al 7.

Así como se mira en el PBP que me enviaste anteriormente.
Te lo adjunto ahora pero solo trae la *D* de *D*alisss definida en la Subrutina *TABLA_CHAR:*
Por Medio de la Subrutina *Shift_Left:* hacen el desplazamiento que te menciono arriba.

Nota en la Subrutina *TABLA_CHAR,* que los puntos que encenderán el la matriz son los que estén definidos como 0(Cero).
Solo tengo definida la letra D pero un poco mal hecha.

No compilé el PBP porque no tengo con que hacerlo.

saludos
a sus ordenes


----------



## dalisss (Jul 30, 2013)

Gracias por el Codigo fuente ya capte algo mas sobre el movimiento que quería y por los caracteres que hacían falta no es problema diseñe una mini aplicación en excel que me da el código binario de lo que quiera solo es dibujar ya sea letra símbolo o figura 

Aca una imagen 







Ahora bien noto algo inusual...

Noto que lo que habia escrito antes en el *DATA @0," "* Queda guardado por que lo digo mira este caso en particular 

Tengo escrito *"1234"*  en el *DATA @0," "*  como se muestra aca 






Pero a la hora de compilar el proyecto mira lo que muetra 






Muestra *BB* y esas BB fue cuando hice la letra B que la probe cuando estaba con los numeros note que todavia salia la B por que sera eso?

Ñapa 

Dejo la mini aplicación en excel para que hagan cualquier figura o letra sin complicaciones


----------



## MrCarlos (Jul 30, 2013)

Hola dalisss

*Nota que varios de tus mensajes han sido eliminados por haberlos enviado, con el mismo contenido, Más de una vez. Si lo sigues haciendo te suspenderán.*

Creo que ese efecto inusual al que haces mención solo ocurre en el simulador.
Tendrías que hacer un experimento con el circuito real para comprobarlo.

Tambien podrías hacer una prueba agregando una subrutina a tu código donde se manden puras FF a las líneas.
De este modo, probablemente, quede borrada la EEPROM.

saludos
a sus ordenes


----------



## dalisss (Jul 30, 2013)

Seria buena idea lo de la subrutina pero eso seria antes de que lea los caracteres cierto?
lo que entiendo es algo asi?
linea[0]=$FF                                       
linea[1]=$FF                                       
linea[2]=$FF                                       
linea[3]=$FF
...
...
...
linea[32]=$FF

Si es así ya esta escrito en el código fuente, si no es así entonces no se  

Ya voy a empezar a trabajar en el proyecto en vida


----------



## MrCarlos (Jul 31, 2013)

Hola dalisss

Esto que dices:
*linea[0]=$FF *
*linea[1]=$FF *
*linea[2]=$FF *
*linea[3]=$FF*
*...*
*...*
*...*
*linea[32]=$FF*

Es, digamos, borrar el contenido de las variables linea[x].
Pero de lo que se trata es de borrar el contenido de la EEPROM en el PIC.

*' DATA {@Location,}Constant{,Constant...} *
*' Escribe En La Memoria Interna Del PIC (No-Volatil EEPROM)*
*' Iniciando en la dirección @Location Lo Contenido Entre "*
*' De La Siguiente Línea.*
*DATA @0,"dalisss" *
[/COLOR] 
En la línea roja es donde están escribiendo el la memoria EEPROM del PIC lo que está entre comillas(“).
Como, aparentemente, quedan residuos de los caracteres anteriores, hay que grabar puras FF en las direcciones donde se graba tu nombre.
Serían tantas FF como caracteres tenga el texto que grabas en esa EEPROM del PIC.

Una subrutina, la primera que se ejecute sería:
*DATA @0,$FF*

Esta instrucción se ejecutaría 7 veces porque dalisss tiene 7 caracteres.
Posteriormente se ejecutaría:
*DATA @0,"dalisss" *

Que es la línea original del código.

Captaste ??

saludos
a sus ordenes


----------



## dalisss (Jul 31, 2013)

Probé la subrutina... Pero sigue con la anomalía...

Si escribo un solo carácter en el *DATA*  Me muestra los caracteres anteriores. me di cuenta de algo, digamos que escribo....

DATA @0,"dalisss" para que me lo muestre. efectivamente lo hace pero cuando llega a la ultima "s" no se repite dalisss, que debería repetirse
Sino que queda en blanco la matriz y cuando cambio el "dalisss" por 
DATA @0,"1A"  me muetra esto "1Alisss" se come los dos primeros caracteres de dalisss que fue lo anterior que tenia escrito 

Mi idea es esta si tengo "A1" que son dos caracteres cuando termine de leer el segundo caracter que es el ultimo se repita otra vez para leer el primero, con "dalisss" seria lo mismo
Cuando termine de leer el séptimo caracter que es el ultimo vuelva a leer el primero para que se repita siempre abría un ciclo


----------



## MrCarlos (Jul 31, 2013)

Hola dalisss

Cuando tu código tiene:
*DATA @0,"dalisss"*

Y compilas luego corres la simulación, la EEPROM del PIC tiene:
Dirección 0 contiene la “d”.
Dirección 1 contiene la “a”.
Dirección 2 contiene la “l”.
Dirección 3 contiene la “i”.
Dirección 4 contiene la “s”.
Dirección 5 contiene la “s”.
Dirección 6 contiene la “s”.

Luego modificas el código así:
*DATA @0,"A1"*[/COLOR]
Y compilas luego corres la simulación, la EEPROM del PIC tiene:
Dirección 0 contiene la “A”.
Dirección 1 contiene la “1”.
*Dirección 2 contiene la “l”.*
*Dirección 3 contiene la “i”.*
*Dirección 4 contiene la “s”.*
*Dirección 5 contiene la “s”.*
*Dirección 6 contiene la “s”.*

Notas que la EEPROM del PIC *continua* teniendo lo indicado en rojo ???
Por esa razón te lo muestra.

0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-
Así que si en tu código programas primero puros nivele altos –FF- en las direcciones desde la 0 hasta la 6 quedaría así:
Dirección 0 contiene la %11111111.
Dirección 1 contiene la %11111111.
Dirección 2 contiene la %11111111.
Dirección 3 contiene la %11111111.
Dirección 4 contiene la %11111111.
Dirección 5 contiene la %11111111.
Dirección 6 contiene la %11111111.
Lo Anterior como una subrutina para poderla llamar desde cualquier punto del programa.

Luego haces que se programen los caracteres dalisss en las direcciones de la 0 a la 6.
La EEPROM del PIC estará “Limpia”; con puros unos. Recuerda que para que encienda un punto en la matriz requerimos que ese BIT sea 0.

Si la longitud de la palabra cambia, la cantidad de direcciones a programar con 1’s también cambiará.
“Dalisss” tiene una longitud de 7 caracteres.
“Hola dalisss” tiene una longitud de 11 caracteres.
Así que la cantidad de *direcciones *con FF, en este caso sería de 11, de la *0 a la 10*(Dec) de la *0 a la A*(hex).

Captaste ???.

Desafortunadamente no tengo con que compilar ese archivo PBP del cual hemos estado hablando.

saludos
a sus ordenes


----------



## dalisss (Jul 31, 2013)

Puedes mandármelo yo lo compilo y así lo miro tambien



Entiendo lo que dices y si le pongo lógica tiene sentido lo que veo es que no se como aplicar eso en el código


----------



## MrCarlos (Jul 31, 2013)

Hola dalisss

No tengo el archivo de código completo. Inclusive ya está muy modificado.

Sería más o menos así:

En el archivo de código que tienes has estos cambios:

*A)-* Agrega esta línea donde están definiendo las variables counter1, counter2, counter3, counter4.
*Counter0        VAR BYTE                       ' Nueva variable para GOSUB borrar*


*B)-* Antes de donde tienes esta instrucción:
*DATA @0,"dalisss"*

Inserta la siguiente Línea.
*GOSUB borrar                            ’*

*C)-* Esta es la subrutina nombrada borrar:
Colócala al final de tu código, antes de END.
*borrar:                                             '  Inicio de la subrutina para borrar la EEPROM del PIC*
*   FOR Counter0 = 0 T 6                  '  Borrará 7 direcciones iniciando en la 0.*
*      data $FF                                    '  borra la dirección 0 si es el primer ciclo, después va aumentando*
*   NEXT counter0                             '  Apunta a La dirección que sigue.*
*RETURN                                           '  Regresa a una línea después de donde lo mandaste para acá.*

*D)-* Compílalo y esperemos que funcione.

saludos
a sus ordenes


----------



## dalisss (Jul 31, 2013)

MrCarlos por algo no dude de ti sos grande  

Todo Anda a la normalidad con las ultimas indicaciones que me diste 

Full agradecido 

En estos días comienzo con el proyecto en vida los avances lo voy a ir publicando


----------



## dalisss (Ago 1, 2013)

Mira como va 

Mira esta secuencia 









































Y asi serepite...
Notas que en el mensaje aparece un espacion en blanco de izquierda a derecha?  

Por que se originara??.  el pbp lo tengo en OSC 20  y el PIC16F628A en 10MHz ademas de ciolocarle un cristal y dos condensadores 






Si se los quito es lo mismo... no se ve muy bien


----------



## MrCarlos (Ago 1, 2013)

Hola dalisss

Este efecto y el anterior –escribir caracteres mensaje anteriores- es defecto del ISIS de Proteus.

El cristal y los componentes relacionados se ponen solo para que al hacer el PCB salgan las pistas(Venas) y los agujeritos para colocarlos.

En el archivo de tu código y en la simulación debes programar la misma frecuencia.

saludos
a sus ordenes
PD: procura no adjuntar tantas imágenes, esto hace el tema extremadamente grande. Pero no es una prohibición.


----------



## dalisss (Ago 7, 2013)

Recién comencé con el proyecto en vida me decidi a quemar el PIC16F628A con una  Pickit2  y su respectivo software pero a la hora de borrar el pic en el boton *Erase* me aparece este mensaje 

*This device requires a minimum VDD of 4.5V for bulk erase operations"*

Al igual que a la hora de grabar *Write*

Monte todo en una protoboard blanca pero lo puse a correr y no prendió y aveces espabila la matriz la hice de 8x24 leds, no se que sera

El *PIC16F628A* lo alimento con 5v  *pin 5 -* pin 6 +

los dos 74HC04 * lo alimento con 5v  pin 7 - pin 14 +

y el 74HC164 tambien 5v  pin 7 - pin 14 +

no se que este pasando???

Ademas de alimentar el pin 9 de los 74HC164 con 5v +*


----------



## MrCarlos (Ago 7, 2013)

Hola dalisss

Para polarizar los circuitos integrados, incluyendo el PIC, te basaste en sus hojas de datos ??

El PIC, para programarlo, requiere de cierto voltaje en su PIN nombrado *PB4/PGM*
Fíjate en la imagen adjunta.

saludos
a sus ordenes


----------



## dalisss (Ago 7, 2013)

Hola Mr Carlos

No entiendo mucho a que te refieres, Ayuda!! 
el voltaje se lo coloco a la hora de programar? 
En que pata y como lo coloco?



Para la polarización Me guíe de estas imagenes que encontre en la Web


----------



## dalisss (Ago 7, 2013)

Ms Carlos 

Ya entendi lo que me querias decir con el voltaje del pic cuando borraba o grababa el pic lo hacia con 2,5 vcc lo corregi y lo puse en 5,0vcc y no me dio mas la advertencia

tengo ademas otra inquietud de las cientas que tengo ahora mismo, yo coloco el crystal en los pines 16 y 15 ademas de en cada uno un condensador de 27pF  y el otro extremo en negativo así es que va?

Ademas no me sigue  prendiendo noto que...
Cuando le paso el dedo por el crystal y el pic enciende la matriz pero prende toda y no mustra ningun mensaje 

Estoy trabajando con una protoboard blanca programe un hex 8x8 para que me sea mas facil y asi menos cable 

te dejo unas imagenes


----------



## MrCarlos (Ago 8, 2013)

Hola dalisss

Es difícil distinguir en el ProtoBoard una conexión errónea o falta de ella.
No distingo si los capacitores del cristal están conectados efectivamente al negativo de la fuente.

saludos
a sus ordenes


----------



## dalisss (Ago 8, 2013)

Si claro lo tengo a negativo y le suministro 5v


----------



## dalisss (Ago 8, 2013)

Aunque el crystal es de 4Mz no se si eso influya.

Decidi montarlo de nuevo en el protoboard pero esta vez solo le puse dos leds en las salidas pero no prendieron


----------



## MrCarlos (Ago 8, 2013)

Hola dalisss

Supuestamente la frecuencia del cristal está bien.

Realmente no se que esté ocurriendo, pueden ser tantas cosas: una(s) conexión(es) erróneas. Falta de alguna conexión. Falsos contactos. En fin, no se que esté ocurriendo.

saludos
a sus ordenes


----------



## alextenorio1992 (Sep 13, 2013)

Hola, soy nuevo en esto de los microcontroladores y me interesa mucho lo que son las matrices leds... Ya que la programacion esta para hacer una matriz de 8 * 32, quise hacer una de 16 * 16, y me dijeron el pic 877 que tiene mas salidas. Basandome en la programacion que esta en esta pagina. Se podra aumentar las filas? La verdad no manejo mucho de programacion, y no sabria donde esta la seccion de las filas, es un poco mas facil ver donde esta las columnas. Ojala me puedan ayudar.


----------



## Chico3001 (Sep 14, 2013)

Un proyecto de matriz de leds requiere conocimientos medios a avanzados en microcontroladores... ya que no es solo encender y ya, requiere mantener ciertos tiempos precisos y cuidar que no se acabe la memoria para poder lograr ciertos efectos, ademas de evitar que el micro se sature de trabajo y pueda hacer otras cosas

Sin esos conocimientos nunca vas a poder aumentar o modificar una matriz de leds... a lo mas que puedes aspirar es a copiarla

te recomiendo que leas tutoriales y aprendas bien de programacion de microcontroladores antes de intentar modificar una, de lo contrario nunca vas a encontrar porque esta fallando la matriz

http://www.neoteo.com/tutorial-programacion-de-microcontroladores-2767/


----------



## baterod3 (Dic 24, 2014)

Hola alguien que me ayude a configurar mi programa, solo quiero hacer una secuencia de 16 luces con dos integrados 74hc164



echame una manito con mi conhfiguracion de dos 74164 una secuencia de luces


----------



## arturobuffon (Ene 16, 2015)

Saludos tengo problemas con mi matriz de leds,el problema es el siguiente, cuento con un archivo pbp, en este archivo se puede modificar el texto a mostrar, al compilarlo con MicroCodeStudio no marca ningún error en la compilación, y al volver a cargar el archivo .HEX en la simulación en Proteus ya no despliega nada  .
Espero me puedan ayudar, saludos


----------



## D@rkbytes (Ene 16, 2015)

¿Y dónde está el código fuente y la simulación?
Necesitas adjuntarlos dentro de un archivo comprimido.


----------



## arturobuffon (Ene 16, 2015)

Saludos D@rkbytes agrego los archivos, espero puedas ayudarme  , ya eh modificado el programa y lo compilo pero al cargar el archivo hexadecímal no me corre la simulación


----------



## MrCarlos (Ene 16, 2015)

Hola arturobuffon

Lo que ocurre con tu circuito es que lo alambraste Incorrectamente.
El programa parece estar bien.
Compara tu diseño (ISIS de Proteus) con el que te envío contenido en el documento .PDF.
Ese circuito es el que está en el mensaje #12 de este mismo tema.

Espero te sirva.

saludos
a sus ordenes


----------



## D@rkbytes (Ene 17, 2015)

arturobuffon dijo:


> Saludos D@rkbytes. Agrego los archivos, espero puedas ayudarme  , ya he modificado el programa y lo compilo, pero al cargar el archivo hexadecimal no me corre la simulación.


Encontré algo que puede ser la causa.
El programa corre a 4MHz pero la simulación a 20MHz y el registro CMCON no estaba configurado para desactivar los comparadores.

También realicé otros cambios al programa para mejorarlo un poco.
No lo he probado físicamente porque no tengo 4 CI 74HC164 ni los panel de LED.
Notarás que se ve como si se apagaran algunos LED mientras se va desplazando el texto, espero que eso no ocurra físicamente.

Y como menciona MrCarlos, yo también tuve que modificar el circuito del diseño que subiste.

Suerte.


----------



## arturobuffon (Ene 17, 2015)

Muchas gracias, MrCarlos y D@rkbytes. Ya corregí el circuito.

El programa lo estaba compilando y me salieron un par de errores.
Tal vez sea por la versión del MicroCode Studio que estoy ocupando.

Los errores que me arroja el programa son los siguientes:

illegal opcode (PIC16F628A)
illegal opcode(HS_OSC)


----------



## D@rkbytes (Ene 17, 2015)

Eso ocurre cuando la compilación se realiza usando MPASM
¿Estás usando una versión de Windows superior a XP?


----------



## arturobuffon (Ene 17, 2015)

si en windows 7, probare en un equipo con windows xp muchas gracias D@rkbytes


----------



## arturobuffon (Ene 18, 2015)

Saludos D@rkbytes el problema quedo solucionado, si era por la version de windows que estaba utilizando, por otra parte para mi bolsillo esta muy caro utilizar las matrices de leds, asi que opte por ocupar leds, segui esta lógica pero no prenden  espero puedas ayudarme


----------



## D@rkbytes (Ene 19, 2015)

arturobuffon dijo:


> Por otra parte para mi bolsillo está muy caro utilizar las matrices de leds, así que opté por ocupar leds.
> Seguí esta lógica pero no prenden.


Tienes mal la conexión de Q7, el colector debe ir hacia los cátodos de la fila de arriba y está conectado sobre la línea o columna del pin 13 de U4.
Y los pines de reset no tienen conexión.

Prueba ese diseño físicamente porque en el simulador no se va a poder de esa forma.
Sería mucha carga para el simulador porque son muchos componentes trabajando en modo análogo.
En dado caso que se cambiara su estado a digital, tampoco creo que pueda funcionar la simulación.

Otro detalle: Según la hoja de datos del 74HC164, entrega 25 mA por pin.
Suponiendo que cada LED consuma 10 mA y al ser 7 LED ya serían 70 mA de consumo por línea cuando se enciendan todos.

Los LED comunes de alto brillo de 5 mm. consumen alrededor de 8.84 mA con una resistencia de 330Ω y a 5 Voltios, ya casi los 10 mA. (Pero depende del fabricante.)

Si físicamente no logras encender los 7 LED, tendrás que usar un buffer por línea en el 74HC164.
Pero recuerda que la salida debe seguir a la entrada para que no tengas problemas por inversión de polaridad.


----------



## arturobuffon (Ene 19, 2015)

Estas en lo correcto ademas de que tenia mal conectados los leds, ahora ya prenden, pero como lo mencionas el brillo no es suficiente, pienso colocar transistores bc547 en las filas para aumentar el brillo, crees que sea necesario colocar transistores también en las columnas?  te envío la simulación.
Saludos.


----------



## D@rkbytes (Ene 20, 2015)

Ahora quitaste los transistores e invertiste los LED. Así no funcionará porque quedará invertido el funcionamiento.
Debes dejar los transistores a la salida del PIC y colocar un buffer por cada salida del 74HC164

También debes tener en cuenta la corriente que puede entregar el microcontrolador y el 74HC164.
Ambos pueden entregar 25mA aproximadamente por pin.

Corriente de salida por pin para el PIC16F628A

Corriente de salida por pin para el 74HC164


Como nunca he usado ni he tenido en mis manos una matriz de LED comercial, no sé si éstas tengan resistencias internas por cada LED. (Esto sería una gran ventaja.)
Pero al realizar una matriz sin resistencia por LED, esto se puede convertir en un problema al usar un buffer.
¿Por qué? Porque cuando únicamente se encienda un LED, la corriente será de 10mA, pero cuando se enciendan 3 o más LED's en la columna, entonces la corriente será mayor.
Y aquí es donde entra el problema con el valor de la resistencia limitadora de corriente.
Posiblemente colocar una resistencia en el emisor de cada transistor sea la solución, pero nunca he hecho la prueba.

Tal vez alguien que haya realizado una matriz con LED's independientes nos pueda explicar sobre esto.

Por ahora adjunto un buffer con transistores que puedes usar para hacer pruebas, ya que no es inversor.
También adjunto una matriz de LED's 8x8 para que entiendas su funcionamiento. (Ambos se pueden simular.)

Suerte.

Edit:


			
				D@rkbytes dijo:
			
		

> Posiblemente colocar una resistencia en el emisor de cada transistor sea la solución, pero nunca he hecho la prueba.


No me quise quedar con la duda acerca de esto y he realizado una prueba satisfactoria.
Al colocar una resistencia de carga de 82Ω en el emisor de Q3, la corriente se mantuvo casi constante desde 1 LED hasta 10 LED's, alrededor de los 9.42 mA.
La intensidad de iluminación apenas variaba cuando se encendía del quinto LED en adelante, y no muy notorio visualmente.

Adjunto el sistema que probé físicamente y que funciona perfectamente como buffer.​


----------



## washington14 (Ene 21, 2015)

He visto la simulación*Matriz_de_leds_7x32*en cámara lenta.
La forma como utiliza los buffers no es lo correcto, no me refiero a la conexión sino a la forma como multiplexa, pierde bastante tiempo en hacer un barrido en la simulación, es por eso que se ve como parpadeando.
Además de eso, está utilizando un barrido vertical.
Lo malo de este barrido es que los leds pierden brillo por que están encendidos unos microsegundos debido al tipo de barrido, además que eso te limita a poder poner mas matrices.

El gran problema de estas matrices, es que a mayor cantidad de columnas o filas, necesitas mayor velocidad en el microcontrolador que vas a utilizar  y la vez pierdes brillo en los leds.
Si te pones a pensar en el tiempo que empleas para que este encendido el led, es muy corto y mientras más leds tengas, es más corto el tiempo de encendido del led.

He trabajado con matrices de 8x128 y 16x32. ¿Alguien se anima a mejorarla o dar sugerencias?
Uso barrido horizontal.


----------



## arturobuffon (Ene 21, 2015)

Saludos, Washington14. ¿Qué me recomendarías realizar para poder cambiar el barrido?
Estoy haciendo el armado en físico de la matriz 7x32. En cuanto la termine subiré mis resultados.


----------



## washington14 (Ene 22, 2015)

arturobuffon saludos para voz también:

Primero me gustaría saber si voz programas y si lo haces en que IDE lo haces. bueno para
que hagas el barrido horizontal que es mucho mas mejor que el barrido vertical. el barrido vertical se basa en enviar los datos del microcontrolador a la matriz paralelamente sin embargo el barrido horizontal se envían los datos serialmente así los registros de desplazamientos. 

en cuanto subas tus resultados y simulación y programa puedo sugerirte unos tips


----------



## arturobuffon (Ene 23, 2015)

estoy utilizando el software MicroCode Studio que genera un archivo pbp y al compilar genera el .hex que es el que cargo en el pic, te adjunto los circuitos y el programa estan en el mensaje 50 de este hilo, en la página 3 saludos.


----------



## arturobuffon (Feb 8, 2015)

saludos a todos, arme el circuito físicamente y prende solamente la mitad  (8x16) las demás columnas no prenden, ademas de que no corre el programa, en breve adjunto las imagenes, no se si sea falla de los registros de corrimiento adjunto las imagenes, espero puedan ayudarme


----------



## D@rkbytes (Feb 9, 2015)

¿Revisaste bien las conexiones y continuidad de los cables?
¿Cambiaste de lugar las matrices?
¿Llegan pulsos a los 74HC164 de las matrices que no encienden?
¿Mediste voltajes en los circuitos integrados y en las matrices?

Si prende la mitad y se desplazan, también deberían prender las otras.


----------



## arturobuffon (Feb 9, 2015)

Si medí el voltaje de cada uno de los registro y todos tienen sus respectivos 5V respecto a los pulsos no sabría como medirlos, ¿tal vez con un led en el pin? el problema es que no se desplaza el texto simplemente al alimentar el circuito prenden los leds de la mitad de la matriz, no cambian.
La continuidad la medí y no hay ningún problema, las matrices no las eh cambiado, las cambiare de lugar.
Tal vez es algo del programa pero no lo creo el cristal es de 4 MHz tanto en el programa como en el circuito.
Espero puedas ayudarme


----------



## D@rkbytes (Feb 9, 2015)

Por la velocidad de operación, con un LED posiblemente no logres ver si existen pulsos.
Necesitas una punta lógica o un osciloscopio.

Revisa bien la continuidad y correspondencia de las pistas, recuerda que es un circuito en serie,
así que los datos de un chip van pasando al siguiente, del pin 13 pasan a los pines 1 y 2 del que sigue y así.
Los pulsos de reloj deben llegar a todos los 74HC164 por el pin 8 y el pin 9 de reset debe ir hacia +5V.

También comprueba los circuitos integrados cambiándolos de lugar.
Y sería conveniente que adjuntes el diseño del circuito impreso para revisarlo.


----------



## arturobuffon (Feb 9, 2015)

Saludos D@rkbytes te adjunto los archivos que me pediste, todos los circuitos 74hc164 tienen alimentación de 5V, falta revisar que el pic envíe información


----------



## D@rkbytes (Feb 9, 2015)

¿Qué no, los transistores Q1 a Q7, deben ser NPN y con el emisor a negativo?
O sea, así: Y no, así:

Te menciono esto porque así están funcionando en el diseño de ISIS.
Se envía un 1 para que aparezca un 0 en la salida, que en este caso sería el colector del NPN.


----------



## arturobuffon (Feb 10, 2015)

Saludos ya estoy modificando lo de los transistores, tenias razón, en cuanto lo termine subiré mis resultados muchas gracias


----------



## arturobuffon (Feb 11, 2015)

Saludos D@rkbytes tenias toda la razón, ahora el problemas es que no despliega el texto  , tanto en el programa como físicamente el cristal esta de 4 MHz, al compilar todo correcto, pero al cargar el programa y colocarlo en la placa saca los siguientes resultados.


----------



## D@rkbytes (Feb 12, 2015)

arturobuffon dijo:


> Tanto en el programa como físicamente el cristal está de 4 MHz.


Entonces aquí hay un problema.
La simulación está ejecutándose a 20MHz porque se supone que a esa frecuencia debe ejecutarse el programa.

Prueba compilando el programa a 20MHz y cambia el cristal también.


----------



## arturobuffon (Feb 12, 2015)

Saludos  D@rkbytes, he modificado el promagrama para que corra a 20 Mhz, el cristal es de 20 Mhz, al problema ahora es que no prende ningun led, probe poner un transistor como amplificador para ver si asi prendian pero no lo hacen, creo que esta mal la configuración de mis led's te adjunto una imagen de como los tengo, un compañero me dijo que deben de ir al reves

se mwe olvido mencionar que he probado cambiando el cristal a 4MHz y 16MHz


----------



## D@rkbytes (Feb 12, 2015)

La primer imagen es la correcta y la segunda no, porque tiene los LEDs en paralelo.
En el segundo esquema estás confundiendo las columnas y las filas.
Las columnas son los LEDs que están en posición vertical y las filas son los que están horizontalmente.

Las debes armar como el esquema de esta imagen:


----------



## arturobuffon (Feb 13, 2015)

D@rkbytes dijo:


> Las debes armar como el esquema de esta imagen: Ver el archivo adjunto 125093



asi es como los tengo conectados ya prendentodos, ahora el problemas es que aunque tengo el mismo cristal (20MHz), tanto en el programa como en la placa no muestra ningun caracter


----------



## D@rkbytes (Feb 14, 2015)

¿Exactamente que código y esquema estás usando ahora?
Porque en el _post #68_ subiste la simulación que mostraba el desplazamiento al revés pero sin el código.


----------



## arturobuffon (Feb 14, 2015)

Saludos D@rkbytes mira los códigos y simulaciones que utilizo los adjunto a continuación, en el ejemplo1 solo se quedan prendidos todos los leds  , mientras que en el ejemplo2 parpadean los leds y si se nota el desplazamiento de izquierda a derecha pero no muestra ningún carácter  
Agradezco mucho tu ayuda creo que ya estoy a punto de terminar este proyecto 
Se me olvidaba, las resistencias del 74hc164 son de 330 ohms y las de los transistores son de 1 kilo ohm, tal ves esto interfiera en el funcionamiento


----------



## D@rkbytes (Feb 14, 2015)

Prueba con esta otra modificación al programa, ahora usando matrices 8x8
Al parecer el problema es con el retardo que existe dentro de la rutina "LineaV"
Puedes hacer pruebas modificando su valor dentro del rango de 500us hasta 2ms.

También adjunto un pequeño programa para crear las fuentes de esta matríz de LEDs.

Para saber lo que mencionas sobre las resistencias, es necesario que adjuntes el esquema de conexión.


----------



## arturobuffon (Feb 15, 2015)

Te adjunto el esquemático de como tengo conectadas las resistencias, tanto de las salidas de los 74HC164 y las salidas del PIC.
En breve probaré modificando la velocidad.

Muchas gracias.


----------



## D@rkbytes (Feb 15, 2015)

arturobuffon dijo:


> Te adjunto el esquemático de como tengo conectadas las resistencias, tanto de las salidas de los 74HC164 y las salidas del PIC.
> En breve probaré modificando la velocidad.


OK. Al parecer siempre sí va a ser necesario que se usen transistores PNP.
No me había tomado el tiempo de analizar bien como es que estaba funcionando esta matríz y esto fue lo que me causó confusión.
Esas matrices tienen los ánodos hacia arriba y por lo tanto requieren tensión positiva.

Las resistencias están bien de valor pero puedes probar colocando una  sola resistencia de 330 Ω en el emisor y los 74HC164 los conectas  directamente.

Realicé una modificación al programa y al diseño, invirtiéndolo para que funcione usando transistores NPN, pero en este caso las columnas deberán ser los cátodos.
Ahora por lo menos ya me quedó más claro como es que está funcionando esta matríz.
Ya me imaginaba que algo tenía que estar invertido por lo que has comentado, y ahora lo entiendo.


----------



## arturobuffon (Feb 15, 2015)

Entonces ¿tendría que modificar la placa de los leds invirtiendo la posición de estos para que queden de esta forma?


----------



## D@rkbytes (Feb 15, 2015)

arturobuffon dijo:


> ¿Tendría que modificar la placa de los leds invirtiendo la posición de éstos para que queden de esta forma?


No. Olvídate de poner los LEDs en paralelo.
Esta es una matríz 8x8 con los ánodos en las columnas: 

Y esta otra, tiene los cátodos en las columnas: 

Fíjate bien que ninguno de los LEDs está conectado en paralelo.

Puedes usar ambas, el asunto está en como se controlen.

Por los ánodos deben recibir voltaje positivo y por los cátodos voltaje negativo:


----------



## arturobuffon (Feb 16, 2015)

saludos D@rkbytes, realice una matriz de 8x8 con cátodos a columnas y realice la conexión en el proboard, lo que pasa es que se prenden todos los leds, al resetear el pic parpadean muy rápido y sin notar algún caracter cambie la veocidad a 1, 2 y 3 ms no se como utilizar los us (micros segundos), mi cristal es de 20 Mhz
Anexo el circuito que utilice para la matriz de 8x8, al parecer esta bien


----------



## D@rkbytes (Feb 16, 2015)

¿Y ahora que los paneles tienen los cátodos en las columnas, qué programa estás usando?
¿Ya verificaste que los 74HC164 estén funcionando?
Si no tienes una punta lógica, puedes usar un LED.
Para el programa del post #68 debes colocar el cátodo en cualquier pin de salida del 74HC164 y el ánodo hacia positivo.
Con esto deberás ver que el LED destella rápidamente, y si colocas el ánodo en cualquier pin del puerto B, deberás ver que destella más lento.
Y para el programa del post #80 es lo contrario, el ánodo hacia cualquier pin de salida del 74HC164 y el cátodo hacia negativo o hacia cualquier pin del puerto B.

Recuerda que debes tener en cuenta la polaridad con la que se están controlando los LEDs.

Otro detalle: La velocidad de desplazamiento se ajusta con el rango del "Contador3" (Está en 35)
Es en esta parte del programa:

```
Shift_Left:
    If Contador3 = 35 Then
        Contador3 = 0
        Contador4 = Contador4 + 1
        If Contador4 = 2 Then
        ...
```
Para usar microsegundos en PICBasic Pro, se usa: *PauseUS*

Creo que tendré que comprar o armar un panel 8x8 para ver que hace esta matríz físicamente.


----------



## arturobuffon (Feb 16, 2015)

Pues ya lo eh intentado, la matriz de cátodos a columnas con el programa de LEDs 4x64 v2 pero no prende nada, mas bien no se nota algún caracter


----------



## D@rkbytes (Feb 16, 2015)

arturobuffon dijo:


> Pues ya lo he intentado, la matriz de cátodos a columnas con el programa de LEDs 4x64 v2 pero no prende nada, más bien no se nota algún caracter


¿Ya probaste cada fila con su columna independientemente? 
¿Realizaste la prueba de funcionamiento de los 74HC164?

Verifica si les hace falta corriente a los LEDs disminuyendo el valor de las resistencias.
Las comprobaciones no son complicadas pero si necesitas tener algo de noción y conocimientos para determinar por qué no enciende.


----------



## arturobuffon (Feb 17, 2015)

D@rkbytes, ya realice las pruebas de la matriz aislada del circuito de control, la prueba a las salidas del 74hc164, solo funciona cuando utilizo el programa con un cristal de 4MHz obteniendo en cada salida 2.2v pero cuando ocupo un cristal de 16 o 20 Mhz la salida del 74hc164 se encuentra en los milivolts, tal vez sea un problema de fecuencia o bien de corriente.
Todo el circuito lo estoy alimentando con una fuente de 5 volts a 1 ampere


----------



## D@rkbytes (Feb 17, 2015)

arturobuffon dijo:


> D@rkbytes, ya realicé las pruebas de la matríz aislada del circuito de control, la prueba a las salidas del 74HC164, sólo funciona cuando utilizo el programa con un cristal de 4MHz, obteniendo en cada salida 2.2v pero cuando ocupo un cristal de 16 o 20 Mhz, la salida del 74HC164 se encuentra en los milivolts, tal vez sea un problema de frecuencia o bien de corriente.
> Todo el circuito lo estoy alimentando con una fuente de 5 volts a 1 ampere


Estuve realizando una pruebas físicamente con algunos LEDs y pude comprobar lo siguiente:
El circuito y el programa del _post #80_, no funciona. Se mantienen los LEDs encendidos.
En vez de realizar una conmutación completa, existe variación de intensidad, así que ese circuito queda descartado. (Es el circuito con transistores NPN)

El circuito y programa del _post #78_ usando transistores PNP, si funciona, pero el 74HC164 no tiene la suficiente corriente para alimentar los LEDs.
A partir del consumo de dos LEDs ya empieza a atenuarse el brillo, y es por lo que comenté en el _post #59_

Entonces, para que esta matríz funcione, también será necesario agregar un buffer a cada salida de los 74HC164.
Este buffer no debe ser inversor y se tendría que usar el adecuado. (Debe entrar y salir un 0)

Como parte del tema, adjunto una matríz de LEDs 8x8 que actúa como la que tiene ISIS por defecto, pero está diseñada con LEDs independientes.
Al ser 64 LEDs la sobrecarga en ejecución es elevada, por lo que se tienen que precargar los switchs  y después ejecutar la simulación.

En este diseño se puede ver como están conectados internamente los LEDs de la matríz 8x8 de Proteus, y sirve para entender su funcionamiento.


----------



## arturobuffon (Feb 17, 2015)

saludos D@rkbytes, entonces quedaría de la siguiente forma?


----------



## D@rkbytes (Feb 17, 2015)

arturobuffon dijo:


> saludos D@rkbytes, entonces quedaría de la siguiente forma?


No. Recuerda que un LED se conecta con el ánodo a positivo y el cátodo a negativo.
Ver el archivo adjunto 125241 
Tienes que invertir todos los LEDs y hará falta un buffer no inversor en los 74HC164.​


----------



## arturobuffon (Feb 17, 2015)

ok perdon, es que en la simulación que adjunte no es la correcta los anodos a columnas y los catodos a filas, con respecto al buffer eh pensado en utilizar el 74hc244 crees que con este baste aunque tendria que poner dos buffer's por cada registro de corrimiento 74hc164


----------



## D@rkbytes (Feb 18, 2015)

arturobuffon dijo:


> Con respecto al buffer, he pensado en utilizar el 74HC244.
> ¿Crees que con este baste?


No. 35mA de corriente por pin según la hoja de datos, no son suficientes.
Un ULN2003 quedaría muy bien, pero es inversor.
Esta es una posible y funcional opción:


----------



## arturobuffon (Feb 19, 2015)

Saludos, te cuento como voy, ya pude desplegar el texto, pero sale invertido, los LEDs que tienen que estar prendidos, están apagados y viceversa, otra cuestion, probe el codigo que me mandaste y funciona, pero cuando lo modifico y compilo me marca error en estas lineas de código

```
#Config
	__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF
#EndConfig
```

aparece como sintax error.
 Y al ponerlos como comentario si me deja compilar pero físicamente no da resultado,


----------



## D@rkbytes (Feb 19, 2015)

arturobuffon dijo:


> Te cuento como voy. Ya pude desplegar el texto, pero sale invertido, los LEDs que tienen que estar prendidos, están apagados y viceversa.


Entonces realiza una prueba modificando las letras con los bits invertidos.
He subido dos programas para generar las letras, uno invierte los bits y el otro no.
Ve cual te sirve para ahora invertir los bits de las letras.


arturobuffon dijo:


> Otra cuestión; probé el código que me mandaste y funciona, pero cuando lo modifico y compilo, me marca error en éstas líneas de código:
> 
> ```
> #Config
> ...


Ese error es porque esa palabra de configuración es para compilar el programa usando PBP3.
Mira en la cabecera del programa que también está la palabra de configuración para PBP 2.60x.
Se encuentra comentada con "*;*", descoméntala y comenta o elimina la de PBP3.

Tendrá que quedar de esta forma:

Esto es en el caso de usar PBP 2.60x y sin compilar con MPASM.


----------



## arturobuffon (Feb 19, 2015)

Gracias D@rkbytes, ahora el problema es el siguiente, al cambiar la cabecera me sigue marcando error como se muestra en la imagen *cuatro* la configuracion de MicroCode Studio se observa en las imagenes *uno, dos y tres*

con respecto al código lo modifique de para que se invirtieran los LEDs
En tu código esta de esta forma

```
Case "1" 
            Char_Length = 8
			Char[8] = %11111111
			Char[7] = %11111111
			Char[6] = %11111110
			Char[5] = %00000000
			Char[4] = %10111110
			Char[3] = %11111111
			Char[2] = %11111111
			Char[1] = %11111111
```

y yo lo puse de esta forma para invertirlos


```
Case "1" 
            Char_Length = 8
			Char[8] = %00000000
			Char[7] = %00000000
			Char[6] = %00000001
			Char[5] = %11111111
			Char[4] = %01000001
			Char[3] = %00000000
			Char[2] = %00000000
			Char[1] = %00000000
```

Pero al compilarlos me marca error, solo compila cuando comento ambas cabeceras pero fisicamente no trabaja, solo en la simulación


----------



## D@rkbytes (Feb 19, 2015)

arturobuffon dijo:


> Gracias D@rkbytes, ahora el problema es el siguiente, al cambiar la cabecera me sigue marcando error como se muestra en la imagen *cuatro* la configuración de MicroCode Studio se observa en las imágenes *uno, dos y tres*
> Pero al compilarlos me marca error, solo compila cuando comento ambas cabeceras pero fisicamente no trabaja, solo en la simulación


Recuerda que ya te había dicho el motivo de ese error:


D@rkbytes dijo:


> Eso ocurre cuando la compilación se realiza usando MPASM


Y comentaste que estabas usando Windows 7 pero que ibas a usar Windows XP.


arturobuffon dijo:


> Sí, en Windows 7. Probaré en un equipo con Windows XP


Para establecer los fuses en Windows 7 usando MPASM, mira el siguiente post:
_*Configuración de fuses en PICBasic Pro usando MPASM*_


----------



## arturobuffon (Feb 20, 2015)

Que version de MicroCode Studio me recomienda instalar en mi máquina con XP? 
acabo de actualizar mi máquina le puse Windows XP, espero me puedas ayudar con la version indicada para esa máquina.
Seria la misma que tenia anteriormente o tú cual me recomendarias?
Gracias


----------



## D@rkbytes (Feb 20, 2015)

Te recomiendo la versión 3.0.0.5 de MCS Plus con PBP 2.60C.
Ahora ya existe una versión más nueva, MCSX 5.0.0.0, que es la que uso actualmente con PBP 3.0.7.1.
Igualmente que las versiones anteriores, también es de pago y es la que uso actualmente.
Las actualizaciones, soporte y herramientas extra, se encuentran en la página oficial.
microEngineering Labs


----------



## arturobuffon (Feb 20, 2015)

He instalado la versión de Microcode que me recomiendas y la de PICBasic Pro, pero sigo teniendo el mismo problema.
Tengo instalado windows  XP service pack 3, tal vez tengo mal mi configuración del MicroCode  Studio.

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

Tengo instalado el MicroCode Studio Plus V3.0.0.5 y el PICBasic Pro 2.60
Descargué el patch 2.60C y me marca este error.
Como ensamblador tengo el MPASMWIN520


----------



## D@rkbytes (Feb 21, 2015)

arturobuffon dijo:


> He instalado la versión de Microcode que me recomiendas y la de PICBasic Pro, pero sigo teniendo el mismo problema.
> Tengo instalado windows  XP service pack 3, tal vez tengo mal mi configuración del MicroCode  Studio.
> 
> ---------- Actualizado después de 2 horas ----------
> ...


Si ya estás usando Windows XP SP3 y al tratarse de un PIC16, no compiles usando MPASM.
Ve al menú *View/Compile and Program Options...*
Y en la pestaña *Assembler*, deselecciona la opción: *Use MPASM*
Así:


----------



## arturobuffon (Feb 22, 2015)

Saludos D@rkbytes
Te agradezco toda la ayuda que me brindaste    , ya realiza la función pero en una sola matriz de 8x8, pero cuando pongo las demás en cascada el barrido de una a otra no es continuo y hace que se distorsionen las letras, espero puedas ayudarme con este inconveniente
Espero mañana postearte un vídeo donde se vea el funcionamiento de mi matriz de LEDs tal ves sea la velocidad en la que el pic envía los datos


----------



## D@rkbytes (Feb 22, 2015)

Ok. Eso me parece muy bien y esperamos el vídeo para ver el funcionamiento. 
Con respecto a la velocidad de desplazamiento, mira nuevamente el _post #84_


----------



## arturobuffon (Feb 22, 2015)

Ups.. :cabezon: :cabezon:  muchas gracias D@rkbytes yo modificaba esta parte del programa donde dice *pause* y claro mañana subiré el video

```
LineaV:
; Determina la posición activa horizontal
; y genera la activación de los leds verticales.
    PORTB = Linea[Contador2]
    Pause 3 ; Retardo a modificar para la velocidad.
    If Contador2 = 32 Then
        Contador2 = 1
        GoSub Enviar_1   
    Else
        Contador2 = Contador2 + 1
        GoSub Enviar_0
    EndIf
```


----------



## arturobuffon (Feb 22, 2015)

Saludos  D@rkbytes, una ultima duda  ¿porque al mandar un texto no lo muestra completo? se  reinicia, por ejemplo mando a imprimir Gracias D@rkbytes y Foros  de Electrónica y solo muestra *Graci* espero puedas ayudarme, creo que es un error en la reñal de reloj de los 74HC164


----------



## D@rkbytes (Feb 23, 2015)

Es algo extraño lo que mencionas, pues debería continuar la secuencia faltante.
Adjunta el código y esquema o simulación, exactamente como los tienes ahora para revisarlos.


----------



## arturobuffon (Feb 23, 2015)

La secuencia la termina despues de varias veces de haberse reiniciado, los registros los tengo en cascada, el pin 13 del primer registro esta conectado al pin 1 y 2 del siguiente registro y asi en los cuatro registros, el pin 8 de todos los registros están conectados al reloj del pic te adjnto los archivos
Saludos


----------



## D@rkbytes (Feb 23, 2015)

Se me ocurre que puedes ser por éstos detalles:


La variable Char está formada por 7 elementos, pero se están usando 8. Entonces debe ser Char Var Byte[8] (Casi siempre se usan 7, pero estando en 8 puede servir para crear otros caracteres personalizados.)
El retardo de PauseUs lo llevaste hasta 1100 us. Déjalo en 500 us.
La creación de las letras debe ser de la siguiente forma...
Éste es un ejemplo para la letra "a" minúscula: 
Entonces se genera el siguiente código:
            Char[8] = %00000000
            Char[7] = %00000000
            Char[6] = %00000000
            Char[5] = %00000000
            Char[4] = %00001111
            Char[3] = %00010101
            Char[2] = %00010101
            Char[1] = %00010010

Nota que siempre debe quedar un espacio en blanco para separar las letras.
En este caso está formado por ceros, entonces sobran: Char[8], Char[7] y Char[6]
Éstos se deben eliminar y Char[5] que está formado por ceros, será el espacio entre letras.
Por lo tanto, la variable Char_Length debe tener el valor 5.

Otro ejemplo ahora con la "A" mayúscula: 
Se obtendrá el siguiente código:
            Char[8] = %00000000
            Char[7] = %00000000
            Char[6] = %00000000
            Char[5] = %01111111
            Char[4] = %10001000
            Char[3] = %10001000
            Char[2] = %10001000
            Char[1] = %01111111


Aquí sobra; Char[8] y Char[7] porque Char[6] será el espacio de separación entre letras.
Por lo tanto se eliminan y Char_Length deberá tener el valor 6.

Espero hayas entendido. Ahora modifica lo que te mencioné y realiza una prueba.

PD:
Los caracteres los puedes formar de la manera que quieras, pero debes tener en cuenta iniciar a crearlos desde la izquierda hacia la derecha y los espacios sobrantes, eliminarlos.


----------



## arturobuffon (Feb 23, 2015)

Gracias probare las modificaciones que mencionas, por otra parte estoy por realizar el PCB de la placa de control, crees que tenga que estar mas gruesa la pista de datos y reloj del pic, o no importa? 
tambien pienso implementarla en mi auto, y quisiera que se prendiera con un interrumpor y que con ese mismo se interrumpiera, eh pensado colocar un relevador para controlar el encendido y apagado dela matriz


----------



## D@rkbytes (Feb 23, 2015)

arturobuffon dijo:


> Estoy por realizar el PCB de la placa de control.
> ¿Crees que tenga que estar más gruesa la pista de datos y reloj del pic, o no importa?


No. Esas pistas no manejan corrientes elevadas para que tengan que ser gruesas.
De hecho, el circuito completo no demanda mucha corriente.
Lo que si tienes que hacer, es un buen plano de tierra en el circuito impreso.


----------



## arturobuffon (Feb 23, 2015)

Ya quedo!!  solo espero que youtube no se tarde demasiado para compartirles el video del funcionamiento y como te comentaba, para prenderlo y apagarlo con un mismo pulsador eh pensado en ocupar un flip flop JK con un transoistor para aumentar la corriente y pueda encender y apagar la matriz


----------



## arturobuffon (Feb 25, 2015)

Saludos y muchas gracias por la ayuda  y que buena paciencia tienes jejeje  aquí te dejo el vídeo https://www.youtube.com/watch?v=TRlYJycMewA&feature=youtu.be , despues subiré uno con una mejor resolución  una mejor velocidad de desplazamiento, de nuevo muchas gracias *D@rkbytes *


----------



## D@rkbytes (Feb 26, 2015)

arturobuffon dijo:


> Saludos y muchas gracias por la ayuda  y que buena paciencia tienes jejeje


De nada.  Que bueno que ya funcionó esta matríz de LEDs.

Estaría bien que subieras el esquema completo que usaste y un solo código.
Es que anteriormente subiste dos programas.

Esto es para tener un único proyecto que funcione, pues se hicieron varias modificaciones.


----------



## keimaster (Jun 17, 2015)

D@rkbytes dijo:


> OK. Al parecer siempre sí va a ser necesario que se usen transistores PNP.
> No me había tomado el tiempo de analizar bien como es que estaba funcionando esta matríz y esto fue lo que me causó confusión.
> Esas matrices tienen los ánodos hacia arriba y por lo tanto requieren tensión positiva.
> 
> ...



Hola, tengo problemas al intentar compilar el codigo con pic basic pro 2.6, ya use la palabra de configuracion pero sin exito, no entiendo que pasa, gracias por la ayuda

Tengo errores al compilar y al correr el proteus no se que pasa



Buenas, ya logre solucionar el error de compilacion, tengo una duda, necesito poder modificar respecto a los datos que envie en el puerto serial hay alguna forma de modificar en 
Data @0, un dato en especifico?, muchas gracias.


----------



## D@rkbytes (Jun 17, 2015)

keimaster dijo:


> Necesito poder modificar respecto a los datos que envíe en el puerto serial.
> ¿Hay alguna forma de modificar en Data @0, un dato en especifico?


Los datos que se guardan en la EEPROM interna con la instrucción "Data", son los datos que posteriormente se leerán y es el mensaje que será visualizado.

¿A qué puerto serial te refieres?
El programa usa datos seriales para comunicarse con los registros de desplazamiento, pero no se usa un puerto serial estándar, y tampoco un módulo UART, sino un pin de reloj y otro de datos.

Me parece que debes leer el tema desde el principio para que entiendas el funcionamiento del sistema.


----------



## keimaster (Jun 17, 2015)

En si lo que tengo que hacer es que mediante un dato por el puerto UART y un bluetooth serial pueda leer el dato mediante los puertos rx y tx y desplegar el caracter que se envie al puerto serial, no se exactamente que tengo que hacer para sobreescribir los datos de la EEPROM, ademas de que tendria que cambiar de microcontrolador para poder utilizar un puerto C y tenga mas libertad, pero en si no entiendo exactamente como funciona el corrimiento


----------



## D@rkbytes (Jun 17, 2015)

keimaster dijo:


> En sí, lo que tengo que hacer, es que mediante un dato por el puerto UART y un Bluetooth serial, pueda leer el dato mediante los puertos rx y tx y desplegar el carácter que se envíe al puerto serial


OK. Eso ya es otra cosa.
Entonces, mira por aquí: *Matriz de Leds PIC16f628a Controlada por Teclado PS2*
Con ese aporte de @tecniloco80, ya podrás tener algo más en claro con la recepción de datos por el puerto serie, la implementación del módulo Bluetooth, ya corre por tu cuenta.

Suerte.


----------



## rafapic (Jul 13, 2015)

Hola, gente del foro. Bueno, aquí me armé una matriz de 8x8 y estoy probando un ejemplo que puso arturobuffon que adjunto con algunas fotos de la mía.

Como realicé el conexionado, al encender el circuito quedan todos los leds prendidos sin mostrar nada más que ese parpadeo intermitente de todos los leds.

No hice el buffer todavía, me falta esa parte y probar cada columna con buffer.

Espero puedan ayudar.
En fin, seguiré probando y tratando de localizar la falla.

Gracias.


----------



## daro1276 (Ago 27, 2018)

Hola.
Compré unos módulos P10 o matrices de 16 x 32 e intento hacerlos funcionar pero aún así no imprime ningún carácter.
¿Alguien podría ayudarme a hacer funcionar el panel LED P10 con PIC?
Ya he probado con este código y librería pero el programa no realiza nada en el panel.

Me estoy guiando de esta pagina:





Y de los códigos que se encuentran en esta:
16x64 P10 Scrolling LED Display Using PIC16F877 Microcontroller

Y aquí:

P10 Led Panels with microcontroller Control P10 CCS C Library - Electronics Projects Circuits


----------

