20/10/10

Matriz 5x5 con Display

Si eres amante de la electronica y tienes conocimientos previos a la programacion de PIC's, o simplemente estas buscando informacion sobre la constuccion de Matrices de LED's, aca esta lo que estabas buscando, un proyecto que te ayudara a adentrarte en el diverso mundo de las ´Matrices de LED's.



REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÉCNICO
“SANTIAGO MARIÑO”
EXTENSIÓN MARACAY










MATRIZ 5x5 CON DISPLAY USANDO EN PIC16F877








Autor:         Hector Robles 
19.554.414
Sección: “EA”

Maracay, Octubre 2010





-Introducción:
En el siguiente proyecto se quiso realizar una Matriz de LED’s donde se mostrara las iniciales del Instituto Universitario Politécnico Santiago Mariño, en conjunto con un Display que indicara una fecha específica, usando el microcontrolador PIC16F877. Para dicha representación se implementaron veinticinco (25) leds para la representación de la Matriz,
-La Matriz 5x5:
Para mostrar una imagen, símbolo, número o como en este caso letras dentro de una matriz se debe primero conocer el funcionamiento de la misma.
Los bits están ordenados dentro de la matriz de izquierda a derecha y de abajo hacia arriba, tal como se muestra en la imagen de abajo.



Las filas están formadas por la unión en paralelo de los cátodos de los led’s, y las columnas por la unión en paralelo de los ánodos. Esta descripción se muestra en la imagen de abajo.


Para la visualización de las letras en la matriz debemos armar inicialmente un “mapa” dentro de la matriz de cómo queremos que se vea o grafique lo que estamos queriendo mostrar, y lo haremos de la siguiente manera:



Donde la filas por estar conectadas como ánodos comunes las activamos con unos (1) y las columnas que son los cátodos comunes los activamos con ceros (0), este proceso lo realizamos de izquierda a derecha encendiendo en cada paso una columna de la matriz, como en este caso la matriz es de 5x5 cada letra quedara totalmente dibujada en 5 pasos.
La imagen se forma por el “barrido” de las columnas a las que se les hacen llegar en el momento apropiado los datos que queremos visualizar. Estos datos llegan de a uno por vez y se colocan en el lugar que le corresponde a cada uno dentro del mapa de bits creado en forma previa. Al repetir el ciclo muchas veces en un segundo, la imagen dará la impresión de estar fija. Para que este efecto se logre con mejor resultado, interviene la inercia de encendido y apagado del LED, sumado a la velocidad de nuestra visión en detectar los mencionados cambios de estado.

-Display: 
           En este proyecto se quizo añadir un display que mostrara una fecha determinada durante el funcionamiento, para esto intervenimos el tiempo entre el paso de una letra en la matriz y la siguiente, colocando los diferentes digitos de la fecha a mostrar en el display.

-Esquema:
A continuación se muestra el esquema del proyecto donde se aprecia las diferentes conexiones realizadas entre los componentes y el microcontrolador PIC16F77 en el simulador Proteus ISIS 7.7





-Lista de Componentes:
Luego de la visualización del esquema del proyecto continuamos con la lista de componentes a obtener para su realización, la cual está disponible en la imagen de abajo.
Componentes
Cantidad
PIC16F877
1
Cristal 4Mhz
1
Condensador Cerámico 22P
2
Resistencia 220 Ohm
6
Fuente Regulada 5V
1
LED
25
Vaquelita perforada 40x40mm
1
Vaquelita perforada 90x50mm
1
Display 7 SEG ánodo común
1
Conector Macho-Macho x 2 pines
1
Conector Hembra-Macho x 4 pines
2
Pulsador N/C
1
Resistencia 100 Ohm
1
Resistencia 1 KOhms
1
Tirraps 100mm
4
Zocalo 40 pines
1


-Registro de Configuración de I/O de los Puertos:
Antes de comenzar la programación se debe tener en cuenta declarar cuáles de los puertos y cuáles de los pines de los puertos del microcontrolador serán las salidas y las entradas según la estructura de la programación.
Ya que la Matriz está estructurada de 5 filas por 5 columnas, de las cuales las filas son los cátodos conectados entre sí y las columnas son los ánodos, tomaremos 5 pines del puerto B para las filas y 5 pines del puerto D para las columnas, y 7 pines del puerto C para el display.
A partir de esto decimos que:
PUERTOB:
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
1
1
1
0
0
0
0
0


PUERTOC:
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
1
0
0
0
0
0
0
0

PUERTOD:
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
1
1
1
0
0
0
0
0

La expresión final del registro de I/O de los puertos quedaría de la siguiente manera:
TrisB= %11100000
TrisC= %10000000
TrisD= %11100000

Donde TrisB es la expresión del registro; % es el símbolo de configuración binaria; y 11100000 es la configuración del puerto. TrisC es la expresión del registro; % es el símbolo de configuración binaria; y 10000000 es la configuración del puerto. TrisD es la expresión del registro; % es el símbolo de configuración binaria; y 11100000 es la configuración del puerto.

-Sintaxis:
Procedemos ahora a la programación del microcontrolador PIC16F877, y para esto hay que tomar en cuenta el significado de las instrucciones que utilizaran en el programa.
Contador VAR BYTE; esta instrucción me declara a “Contador” como variable.
FOR-NEXT; esta instrucción le indica a mi(s) variable(s) que ejecuten su función repetidas veces según se le indique.
Portx= %xxxxx; esta instrucción indicará al puerto el numero binario a mostrar.
PAUSE; esta instrucción hará una pausa en un tiempo determinado de la instrucción anterior a ella.
Goto inicio; esta instrucción indicará la continuación del programa (ciclos).
Definido esto procedemos a la realización del programa a ejecutar.

-Programación:

'*****************************************************************
'*  Name    : I.U.P.S.M Matriz5x5 y Display                                                                    *
'*  Author  : Héctor Robles                                                                                               *
'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS]                             *
'*          : All Rights Reserved                                                                                            *
'*  Date    : 17/10/2010                                                                                                    *
'*  Version : 1.0                                                                                                                  *
'*  Notes   : Matriz de LED's que muestra las iniciales del IUPSM                            *
'*          : y Display con fecha                                                                                            *
'*****************************************************************
Define osc 4                                                                                 'oscilador 4MHZ
contador var byte                                                       'declaracion variable contador
trisb= %11100000                                                          'Activacion de pines de puertos
trisd= %11100000
trisc= 000000
portb= 0                                                                        'puerto inicia en cero
portd= 0
portc= 0
inicio:
for contador = 0 to 50                                                     'contador
portb= 000001 : portd= 001110 : pause 1                        'letra I
portb= 000010 : portd= 001110 : pause 1
portb= 000100 : portd= 000000 : pause 1
portb= 001000 : portd= 001110 : PAUSE 1
portb= 010000 : portd= 001110 : pause 1
portb= 000000 : portd= 000000 : pause 1
next contador
portc= %1111001 : pause 1500    'numero 1 y pausa
portc= %1111111 : pause 100
portc= 00000 : pause 1500    'numero 8 y pausa
portc= %1111111 : pause 100
for contador = 0 to 500
portb= 000001 : portd= 000000 : pause 1                                     'letra U
portb= 000010 : portd= 001111 : pause 1
portb= 000100 : portd= 001111 : pause 1
portb= 001000 : portd= 001111 : pause 1
portb= 010000 : portd= 000000 : pause 1
portb= 000000 : portd= 000000 : pause 1
next contador
portc= %0111111 : pause 2000    'separador y pausa
portc= %1111111 : pause 100
for contador = 0 to 500
portb= 000001 : portd= 000000 : pause 1                                      'letra P
portb= 000010 : portd= 011010 : pause 1
portb= 000100 : portd= 011010 : pause 1
portb= 001000 : portd= 011010 : pause 1
portb= 010000 : portd= 011000 : pause 1
portb= 000000 : portd= 000000 : pause 1
next contador
portc= %1111001 : pause 1500                                                     'numero 1 y pausa
portc= %1111111 : pause 100
portc= %1000000 : pause 1500                                                     'numero 0 y pausa
portc= %1111111 : pause 100
for contador = 0 to 500
portb= 000001 : portd= 001101 : pause 1                            'Letra S
portb= 000010 : portd= 001010 : pause 1
portb= 000100 : portd= 001010 : pause 1
portb= 001000 : portd= 001010 : pause 1
portb= 010000 : portd= 010110 : pause 1
portb= 000000 : portd= 000000 : pause 1
next contador
portc= %0111111 : pause 2000                                          'separador y pausa
portc= %1111111 : pause 100
for contador = 0 to 500
portb= 000001 : portd= 000000 : pause 1                                'letra M
portb= 000010 : portd= 011101 : pause 1
portb= 000100 : portd= 011011 : pause 1
portb= 001000 : portd= 011101 : pause 1
portb= 010000 : portd= 000000 : PAUSE 1
portb= 000000 : portd= 000000 : pause 1
portb= 000000 : portd= 000000 : pause 1
next contador
portc= %0100100 : pause 1500                                     'numero 2 y pausa
portc= %1111111 : pause 100
portc= %1000000 : pause 1500                                      'numero 0 y pausa
portc= %1111111 : pause 100
portc= %1111001 : pause 1500                                      'numero 1 y pausa
portc= %1111111 : pause 100
portc= %1000000 : pause 1500                                     'numero 0 y pausa
portc= %1111111 : pause 100
goto inicio                                                                      'comienzo del ciclo
end
----------------------------------------------------------------------------------------------------------
-Anexos:
     
  Acá se encuentran algunas imágenes de elaboración y acabado final de nuestro proyecto:




Matriz 5x5 vista frontal  

Matriz 5x5 vista anterior


Vive.!




Preparando apariencia.


Acabado final.