quisiera ayuda con un letrero luminoso

amigo electroconico disculpame si te incomode por la tonta pregunta que te ise :oops:
y quisiera consultarte esto:)
y espero que me respondas por favor:)

tu dijistes esto:

* No recuerdo ni leí mucho acerca de la memoria que usas , pero generalmente puedes leer por bloques que es mucho más rápido que byte por byte.

a que te refieres con leer por bloque?:unsure:

y es mucho mas rapido asi como dices?:unsure:

Saludos!
 
Analizemos ventajas y desventajas:

En la primera opcion la ventaja clara seria velocidad... solo tienes que ir sacando el dato de la eeprom y mandarlo sin necesidad de procesarlo a la pantalla... pero la desventaja que ya mencionaste es el espacio... solo puedes grabar un mensaje de 340 caracteres (aprox)

Yo me quedaria con la segunda opcion, usas la EEPROM para grabar todo el alfabeto basico y algunos caracteres especiales (admiracion, exclamacion, caritas etc), y dejas un area libre para grabar los mensajes en formato ascii o en algun formato tuyo

Ahora... al inicio del programa antes de encender la pantalla lo primero que hace el PIC es leer las primeras letras del mensaje (lo que quepa en un buffer RAM de 80 columnas), despues va traduciendo de ASCII (o tu codigo) a los caracteres a mostrar en la pantalla y asi llenas en la RAM una imagen digital de lo que el PIC va a mostrar en la pantalla

Posteriormente el PIC muestra esa pantalla durante un tiempo "X", para que la persona pueda leer el primer dato, despues haces un corrimiento de todos los datos y recuperas de la EEPROM la siguiente columna y la añades al final, y te sigues asi hasta mostrar todo el mensaje.. despues repites desde el inicio

Como los calculos de que columna y caracter sigue los haces hasta el final, puedes ajustar el tiempo de recorrido para que el PIC acabe todo y repita de nuevo, que a ojo de buen cubero pueden ser unos 200 a 400mS para dar una buena velocidad...

El problema no es obtener el caracter y traducirlo, el problema es barrer toda la matriz con el suficiente tiempo, tienes que poner al menos 24 pantallas por segundo, osea una pantalla cada 41.4mS, si tienes 80 columnas entonces es una columna cada 520uS

Pero al ser un barrido tan largo (80 columnas) se atenua mucho el encendido de los leds y ademas se nota mas la persistencia con el borde del ojo, por lo que te recomendaria mejor dvidir la matriz en varias porciones y barrerlas por separado, por ejemplo puedes barrer 10 pantallas de 8 columnas cada una y asi cada una de las 10 columnas estaria 4mS. Pero se complicaria un poco la electronica (tendrias que añadir flipflops D para mantener el dato), sinceramente creo que es lo mejor

Tambien puedes barrer la matriz horizontalmente, pero tendrias que sacar el dato serialmente por medio de registros de corrimiento... como se muestra en este link:

http://www.ucontrol.com.ar/wiki/index.php?title=Funcionamiento_de_una_matriz_de_LEDs

Primero necesitas pensar en cual metodo usar para lograr el barrido y despues puedes pasar a la parte de corrimiento de datos...
 
:eek:uy amigo que sublime respuesta:aplauso:
gracias
pero otra consultita
con respecto a esto:
Yo me quedaria con la segunda opcion, usas la EEPROM para grabar todo el alfabeto basico y algunos caracteres especiales (admiracion, exclamacion, caritas etc), y dejas un area libre para grabar los mensajes en formato ascii o en algun formato tuyo
lo que me tratas de decir es que guardde todo los caracteres columna por columna en la eeprom o en el pic :confused:

y con respecto a esto:
Tambien puedes barrer la matriz horizontalmente, pero tendrias que sacar el dato serialmente por medio de registros de corrimiento... como se muestra en este link:
eso es lo que quiero hacer con registro de corrimiento.
o que me aconsejas tu esta bien con el corrimieto o con esto::cool:
te recomendaria mejor dvidir la matriz en varias porciones y barrerlas por separado, por ejemplo puedes barrer 10 pantallas de 8 columnas cada una y asi cada una de las 10 columnas estaria 4mS. Pero se complicaria un poco la electronica (tendrias que añadir flipflops D para mantener el dato), sinceramente creo que es lo mejor

Saludos!
 
Última edición:
Usas la EEPROM externa para guardar la representacion en tu pantalla de cada caracter del alfabeto y simbolos que quieras mostrar, posteriormente cuando colques un mensaje el PIC puede acudir a ese "mapa" que le indica como mostrar la "A" o una carita feliz, o lo que necesites mostrar, por ejemplo la A podria quedar asi:

00 -> 01111110
01 -> 01100110
02 -> 01100110
03 -> 01100110
04 -> 01111110
05 -> 01100110
06 -> 01100110
07 -> 01100100

Cuando el PIC lea el mensaje sabe que letra esta en cada direccion, entonces cada vez que encuentre una "A" solamente lee las direcciones 00 a la 07, coloca eso en la memoria y repite la operacion para las letras restantes, asi construyes la representacion de cada letra en la memoria del PIC, despues solo vas adquiriendo cada dato y lo muestras en el display

Lo que sobre de la EEPROM lo puedes usar para grabar varios mensajes que despues puedes mostrar, o igual puedes grabar esos mensajes en la EEPROM interna del PIC

En cuanto al corrimiento hay 2 formas... barriendo filas y barriendo columnas, si barres las filas usas registros de corrimiento y barres 8 veces por cada pantalla.. la ventaja es que en teoria puedes hacer el display infinitamente largo y el barrido siempre sera de 8 por pantalla... pero necesitas introducir el dato en los registros de corrimiento que se va haciendo cada vez mas largo conforme agrandas el display

En cuanto a barrer las columnas es lo mismo... colocas el dato y barres 80 veces por pantalla, pero entre mas larga sea la pantalla mas corto es el tiempo en que cada led estara encendido y por lo tanto sera mas tenue el brillo y hay que colocar mas corriente en cada led, y ademas de que hay mas posibilidades de que el ojo note el barrido

Por lo que usualmente al barrer columnas se usan 2 metodos... se divide la pantalla en subpantallas mas pequeñas y cada una se barre por separado y todas al mismo tiempo... ( en tu caso tal vez 10 pantallas de 8x8 para lograr 80x8)

El otro metodo es interlazar el barrido, primero colocas los datos de las columnas pares (0 al 78) y despues colocas el dato de las columnas nones (1 al 79), es un metodo mas complejo pero eliminas aun mas la persistencia que queda en el ojo, incluso a veces se usan ambos metodos en conjunto, se subdivide cada pantalla en subpantallas y primero se barren columnas pares y despues nones...
 
Usas la EEPROM externa para guardar la representacion en tu pantalla de cada caracter del alfabeto y simbolos que quieras mostrar, posteriormente cuando colques un mensaje el PIC puede acudir a ese "mapa" que le indica como mostrar la "A" o una carita feliz, o lo que necesites mostrar, por ejemplo la A podria quedar asi:

00 -> 01111110
01 -> 01100110
02 -> 01100110
03 -> 01100110
04 -> 01111110
05 -> 01100110
06 -> 01100110
07 -> 01100100

Cuando el PIC lea el mensaje sabe que letra esta en cada direccion, entonces cada vez que encuentre una "A" solamente lee las direcciones 00 a la 07, coloca eso en la memoria y repite la operacion para las letras restantes, asi construyes la representacion de cada letra en la memoria del PIC, despues solo vas adquiriendo cada dato y lo muestras en el display

Lo que sobre de la EEPROM lo puedes usar para grabar varios mensajes que despues puedes mostrar, o igual puedes grabar esos mensajes en la EEPROM interna del PIC

:cry:pero no abria otra forma porque toda la memoria se me van a ir en los caracteres

por ejemplo que ponga letras del alfabeto: minusculas, mayusculas, numeros y caracteres (como signo de iterrogacion o carita feliz) ya que son 8 bit por caracter:eek:
Saludos
 
Si no los guardas en algun lado como los quieres mostrar?? ademas necesitas estandarizar... o de lo contrario te verias forzado a hacer un programa de computo que traduzca el mensaje y lo guarde directamente en la memoria del PIC..

28 letras x 8 columnas cada una serian 224 bytes... si estas usando la 24lc16 tienes 2048 bytes, mas que espacio sobrado...
 
Última edición:
bueno estas en lo cierto:unsure:
pero son "28" letras pero minusculas mas las mayusculas otras "28" y los numero "10" y caracter es otros "10"mas supongamos ahora cuanto seriaseria 28+28+10+10*8=608 bytes
bueno tienes razon me quedan todavia 1440 bytes de espacio ya que cuento con 2048bytes
pero quiero usar todo el espacio de la eeprom y

pero pense en algo:
que tal si la tabla lo ago en la flash del pic ya que uso un 16f877a que tiene 8k de flash
y segun que letra sea lo llevo a la etiqueta correcta para convertirlo y pasarlo a la ram

nosesi sea correcto, eso es mi idea que opinas

crees que sea posible?:confused:
 
Es una mejor idea... aunque tambien considera el espacio que ocupa el programa del PIC... muchas veces se hacen muy muy largos...

y aun colocandolo en la EEPROM interna... esperas mostrar un mensaje de 2048 letras?? eso seria demasiado largo.. aun si muestras varios mensajes mas pequeños...
 
esque tengo un compañero de clases que lo iso con la misma memoria y pic que salgan 2048 caracteres
y le pusieron una nota aprovatoria
y yo quisiera aser lo mismo
y mi trabajo es para la otra semana
voy a intentar guardarlo en la flash si no me alcanza caballero nomas tendre que usar le eeprom externa
gracias por tu ayuda
y por contestarme
voy a publicar avanzes en cuanto los tenga
 
Solamente unos tips!!

Los PICs vienen paginados, tanto en la RAM como en la ROM.. normalmente el programa corre de manera lienal y no te afecta.. pero cuando estas leyendo tablas de busqueda si tienes que tener cuidado con esas paginaciones... o de lo contrario saltaras a un area erronea y el PIC se volvera loco...

Trata de poner tus tablas en un area definida hasta el final de la memoria, y ajusta el estado de los registros PCL y PCLATH para que no salte a otra zona... Microchip tiene una nota de aplicacion de ese tipo... te daria detalles mas a profundidad ... pero tiene años que no los uso y la verdad ya se me estan olvidando...

http://ww1.microchip.com/downloads/en/AppNotes/00556e.pdf
 
pero el proton no se encarga de la paginacion?
bueno asi dice en su manual

pero si no me da resultado alguno tendre que usar la memoria eeprom interna o sino pondre otra memoria externa y si en caso no me queda de otra o si no me dan resultado ninguno, usare la misma eeprom asi como me dijistes
Saludos!
 
Eso si no lo se... yo te digo por que me gustaba mucho hacer los codigos directamente en ensamblador... hasta que despues pase a C....
ami tambien me gusta yo utilisaba el asembler con el mplab pero por lo que queria hacer los programas mas rapidos, me recomendaron el uso del proton ya que me piden que haga proyectos algunas veces para pocos dias y con el asembler me demoraba mucho:oops: y talvez era por lo que no lo dominaba

pero ahora estoy un poco ya conociendo al pic y despues de todo esto voy a regresar al asembler porque desde hay puedo comandar al pic parte por parte y no dejar que un compilador lo haga ya que no se como lo esta asiendo y no podria confiar mucho en el
ademas el mplab y asembler es de la misma microchip asi que estan garantisados y seria mucho mejor

pero el problema con el asembler es que no puedo manejar la pantalla grafica, pero creo que si se puede hacer porque no creo que microchip se le aia pasado esa, la de no poder manipular pantallas graficas
esque tambien no ai muchos tutoriales sobre esos por la red:cry:
pero si lo ai en proton y lenguaje c:D
tu que opinas
e escuchado del lenguaje c pero no me convence mucho ya que no es de microchip:unsure:
o me equivoco por favor corrígeme si es asi gracias

Saludos

tu sabes manejar la pantalla grafica de 128*128 con el pic y la patalla grafica de colores
o talvez sabes usar el gps
pero todo con asembler

pucha seria magnifico si lo supieras
y si lo supieras me podrias dar un asesoramiento seria magnifico todo eso
o quizás saber un poco mas del asembler
eso seria genial
Saludos!
 
Última edición:
Atrás
Arriba