Date post: | 18-Nov-2014 |
Category: |
Documents |
Upload: | angelvaldivieso |
View: | 129 times |
Download: | 3 times |
SISTEMAS MICROPROCESADOS 1 UPS
1
UNIVERSIDAD POLITECNICA
SALESIANA
INTEGRANTES:
OSCAR AYALA
CRISTIAN IBARRA
ANDRES VALDIVIESO
CURSO:
SEXTO ELECTRONICA
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
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.
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
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
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
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:
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”
SISTEMAS MICROPROCESADOS 1 UPS
9
ESQUEMÁTICO: Utilizamos el Atmega16
GRAFICO ANEXO:
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!”
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:
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
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
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
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
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
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
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