Matriz 8x8

Dependencies:   MAX7219 mbed

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. /media/uploads/Paxtel/modulo-max7219-matriz-led-8x8.jpg /media/uploads/Paxtel/en.nucleo-f4.jpg

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);

} }

Files at this revision

API Documentation at this revision

Comitter:
Paxtel
Date:
Sat Mar 11 22:23:11 2017 +0000
Commit message:
prueba1

Changed in this revision

MAX7219.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /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]);
+   
+}
--- /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};  
--- /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