La Matriz de Leds 7x64
Esta matriz de leds constituye el mejor looking para muchos proyectos que podamos tener en mente, lo malo es su coste de implementación, pues el precio oscila según la calidad de led que se use, además del driver o circuiteria de potencia que en esta versión simulada no estará presente, pues en el proteus no es necesario
.
Existen muchos fundamentos que ignoro en relación al tiempo óptimo de encendido y apagado del panel, aunque ya se ha hablado mucho sobre esto en varios hilos dentro del foro TODOPIC, es cuestión del interesado en recopilar dicha información, nuestro objetivo es simplemente desarrollar una aplicación para practicar el compilador C18.
Análisis in profundix:Imaginen 7 registros constituidos por 8 bytes cada uno, si lo graficamos sería algo asi:
1 2 3 4 5 6 7 8
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg1
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg2
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg3
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg4
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg5
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg6
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Reg7
Ahora, esto mismo para el C18:
unsigned char panel[7][8] = { 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X4E,0XAE,0XEE,0X00,0X00,0X00,0X00,0X00,
0XC2,0XA2,0X8A,0X44,0X00,0X00,0X00,0X00,
0X4E,0XEE,0XEE,0X00,0X00,0X00,0X00,0X00,
0X48,0X22,0X22,0X44,0X00,0X00,0X00,0X00,
0X4E,0X2E,0XE2,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00};
Observemos que se trata nada más que de una simple matriz 7x8
, ahora, con un simple indexado dentro de la matriz podriamos escribir dentro de ella:
panel[2][1] = 0x00;
Y así dibujar en la matriz algún caracter o figura que deseemos mostrar en el panel de leds, esa es la manera en que vamos a atacar la matriz con el programa escrito para el C18, no obstante debido a que se trata de 2 paneles simplemente lo he partido en 2:
unsigned char panel[7][4] = { 0X00,0X00,0X00,0X00,
0X4E,0XAE,0XEE,0X00,
0XC2,0XA2,0X8A,0X44,
0X4E,0XEE,0XEE,0X00,
0X48,0X22,0X22,0X44,
0X4E,0X2E,0XE2,0X00,
0X00,0X00,0X00,0X00};
unsigned char mensaje[7][4] = { 0X00,0X00,0X00,0X00,
0X4E,0XAE,0XEE,0X00,
0XC2,0XA2,0X8A,0X44,
0X4E,0XEE,0XEE,0X00,
0X48,0X22,0X22,0X44,
0X4E,0X2E,0XE2,0X00,
0X00,0X00,0X00,0X00};
Ahora, debido al hardware que hemos implementado la forma de dibujar en el panel es la siguiente:
- 1. Apuntar al primer registro correspondiendte a la primera fila del panel.
- 2. Desplazar serialmente através de los 4094 este primer registro, esta rutina desplazará 8 bytes consecutivamente.
- 3. Activar fila correspondiente y clockear el STROBE dek 4094 para actualizar.
- 4. Aplicar retardo para la aparición de cada fila.
- 5. Continuar asi hasta llegar a la ultima fila, luego repetir todo el proceso.