UNIVERSIDAD POLITECNICA SALESIANA CAMPUS SUR - QUITO-
MATRIZ DE LEDS 18X18
PROYECTO BIMESTRAL DISEÑO DEL PROGRAMA
DISEÑO DEL PROGRAMA Iº parte 1. MICRO MICROCO CONT NTRO ROLAD LADOR OR A USAR: 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 experiencia obtenida en las prácticas prácticas de laboratorio laboratorio de la materia “sistemas realizado, decidimos que la programación para AVR’s ha microprocesados” que hemos realizado, 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. tomando en cuenta cuenta que las medidas medidas de nuestra matriz de leds cuenta cuenta 4. DISE DISEÑ ÑO DE LET LETRA RAS: S: tomando ú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. desplazándose. A continuación presentaremos como fuimos desarrollando nuestro programa:
¿Cuántas letras distintas hay que diseñar? E R IK A A BR I L V I N IC I O D A V IL A R E M I N Z A M BR A N O
1
UNIVERSIDAD POLITECNICA SALESIANA CAMPUS SUR - QUITO-
MATRIZ DE LEDS 18X18
PROYECTO BIMESTRAL DISEÑO DEL PROGRAMA
1
2
3
4
5
6
7
8
9
E
R
I
K
A
B
L
M
N
10
11
12
13
14
Z O V D C ¿Cómo se mostraran mostraran y cuanto cuanto espacio espacio ocupara ocupara cada letra? 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:
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á.
B0 B1 B2 B3 B4 B5 B6
E5 X X X X X X X
E4 E3 E2 E1 X X X X
Cada columna que conforma la
letra
tiene
u na
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á
X
guardado el código según los
X
leds leds que que se ence encend nderá erán n y apagaran apagaran al presen presentars tarse e la letra.
X
X 2
X
X
UNIVERSIDAD POLITECNICA SALESIANA CAMPUS SUR - QUITO-
MATRIZ DE LEDS 18X18
PROYECTO BIMESTRAL DISEÑO DEL PROGRAMA
De esta manera ya tenemos un código c ódigo referente a la letra, así:
B0 B1 B2 B3 B4 B5 B6
E5 X X X X X X X
E4 E3 E2 E1 X X X X
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í
X
X
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,
X
X
X
X
tendremos 5 códigos uno por columna.
Al 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). Port Portb b E5=%B E5=%B011 01111 11111 111=12 =127 7 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.
B0 B1 B2 B3 B4 B5 B6
R5 R4 R3 R2 R1 X X X X X X X X X X X X X X X X X X X
El código de la letra R será: R
Portb=%B01000111=126 Portb=%B00001001=9 Portb=%B00011001=25 Portb=%B00101001=41 Portb=%B01000110=70
3
UNIVERSIDAD POLITECNICA SALESIANA CAMPUS SUR - QUITO-
I5 B0 X B1 B2 B3 B4 B5 B6 X
I4 X
X
I3 X X X X X X X
I2 X
MATRIZ DE LEDS 18X18
PROYECTO BIMESTRAL DISEÑO DEL PROGRAMA
I1 X
El código de la letra I será: I
Portb=%B01000001=65 Portb=%B01000001=65 Portb=%B01111111=127 Portb=%B01000001=65 Portb=%B01000001=65
X
X
B0 B1 B2 B3 B4 B5 B6
K 5 K4 K3 K2 K1 X X X X X X X X X X X X X X
B0 B1 B2 B3 B4 B5 B6
A5 A4 A3 A2 A1 X X X X X X X X X X X X X X X X X X X X
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 A será: A
Portb=%B01111111=127 Portb=%B00010001=9 Portb=% B00010001=9 Portb=% B00010001=9 Portb=%B00111110=65
Cuando Cuando tenga tenga todos los numeros correspon correspondiente dientess a las letras letras a usarse, podemos podemos empezar a programar en BASCOM. $regfile = "m16def.dat" "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
UNIVERSIDAD POLITECNICA SALESIANA CAMPUS SUR - QUITO-
Dim X As Word
MATRIZ DE LEDS 18X18
PROYECTO BIMESTRAL DISEÑO DEL PROGRAMA
‘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