tallernº2 de AVR

of 18 /18
SISTEMAS MICROPROCESADOS 1 UPS 1 UNIVERSIDAD POLITECNICA SALESIANA INTEGRANTES: OSCAR AYALA CRISTIAN IBARRA ANDRES VALDIVIESO CURSO: SEXTO ELECTRONICA

Transcript of tallernº2 de AVR

Page 1: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

1

UNIVERSIDAD POLITECNICA

SALESIANA

INTEGRANTES:

OSCAR AYALA

CRISTIAN IBARRA

ANDRES VALDIVIESO

CURSO:

SEXTO ELECTRONICA

Page 2: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

2

TALLER Nº 2 DE AVR

TEMA: Control de Display y LCD mediante microcontrolador AVR. (ATMEGA 16)

OBJETIVO: Utilizar los puertos del microcontrolador AVR, como interface digital al mundo exterior.

DESARROLLO: En la práctica vamos a utilizar el micro controlador AVR (Atmega16) y su correspondiente diagrama de pines y características.

Figura 1. Diagrama de pines de Atmega16

Para la programación del Atmega16 necesitamos un programador de AVR y escribir el

archivo HEX generado por un software especializado llamado BASCO.

Programadora para AVR

Page 3: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

3

Presentacion de Basco

EJERCICIOS DE CONTROL DE PUERTOS

1.- UTILIZAR EL TEMPORIZADOR EN MODO CONTADOR DEL MICORCONTROLADOR AVR ATMEGA 16

PROBLEMA

Visualizar en dos displays de 7 segmentes un contador ascendente que se

incremente con pulso en puerto b.

ALGORITMO

Inicio: Habilitar el Pin del puerto b como entrada del pulso

Proceso: El puerto D es la salida de datos BCD para el 74LS48, y el puerto C activa al correspondiente display que debe recibir el dato.

Con cada pulso, proseguir el contador ascendente de uno en uno

Salida: Visualizar en displays un contador de dos dígitos.

Page 4: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

4

DIAGRAMA DE FLUJOS

INICIO

Habilito el puerto.C0 para controlar display de

unidades

Envió los datos a través del puerto B al display

Retardo de 20mseg

Habilito el puerto.C1 para controlar display de

decenas

Envió los datos a través del puerto B al display

Retardo de 5useg

Leer PinB.0

Los acumuladores inician el conteo

Defino variables internas

habilitar PinB.0 como

entrada

Page 5: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

5

CÓDIGO

$regfile = "m16def.dat" $crystal = 8000000 Config Portb = Input Config Portc = Output Config Portd = Output Config Porta = Output Dim I As Byte , A As Byte , Menor As Byte , Mayor As Byte Config Timer0 = Counter , Edge = Rising 'edge= falling flanco Descendente: Start Timer0 'edge= rsing flanco descendente Tcnt0 = 0 A = 0

Do A = Tcnt0 'transformada de Hex a BCD Porta = Tcnt0 'mascara elimina bits A = Makebcd(a) Superiores: Menor = A And &B0000_1111 Waitms 500 'mascara elimina bits Inferiores: Mayor = A And &B1111_0000 Shift Mayor , Right , 4 For I = 1 To 5 Portd = Menor Portc = 2 Waitms 20 Portd = Mayor Portc = 1 Waitms 20 Next Loop End

Esquemático: Utilizamos el microcontrolador AVR Atmega16

Page 6: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

6

GRAFICO ANEXO

2.- Manejo LCD

PROBLEMA

Realizar un programa que permite escribir en la línea superior del LCD

ALGORITMO

Entrada: Configurar los pines del microcontrolador para manejar LCD

Proceso: Manejar el LCD

Salida: Visualizar en el LCD

DIAGRAMA DE FLUJOS

Page 7: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

7

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Config Portd = Output

Config Lcd = 16 * 2 'CONFIGURAR lcd

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

E = Portd.0 , Rs = Portd.1

Lcd "hola"

End

ESQUEMÁTICO: Utilizamos el Atmega16

GRAFICO ANEXO:

Page 8: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

8

3.- MANEJO LCD

PROBLEMA

Elaborar un programa que escriba en la línea superior e inferior del LCD

ALGORITMO

Inicio: Configurar los pines del microcontrolador para manejar LCD.

Proceso: Escribir el dato.

Salida: Visualizar la Información en dos líneas de LCD

DIAGRAMA DE FLUJOS

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Config Portd = Output

Config Portc = Output

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

, E = Portd.0 , Rs= Portd.1

Cls 'borra la pantalla

LCD "INGENIERIA" 'escribe en la primera línea

Lowerline

LCD "ELECTRONICA" 'escribe en la línea inferior

End

INICIO

Defino variables

Configurar la LCD

Enviar el dato en LCD 1er línea “INGENIERIA”

2da línea “ELECTRONICA”

Page 9: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

9

ESQUEMÁTICO: Utilizamos el Atmega16

GRAFICO ANEXO:

Page 10: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

10

4.- MANEJO LCD

PROBLEMA

Elaborar un programa que permite el desplazamiento de un texto en el LCD

ALGORITMO

Inicio: Configurar los pines del microcontrolador para manejar LCD

Proceso: Escribir el dato.

Salida: Visualizar desplazamiento de la Información en dos líneas de LCD.

Diagrama de Flujos

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Dim I As Byte

Dim J As Byte

Config Portd = Output

Config Portc = Output

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

, E = Portd.0 , Rs= Portd.1

Cls

Do

Lcd "UPS!"

INICIO

Defino variables internas

Configurar la LCD

Enviar el dato en LCD “UPS”

Retardo 200ms

Desplazar “UPS!”

Page 11: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

11

Waitms 50

For I = 1 To 10

Shiftlcd , Right 'se mueve la frase a la derecha

Waitms 25

Next

For I = 1 To 10

Shiftlcd , Left 'se mueve la frase a la izquierda

Waitms 25

Next

Loop

End

Esquemático:

GRAFICO ANEXO:

Page 12: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

12

5.- MANEJO LCD

PROBLEMA

Elaborar un programa que permite aplicar los comandos generales del LCD

ALGORITMO

Inicio: Configurar los pines del microcontrolador para manejar LCD

Proceso: utilizar los comandos:

_ Borra pantalla _ Localizarse en un posición x,y _ Mueve el cursor al inicio _ Vuelve al inicio _ Cursor no parpadea _ Apagar LCD _ Prender LCD

Salida: Visualizar la Información en dos líneas de LCD.

Diagrama de Flujos

Configurar la LCD

Escribir “*” en la posición x,y

Cursor a la derecha y

escribir “@”

Inicio de LCD escribir “Reemplazo”

Apagar y mover el cursor

Definir variables internas

Apagar, Encender LCD

INICIO

Page 13: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

13

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Config Portb = Output

Config Portc = Output

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

, E = Portd.0 , Rs= Portd.1

Cls 'borra la pantalla

Do

Locate 2 , 1 'localiza en una posición x,y el display

LCD "*"

Wait 1

Shiftcursor Right 'mueve a la derecha el cursor

LCD "@"

Wait 1 Home Upper 'vuelve al inicio LCD "reemplazo" Wait 1 Cursor Off Noblink 'el cursor no parpadea Wait 1 Cursor On Blink 'el cursor parpadea Wait 1 Display Off 'apaga el display Wait 1 Display On 'prende el display Loop

End

ESQUEMÁTICO: Utilizamos el Atmega16

Page 14: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

14

GRAFICO ANEXO:

6.- MANEJO LCD (Adquirir caracteres)

PROBLEMA Elaborar un programa que permite ver los caracteres que puede generar el LCD

ALGORITMO

Inicio: Configurar los pines del microcontrolador para manejar LCD

Proceso: utilizar comando _ Borra pantalla _ Adquirir carácter ASCII

Salida: Visualizar número de carácter ASCII y carácter en LCD

Diagrama de Flujos

Configurar la LCD

Escribir “*” en la posición x,y

Escribir el número de carácter

Retardo 100ms

Definir variables internas

INICIO

Page 15: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

15

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Dim I As Byte

Config Portb = Output

Config Portc = Output

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

, E = Portd.0 , Rs= Portd.1

Cls 'borra la pantalla

Do

For I = 1 To 255

Cls

Locate 1 , 1

LCD Chr(i) 'valor ASCII de un carácter Locate 2 , 1 Lcd "caracter #" ; I Waitms 100 Next Loop End

ESQUEMÁTICO: Utilizamos el Atmega16

Page 16: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

16

GRAFICO ANEXO:

7.- MANEJO LCD (Generar caracteres)

PROBLEMA Elaborar un programa que permite la opción LCD designer.

ALGORITMO

Inicio: Configurar los pines del microcontrolador para manejar LCD

Proceso: utilizar comando _ Generar Carácter con la herramienta LCD designer _ Ubicar carácter en LCD

Salida: Visualizar el nuevo carácter en LCD con la localización determinada

Diagrama de Flujos

Configurar la LCD

Generar comandos de nuevo carácter

Visualizar en LCD

Retardo 5ms

Definir variables internas

INICIO

Page 17: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

17

CÓDIGO

$regfile = "m16def.dat"

$crystal = 8000000

Dim Star As Byte

Config Portb = Output

Config Portc = Output

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7

, E = Portd.0 , Rs

= Portd.1

Cursor Off

Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32

Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32

Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32

Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32

Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32,

Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32 Cls Do For Star = 0 To 5 Step 1 Portd = 255 Waitms 5 Portd = 0 Waitms 5 Locate 1 , 16 Lcd Chr(star) Waitms 5 Next Star Loop

End

ESQUEMÁTICO: Utilizamos el Atmega16

Page 18: tallernº2 de AVR

SISTEMAS MICROPROCESADOS 1 UPS

18

GRAFICO ANEXO:

CONCLUSIONES

La programación para microcontroladores AVR ATMEGA 16 AVR no es muy

compleja al momento de utilizar y controlar los puertos se logro entender

mejor el funcionamiento de algunos códigos y poder comprobar que los

algoritmos básicamente son como lo de los PIC y muchas de sus

operaciones son casi iguales

Los programas de AVR se los realizo en un software llamado Bascom.

El contador con AVR es más preciso y no tiene error por “rebote” con

sucede en el PIC16F.

Con AVR se tiene un mejor manejo de LCD con comandos novedosos y útiles como apagar LCD, mover cursor, crear caracteres.

BIBLIOGRAFÍA

Hoja de prácticas de microcontroladores AVR proporcionados por el Ing. Luis

Oñate.

Librerías de ayuda del software Bascom AVR