Hola a todos.
Quiero hacerme un pasamensajes , y quiero hacerlo de 8x80, pero claro, como es la primera vez que toco este tema, me puse a investigar, leer PDFs, buscar en los foros, pero me he hecho un lío y quiero estar seguro si entendí la teoría sobre como hacer esto.
Lo primero, es que existen 2 formas básicas de hacerlo, la una es mediante barrido por columnas y la otra barrido por filas; la primera tiene la desventaja de que entre más largo sea el letrero más tiempo lleva el refresco, y para evitar parapadeos se debe aumentar la velocidad del escaneo, y esto se traduce en una disminución de la intensidad del led...por favor si estoy equivocado me corrigen..
; la otra y que veo que es la mas utilizada es el barrido por Filas, al ser menos cantidad, en mi caso solo 8; se pueden dejar más tiempo encendidos los leds, esto supone un aumento en el brillo de los mismos, pero al mismo tiempo un aumento de consumo de corriente ya que si estuviera encendido todo el cartel tendríamos el consumo de los 80 leds(para mi caso), claro esto es solucionable. Hasta acá voy bien?
Ahora la parte que me tiene más inseguro de si la entendí o no, la parte del software, como uso solo ASM, pues me olvido de ejemplos que he visto en C, que por el camino que voy, me tocará aprenderlo si o si. Algunos ejemplos que he visto de ASM, pues para ser franco, hay momentos donde me pierdo, debe ser por eso que todos los códigos y rutinas que he hecho las hago desde cero, y hasta ahora no he hecho un copy, paste
.
Bueno a lo básico generar un Cero en la matriz para comenzar, a ver si entendí:
- Lo primero, debo saber como quiero que me muestre el cero la matriz, pues para mi gusto sin los leds de las esquinas, para que se vea algo redondo y no cuadrado.
- Ahora la matriz la tengo asi: cátodos como columnas y los ánodos como filas; un caracter se forma por 8 filas por 5 columnas
- Con la configuración anterior entonces he de suponer que pongo a rotar un 1 por las filas, esta rotación debe ir sincronizada con los datos en las columnas, para el caso del cero sería asi:
De abajo hacia arriba el escaneo de las filas, osea formar el dígito en la matriz desde la fila de abajo
Fila 8 <0>
Fila 7 <0>
Fila 6 <0>
Fila 5 <0>
Fila 4 <0>
Fila 3 <0>
Fila 2 <0>
Fila 1 <1>
5 Columnas <10001> ; sería la parte baja del cero
Siguiente escaneo, rotar el 1 en las filas, eso si, dejo el anterior dato con un tiempo suficiente como para que se vean bien los leds y que no halla parpadeo en el panel.
Fila 8 <0>
Fila 7 <0>
Fila 6 <0>
Fila 5 <0>
Fila 4 <0>
Fila 3 <0>
Fila 2 <1>
Fila 1 <0>
5 Columnas <01110> ;
Y los mismos 5 bits para la columna hasta llegar a la fila 8, donde sería igual a la fila 1...si me he hecho entender?..perdonenme si hay mucha chachara, pero quiero estar seguro si entendí bien o no la teoría.
Ahora, he leido algunas tablas, con los bits que formas cada caracter, pero estas tablas bien organizadas las he visto en C, y yo quiero preguntar si es posible hacer una tabla como la que escribo a continuación para el ejemplo anterior, osea el cero:
TABLA ADDWF CP ; CONTADOR DE PROGRAMA
RETLW 0E,11,11,11,11,11,11,0E ; EL CERO EN DONDE EL PRIMER HEXADECIMAL ES LA FILA DE ABAJO
He visto algo similar, pero en C, no se si en ASM se pueda hacer lo mismo, por que me gustaría más asi, que escribir linea por linea hasta formar el cero(en mi ejemplo) y también por llevar un orden y hacer modificaciones más fácil.
Eso era todo, cuando comience a hacerlo iré pidiendo más ayuda, como por ejemplo el desplazamiento, agregarle algunos efectos y cositas de esas que uno llega hacer cuando se entiende muy bien esto
Por favor me disculpan todo este texto aburridor, pero quiero que me guíen bien y me corrijan para poder empezar
Saludos