INSTITUTO UNIVERSITARIO POLITÉCNICO
“SANTIAGO MARIÑO”
EXTENSIÓN MARACAY
MATRIZ 5x5 CON DISPLAY USANDO EN PIC16F877
Autor: Hector Robles
19.554.414
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.
-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.!
Acabado final.
Espero les guste y sirva de ayuda...
ResponderEliminarcon q promagaste? muy bueno tu aporte Felicidades buen trabajo!
ResponderEliminar