Matriz 8x8
MATRIZ 8x8 CON INTEGRADO MAX7219 UTILIZANDO SPI EN TARJETA STM32 NUCLEO-F446
Bienvenidos a nuestra wiki, esperamos que nuestros códigos sean de gran ayuda.
MATERIALES
- Matriz 8x8 con max7219.
- NUCLEO F446RE.
1. Laboratorio primer paso :
funcionamiento matriz 7x5 ... demostramos su funcionamiento con las letras: A, B, C , X, Y, Z.
Import programmatriz7X5
realizamos la primera parte del laboratorio realizando un programa en el cual se pueda ingresar fácilmente cualquier letra o símbolo en una matriz 7x5
2. Laboratorio segundo paso:
Realizamos un programa para la visualización de la matriz 8x8 utilizando la librería "max7219.h"
CONEXIONES: *Declaración: Max7219 pantalla(PB_15, PB_14, PB_13, PB_12);
PIN / MAX7219 / NOTA
PB_15 / DIN / MOSI
PB_14 / NC / MISO
PB_13 / CLK / SCLK
PB_12 / CS / SSEL
U5V / VCC / 5 V
GND / GND / TIERRA
Explicación del programa
el programa consta de dos partes
1. Main.h : es la cabecera del programa. aquí encontramos los códigos:
Modificables: lo que encontramos dentro de las {} podemos modificarlo colocando otros números para cambiar las figuras a mostrar, el primer número hexadecimal escribirá la primera fila de abajo hacia arriba, el segundo la segunda fila de abajo hacia arriba... etc.
unsigned char led1[]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55}; secuencia uno
unsigned char led2[]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; secuencia dos
unsigned char led3[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; secuencia tres
- los void los declaramos aquí para que puedan usarse en cualquier lado del programa (declaración global)
void Print_pantalla_tabla(unsigned char *pValor); declaración del puntero
void print_punto(); declaración secuencia de puntos
2. Main.cpp aquí llamaremos en el inicio a la cabecera y a la librería ( #include "main.h", #include "max7219.h" ) y declararemos los pines (Max7219 pantalla(PB_15, PB_14, PB_13, PB_12))
- en ... int main() ... aquí va lo que hace el programa
- primero configuramos el max7219
max7219_configuration_t cfg = {
.device_number = 1,
.decode_mode = 0,
.intensity = Max7219::MAX7219_INTENSITY_5,
.scan_limit = Max7219::MAX7219_SCAN_8 };
- testeamos la matriz, esto encendera todos los leds:
pantalla.init_device(cfg);
pantalla.enable_device(1);
pantalla.set_display_test();
wait(1);
pantalla.clear_display_test();
- hacemos un ciclo para que se muestren las distintas secuencias que dejamos en la cabecera
while(1){
Print_pantalla_tabla(led1); secuencia uno
wait(1); tiempo de espera
Print_pantalla_tabla(led)2; secuencia dos
wait(1);
Print_pantalla_tabla(led3); secuencia tres
wait(1);
print_punto(); secuencia de puntos (esta llamará una función, la cual se encuentra abajo, pero también se encuentra declarada en la cabecera) }
}
VOIDS (FUNCIONES)
- funciòn de puntero:
void Print_pantalla_tabla(unsigned char *pValor)
{
int i;
for (i =0;i<8;i++)
pantalla.write_digit(1,i+1,pValor[i]); }
- función secuencia de puntos
void print_punto() {
unsigned char personal[8]= {0x0,0x0,0,0,0,0,0,0};
unsigned char filas[8]= {1,3,7,0x0f,0x1f,0x3f,0x7f,0xff};
int i,j;
for (i=0;i<8;i++)
personal[i]= 0;
for (j=0;j<8;j++)
for (i=0;i<8;i++){
personal[i]= filas[j];
Print_pantalla_tabla(personal);
wait(0.2);
} }
Revision 0:bb2c52d4cc8f, committed 2017-03-11
- Comitter:
- Paxtel
- Date:
- Sat Mar 11 22:23:11 2017 +0000
- Commit message:
- prueba1
Changed in this revision
diff -r 000000000000 -r bb2c52d4cc8f MAX7219.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MAX7219.lib Sat Mar 11 22:23:11 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Maxim-Integrated/code/MAX7219/#b5e4379a3d90
diff -r 000000000000 -r bb2c52d4cc8f main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Mar 11 22:23:11 2017 +0000 @@ -0,0 +1,62 @@ +#include "main.h" +#include "max7219.h" + +Max7219 pantalla(PB_15, PB_14, PB_13, PB_12); +void Print_pantalla_tabla(unsigned char *pValor); + + int main() +{ + + unsigned char personal[8]= {0x0,0x0,0,0,0,0,0,0}; + unsigned char filas[8]= {1,3,7,0x0f,0x1f,0x3f,0x7f,0xff}; + + max7219_configuration_t cfg = { + .device_number = 1, + .decode_mode = 0, + .intensity = Max7219::MAX7219_INTENSITY_5, + .scan_limit = Max7219::MAX7219_SCAN_8 + }; + + pantalla.init_device(cfg); + pantalla.enable_device(1); + pantalla.set_display_test(); + wait(1); + pantalla.clear_display_test(); + + + + while(1){ + Print_pantalla_tabla(led3); + wait(1); + Print_pantalla_tabla(led2); + wait(1); + Print_pantalla_tabla(led1); + wait(1); + + int i; + int j; + + while(1){ + for (i=0;i<8;i++) + personal[i]= 0; + for (j=0;j<8;j++) + for (i=0;i<8;i++){ + personal[i]= filas[j]; + Print_pantalla_tabla(personal); + wait(0.2); + } + + + } + } + +} + + +void Print_pantalla_tabla(unsigned char *pValor) +{ +int i; + for (i =0;i<8;i++) + pantalla.write_digit(1,i+1,pValor[i]); + +}
diff -r 000000000000 -r bb2c52d4cc8f main.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Sat Mar 11 22:23:11 2017 +0000 @@ -0,0 +1,6 @@ +#include "mbed.h" + + +unsigned char led1[]= {0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55}; +unsigned char led2[]= {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; +unsigned char led3[]= {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
diff -r 000000000000 -r bb2c52d4cc8f mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Mar 11 22:23:11 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e1686b8d5b90 \ No newline at end of file