PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
UNIVERSIDAD POLITÉCNICA SALESIANA
FACULTAD DE INGENIERÍAS ESCUELA DE ELECTRÓNICA SISTEMAS MICROPROCESADOS I INFORME PRACTICA AVR #2 TEMA: TEMPORIZADORES Y LCD GEOVANNY ACOSTA DARIO CAÑAVERAL NATALY GONZALEZ 1
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
OBJETIVO GENERAL: Utilizar los temporizadores del Microcontrolador Atmel (Atmega 16).
EJERCICIO 1: Temporizador en modo contador.
Entradas: Señal de Entrada por el Puerto B Procesos: • • • • • •
• • • •
•
Configuro el Puerto B como entrada para empezar el Contador. Configuro los puertos A, C y D como Salidas. Defino las variables I, A, menor y mayor como Byte. Configuro el Timer 0 como contador. Configuro el Registro donde se almacena el Valor del contador. Realizo una transformación de Hexadecimal a BCD para configurar el Contador. Configuro la máscara para eliminar los bits. Realizo las operaciones And entre la variable A y el código BCD del Puerto B. Empiezo con el conteo desde 1. Para controlar los displays configuro con las variables mayor y menor al Puerto C mediante los transistores 2N3904. Tiempo de Retardo de 200 micro segundos.
Salidas: Datos en la Salida del Puerto D y C (Visualización en los Displays de siete segmentos). DIAGRAMA DE FLUJO:
2
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
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 = Falling, 'edge=falling flanco Decendente: Start Timer0 'edge=rsing flanco ascendente Tcnt0 = 0 A=0 'tcnt0 registro donde se almacena el valor del contador Do A = Tcnt0 Porta = Tcnt0 'transforma de hex. a BCD A = Makebcd(a) 'máscara elimina bits Superiores: Menor = A And &B0000_1111 Waitms 500 Inferiores: Mayor = A And &B1111_0000 Shift Mayor , Right , 4 For I = 1 To 20 Portd = Menor 3
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
Portc = 2 Waitus 200 Portd = Mayor Portc = 1 Waitus 200 Next Loop End
ESQUEMÁTICO:
ANEXOS:
EJERCICIO 2: Mostrar en el LCD el mensaje “HOLA”
Entradas: HOLA escrito en el microcontrolador Procesos: • • • •
Configuro el Microcontrolador a utilizar Configuro el Oscilador a 8 MHz Configuro el Puerto D como Salida Configuro el LCD 16*2. 4
PRACTICA 2 AVR • •
SISTEMAS MICROPROCESADOS
Escribo la palabra hola en el Puerto D. Envío los datos al Puerto D (LCD).
Salidas: Visualizamos HOLA en el puerto D, en el LCD DIAGRAMA DE FLUJO:
CÓDIGO: $regfile = "m16def.dat" $crystal = 8000000 Config Portd = 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 Lcd "hola" End
ESQUEMÁTICO:
5
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
ANEXOS:
EJERCICIO 3: Escribir en la línea superior e inferior del LCD
Entradas: Las palabras Ingeniería y Electrónica escrito en el Microcontrolador. Procesos: • • • • • • • •
Configuro el Microcontrolador a utilizar Configuro el Oscilador a 8 MHz Configuro el Puerto D como Salida Configuro el LCD 16*2. Borro la pantalla del LCD. Escribo la palabra Ingeniería en el Puerto D (Línea Superior). Escribo la palabra Electrónica en el Puerto D (Línea Inferior). Envío los datos al Puerto D (LCD).
6
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
Salidas: Las palabras Ingeniería y Electrónica en el Puerto D (LCD). DIAGRAMA DE FLUJO:
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 'borrar la pantalla Lcd "INGENIERIA" Lowerline 'escribe en la línea inferior Lcd "ELECTRONICA" End
7
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
ESQUEMÁTICO:
ANEXOS:
EJERCICIO 4: Programa que permite el desplazamiento de un texto en el LCD.
Entradas: La palabra UPS escrito en el Microcontrolador. Procesos: • • •
Configuro el Microcontrolador a utilizar Configuro el Oscilador a 8 MHz Configuro el Puerto B, C y D como Salida 8
PRACTICA 2 AVR • • • •
•
•
SISTEMAS MICROPROCESADOS
Configuro el LCD 16*2. Borro la pantalla del LCD. Escribo la palabra UPS en el Puerto D. Mediante la variable I desplazo la palabra diez posiciones del LCD mediante la instrucción right. Luego de desplazar diez veces a la Derecha regreso a la izquierda la frase mediante la variable I diez posiciones del LCD mediante la instrucción left. El tiempo de Retardo para cada desplazamiento es de 200ms.
Salidas: La palabra UPS en el Puerto D (LCD). DIAGRAMA DE FLUJO:
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 9
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
Do Lcd "UPS" For I = 1 To 10 Shiftlcd , Right Waitms 200 Next Loop End
ESQUEMATICO:
ANEXOS:
EJERCICIO 5: Comandos generales del LCD.
Entradas: Los comandos escritos en el Microcontrolador. Procesos: •
Configuro el Microcontrolador a utilizar 10
PRACTICA 2 AVR • • • • • • • • • • • • • • • • •
SISTEMAS MICROPROCESADOS
Configuro el Oscilador a 8 MHz Configuro el Puerto B, C y D como Salida Configuro el LCD 16*2. Borro la pantalla del LCD. Localizo la posición x, y en el LCD. Escribo el comando * en el LCD. Tiempo de Retardo 1 s. Muevo a la derecha el cursor. Escribo el Comando @ en el LCD. Tiempo de Retardo un segundo. Vuelvo al Inicio. Envío la palabra remplazo al LCD. Tiempo de retardo un segundo. El cursor no parpadea por un segundo. El cursor parpadea por un segundo. Se apaga el LCD por un segundo. El LCD se prende.
Salidas: Varios pasos mostrados en el LCD DIAGRAMA DE FLUJO:
11
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
CODIGO: $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 Do Locate 2 , 1 'localiza en una posición x, y del 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 Noblink 'el cursor parpadea Wait 1 Display Off 'apaga el display Wait 1 Display On 'prende el display Loop End
ESQUEMATICO:
12
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
ANEXOS:
EJERCICIO 6: Programa que permite ver los caracteres que puede generar el LCD.
Entradas: Los comandos escritos en el Microcontrolador. Procesos: Configuro el Microcontrolador a utilizar Configuro el Oscilador a 8 MHz Configuro el Puerto B, C y D como Salida Configuro el LCD 16*2. Declaro la variable I. Borro la pantalla del LCD. Realizo un contador de 0 a 255 para cada comando generado por el LCD. Localizo la posición en el LCD. Envió los datos en el LCD. Tiempo de Retardo de 100 ms. Salidas: Los comandos generados por el LCD mostrados en el LCD. • • • • • • • • • •
13
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
DIAGRAMA DE FLUJO:
CODIGO: $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 Do For I = 1 To 255 Cls 14
PRACTICA 2 AVR Locate 1 , 1 Lcd Chr(i) Locate 2 , 1 Lcd "caracter#" ; I Waitms 100 Next
SISTEMAS MICROPROCESADOS
'valor ASCII de un caracter
Loop End
ESQUEMATICO:
15
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
ANEXOS:
EJERCICIO 7: Programa que me permite rotar la letra x en un solo cuadro del LCD mediante la utilización de la herramienta LCD Designer del Programa BAscom.
Entradas: Los comandos escritos en el Microcontrolador. Procesos: • • •
Configuro el Microcontrolador a utilizar Configuro el Oscilador a 8 MHz Configuro el Puerto D como Salida 16
PRACTICA 2 AVR • • • •
•
• • • •
SISTEMAS MICROPROCESADOS
Configuro el LCD 16*2. Declaro la variable Star. Borro el cursor de la pantalla del LCD. Mediante la herramienta LCD Designer creó la figura par poder visualizar la rotación de la letra x. Teniendo la localización de dónde va la figura creada envió estos datos al Puerto D. Tiempo de Retardo 100 ms. Configuro la localización del LCD en donde va a ir rotando la figura. Tiempo de Retardo. Fin.
Salidas: Los comandos generados por el LCD mostrados en el LCD. DIAGRAMA DE FLUJO:
CODIGO: $regfile = "m16def.dat" $crystal = 4000000 $sim 17
PRACTICA 2 AVR SISTEMAS MICROPROCESADOS Config Portd = Output Dim Star As Byte 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 1000 Portd = 0 Waitms 1000 Locate 1 , 16 Lcd Chr(star) Waitms 1000 Next Star Loop End
ESQUEMATICO:
18
PRACTICA 2 AVR
SISTEMAS MICROPROCESADOS
ANEXOS:
‘
BIBLIOGRAFÍA: • • •
Hojas de las Prácticas de Microcontroladores AVR. Apuntes personales Manual del Microcontrolador AVR Atmega 16.
19