You are on page 1of 5

UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18

CAMPUS 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?

ERIKA ABRIL

VINICIO DAVILA

REMIN ZAMBRANO

1
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18
CAMPUS SUR PROYECTO BIMESTRAL
- QUITO- DISEÑO DEL PROGRAMA

1 2 3 4 5 6 7 8 9 10 11 12 13 14
E 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:


Cada columna que conforma
E5 E4 E3 E2 E1 la letra tiene una
B0 X X X X X denominación, en el caso de
la letra E, constara de E1, E2,
B1 X E3, E4, E5, cada una de estas
En la parte izquierda se encuentra la
B2 X será una variable que tendrá
denominación de cada pin del puerto B3 X X X guardado el código según los
del microcontrolador, en este caso leds que se encenderán y
podemos observar que usaremos el
B4 X apagaran al presentarse la
puerto B del circuito integrado, desde B5 X letra.
el pin 0 al pin 6 del mismo. Al igual B6 X X X X X
que las variables E1…etc.,
representan un valor, el puerto b
2
también lo hará.
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18
CAMPUS 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 E1 Entonces nuestra letra E, constara de un código referente a las 5


columnas que ocupa.
B0 X X X X X
E Portb=%B01111111 (código de la columna E1 de abajo
B1 X hacia arriba, como el pin 7 del puerto b no lo usaremos, el numero
B2 X después de % siempre será 0 para mantenerlo apagado, de ahí
B3 X X X cada pin que deba enviar un 1 para encender el respectivo led, será
anotado a continuación del 0).
B4 X
Como cada letra está representada por 5 columnas distintas,
B5 X tendremos 5 códigos uno por columna.
B6 X X X X X
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).

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 R1 El código de la letra R será:

B0 X X X X X R Portb=%B01000111=126
B1 X X Portb=%B00001001=9
B2 X X
Portb=%B00011001=25
B3 X X X X
Portb=%B00101001=41
B4 X X
B5 X X Portb=%B01000110=70

B6 X X

3
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18
CAMPUS SUR PROYECTO BIMESTRAL
- QUITO- DISEÑO DEL PROGRAMA

I5 I4 I3 I2 I1 El código de la letra I será:

B0 X X X X X I Portb=%B01000001=65

B1 X Portb=%B01000001=65
B2 X Portb=%B01111111=127
B3 X
Portb=%B01000001=65
B4 X
B5 X Portb=%B01000001=65

B6 X X X X X

K5 K4 K3 K2 K1 El código de la letra K será:

B0 X X K Portb=%B01111111=127

B1 X X Portb=%B00001000=8
B2 X X Portb=%B00010100=20
B3 X X
Portb=%B00100010=34
B4 X X
B5 X X Portb=%B01000001=65

B6 X X

A5 A4 A3 A2 A1 El código de la letra A será:


B0 X X X X X A Portb=%B01111111=127
B1 X X
Portb=%B00010001=9
B2 X X
Portb=% B00010001=9
B3 X X X X X
B4 X X Portb=% B00010001=9

B5 X X Portb=%B00111110=65
B6 X X
Cuando 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
UNIVERSIDAD POLITECNICA SALESIANA MATRIZ DE LEDS 18X18
CAMPUS 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

You might also like