DISEÑO DEL PROGRAMA MATRIZ DE LEDS 18X18
Click here to load reader
Transcript of DISEÑO DEL PROGRAMA MATRIZ DE LEDS 18X18
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18CAMPUS SUR PROYECTO BIMESTRAL- QUITO- DISEÑO DEL PROGRAMA
DISEÑO DEL PROGRAMA
Iº parte
1. MICROCONTROLADOR A USAR: AVR atmega16 o atmega32
La elección del microcontrolador se tomara siguiendo ciertos parámetros:
1.1 Nivel del conocimiento del lenguaje de programación, en nuestro caso, tomando en cuenta la experiencia obtenida en las prácticas de laboratorio de la materia “sistemas microprocesados” que hemos realizado, decidimos que la programación para AVR’s ha llegado a ser más comprensible además de que el costo de la programadora para el mismo es más económica que para pics.
1.2 Hoja de datos o data sheet, antes de adquirir el microcontrolador, se debe consultar la hoja de datos. Al revisar las hojas de datos del PIC 16F877 y compararlas con las del AVR atmega16, surgieron varias diferencias, entre ellas que la manipulación del pic debía ser de mayor cuidado que la del avr, esto nos pareció de suma importancia pues corríamos el riesgo de dañar con mayor facilidad el pic, otra diferencia considerable eran las magnitudes de los parámetros de funcionamiento.
1.3 Cantidad de instrucciones, cuantas rutinas estarán programadas en el microcontrolador.
1.4 Capacidad, que tan extenso será el programa.
2. SOFTWARE: BASCOM AVR IDE [1.11.9.5]
3. TEXTO: ¿Qué aparecerá en nuestra matriz?
Nuestra matriz indicara los nombres y apellidos de los integrantes del grupo, animación en los mismos, además de una figura navideña.
4. DISEÑO DE LETRAS: tomando en cuenta que las medidas de nuestra matriz de leds cuenta únicamente con 18 leds de ancho x 18 leds de alto, nuestros nombres no podrán ser visualizados de manera completa y lógica , así que el programa debe estar orientado a una programación con barrido, por lo tanto los nombres se mostrarían desplazándose.
A continuación presentaremos como fuimos desarrollando nuestro programa:
¿Cuántas letras distintas hay que diseñar?
E R I K A A B R I L
V I N I C I O D A V I L A
R E M I N Z A M B R A N O
1
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18CAMPUS SUR PROYECTO BIMESTRAL- QUITO- DISEÑO DEL PROGRAMA
1 2 3 4 5 6 7 8 9 10 11 12 13 14E R I K A B L M N Z O V D C
¿Cómo se mostraran y cuanto espacio ocupara cada letra? Por las dimensiones de nuestra matriz, únicamente alcanzaran a presentarse letras de 7x5, en el caso de que la matriz este llena, se indicaran hasta tres letras.
El formato de nuestra matriz lo representaremos mediante cuadriculas de 18x18 para en esta ir dibujando las letras que necesitaremos.
Previamente con la ayuda de lápiz y papel fuimos dibujando las letras de nuestros nombres y asignándoles códigos, asi:
Ejemplo de diseño de letras:
E5 E4 E3 E2 E1B0 X X X X XB1 XB2 XB3 X X XB4 XB5 XB6 X X X X X
2
En la parte izquierda se encuentra la denominación de cada pin del puerto del microcontrolador, en este caso podemos observar que usaremos el puerto B del circuito integrado, desde el pin 0 al pin 6 del mismo. Al igual que las variables E1…etc., representan un valor, el puerto b también lo hará.
Cada columna que conforma la letra tiene una denominación, en el caso de la letra E, constara de E1, E2, E3, E4, E5, cada una de estas será una variable que tendrá guardado el código según los leds que se encenderán y apagaran al presentarse la letra.
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18CAMPUS SUR PROYECTO BIMESTRAL- QUITO- DISEÑO DEL PROGRAMA
De esta manera ya tenemos un código referente a la letra, así:
E5 E4 E3 E2 E1B0 X X X X XB1 XB2 XB3 X X XB4 XB5 XB6 X X X X XAl tener almacenado en cada variable de la letra 5 códigos diferentes en números binarios, es probable que la memoria de nuestro microcontrolador se llene de manera rápida, por esta razón y para evitarla, cambiaremos cada número binario en su decimal (operación que puede ser realizada con una calculadora científica).
Portb E5=%B01111111=127
E4=%B01001001=73
E3=%B01001001=73
E2=%B01000001=65
E1=%B01000001=65
De esta manera tenemos un numero decimal que representara que leds se encienden o no para la letra E.
Asi se debe ir creando cada letra correspondiente a el texto que se quiere representar en la matriz.
R5 R4 R3 R2 R1B0 X X X X XB1 X XB2 X XB3 X X X XB4 X XB5 X XB6 X X
3
Entonces nuestra letra E, constara de un código referente a las 5 columnas que ocupa.
E Portb=%B01111111 (código de la columna E1 de abajo hacia arriba, como el pin 7 del puerto b no lo usaremos, el numero después de % siempre será 0 para mantenerlo apagado, de ahí cada pin que deba enviar un 1 para encender el respectivo led, será anotado a continuación del 0).
Como cada letra está representada por 5 columnas distintas, tendremos 5 códigos uno por columna.
El código de la letra R será:
R Portb=%B01000111=126
Portb=%B00001001=9
Portb=%B00011001=25
Portb=%B00101001=41
Portb=%B01000110=70
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18CAMPUS SUR PROYECTO BIMESTRAL- QUITO- DISEÑO DEL PROGRAMA
I5 I4 I3 I2 I1B0 X X X X XB1 XB2 XB3 XB4 XB5 XB6 X X X X X
K5 K4 K3 K2 K1B0 X XB1 X XB2 X XB3 X XB4 X XB5 X XB6 X X
A5 A4 A3 A2 A1B0 X X X X XB1 X XB2 X XB3 X X X X XB4 X XB5 X XB6 X XCuando tenga todos los numeros correspondientes a las letras a usarse, podemos empezar a programar en BASCOM.
$regfile = "m16def.dat" ‘ activar libreria de trabajo del atmega 16
$crystal = 8000000 ‘cristal a usar 8MHZ
Config Porta = Output ‘inicializo puertos de salida
Config Portd = Output ‘inicializo puertos de salida
Config Portc = Output ‘inicializo puertos de salida
4
El código de la letra A será:
A Portb=%B01111111=127
Portb=%B00010001=9
Portb=% B00010001=9
Portb=% B00010001=9
Portb=%B00111110=65
El código de la letra K será:
K Portb=%B01111111=127
Portb=%B00001000=8
Portb=%B00010100=20
Portb=%B00100010=34
Portb=%B01000001=65
El código de la letra I será:
I Portb=%B01000001=65
Portb=%B01000001=65
Portb=%B01111111=127
Portb=%B01000001=65
Portb=%B01000001=65
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18CAMPUS SUR PROYECTO BIMESTRAL- QUITO- DISEÑO DEL PROGRAMA
Dim X As Word ‘defino variables
Dim Y As Byte
Dim Z As Byte
Dim Ext As Byte
Dim Var As Byte
Dim Med As Byte ‘defino variables del tipo a usarse
Dim Intr As Byte
Dim Col As Byte
Dim Aux As Word
Dim Cont As Word
Cont = 1
Portd = 48 ‘doy valores iniciales a las variables
Col = 48
Aux = 0
Column:
Portd = Col ‘column almacenara el valor que este en variable col y esta
Return a la vez estara representada en portd
Veer:
Gosub Column ‘veer variable que almacenara la subrrutina anterior seguida de un
Waitus 500 retardo de 500ms
Return
Veer2: ‘veer2 variable que almacena la subrrutina column pero con un
Gosub Column retardo de 150ms
Waitus 150
Return
Cero: ‘cero apaga el puerto b
Portb = 0
Return
5