Matriz 8x32 con PIC16F84A

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!

02107918206883857650.png

95652902993188757472.png
70415308077896367710.png
23554242556033771225.png
41643455011757885243.png
14774564689549080708.png
62026411152140467090.png
...
 
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
 
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
 

Adjuntos

  • matrix 8x32.rar
    23.4 KB · Visitas: 505
Última edición:
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
 
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
 
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
 
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 :)
 
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
 

Adjuntos

  • Manejo De Dot Matrix.zip
    12.2 KB · Visitas: 249
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
 
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.
 
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
 
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
 

Adjuntos

  • Inter matriz.rar
    38.3 KB · Visitas: 242
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
 

Adjuntos

  • Manual De Pic Basic Pro.pdf
    650.8 KB · Visitas: 149
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

Código:
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
 
Última edición:
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.
 
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
 
Última edición:
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
 

Adjuntos

  • 1.jpg
    1.jpg
    195.5 KB · Visitas: 121
  • 2.jpg
    2.jpg
    198.3 KB · Visitas: 97
  • 3.jpg
    3.jpg
    173.3 KB · Visitas: 90
Atrás
Arriba