Está en la página 1de 11

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SECCION ELECTRICIDAD Y ELECTRONICA

LABORATORIO 1

Familiarizacin con las herramientas de desarrollo y Manejo de puertos E/S


I. OBJETIVO Aprender a desarrollar programas elementales con el microcontrolador Atmega88P, utilizando instrucciones bsicas. Aprender a manejar el entorno de desarrollo Atmel Studio y el entorno VMLAB para editar, compilar y simular un programa Aprender a utilizar la herramienta de programacin AvrPUCP para grabar y ejecutar un programa en el microcontrolador Atmega88. II. MATERIALES Y EQUIPOS 1 mdulo de entrenamiento AvrPUCP -Mega88. 1 mdulo de E/S 1 Cable ISP de programacin para el ATmega88 1 computadora personal 1 Fuente de alimentacin 1 Cables de fuente 10 cables de E/S

III.

HERRAMIENTAS DE DESARROLLO Atmel Studio 6.0 VMLAB v3.15 AVRPUCP 0.98

IV. PROCEDIMIENTO A continuacin se presenta el desarrollo de 3 programas, los cules debe editarlo con las siguientes herramientas para utilizar con el microcontrolador ATmega88: Atmel Studio 6.0 o superior: Para editar y compilar el programa VMLAB: Para simular la ejecucin del programa AvrPUCP: Para programar (grabar el cdigo mquina) el microcontrolador Atmega88. 4.1 Primer Proyecto. El primer ejemplo consiste en implementar un decodificador de 2x4, con un habilitador de entrada. Objetivos especficos Aprender a leer a leer un dato mediante el registro PINB del puerto B. Aprender a activar la resistencia interna pull up del microcontrolador Aprender a usar las funciones lgicas para enmascarar bits. Conexiones Los leds estn conectados a los pines PD0, PD1, PD2, PD3, para indicar las salidas del decodificador. Los interruptores K1 y K2 estn conectados a PB0 y PB1, para indicar las entradas del decodificador. El habilitador K0 est conectado a PC0. Procedimiento Se dibuja el circuito esquemtico Se dibuja el diagrama de flujo En el circuito: o Cul ser el valor lgico de los pines PB0 y PB1, cuando los interruptores estn cerrados? La respuesta es 0 lgico. o Y cul ser el valor lgico de estos pines cundo el interruptor est abierto, tal como se muestra en el circuito? Es indeterminado. Por tanto, para nuestro ejemplo debemos activar las resistencias pull up que tiene cada pin de E/S del microcontrolador. En este caso la resistencia pull up que corresponde al pin PB0, PB1 y PC0.
IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenn Cucho M. 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Cmo se logra activar estas resistencias pull up? Se configura el pin como entrada y luego se escribe un 1 lgico en la posicin del bit asociado al registro PORT:
DDRB = 0x00; /* Configuracion como entrada del puerto B y C */ DDRC = 0x00; PORTB = 0x03; /* Resistencias pull up activas en el pin 0 y 1 del puerto B */ PORTC = 0x01; /* Para activar la resistencia pull up del pin 0 del puerto C */

Circuito esquemtico simplificado:

VDD= 5V

. .
D1

.
D2

.
D3 D4

R1 PD0

ATMEGA88
R2 PD1 PB0 K1 K2 K0 PB1 PC0 R4 PD3 PD2 R3

R1=R2=R3=R4=180 .

K0,K1,K2 son interruptores

Diagrama de Flujo
Decodificador
Inicio

Configuracin de Puertos Salida: 4 leds Entrada: 3 interruptores

Leer estado de habilitador

SI

habilitador = 1?

NO

00 01

Valor de selectores
10

Apagar LEDs
11

Activar salida 0

Activar salida 1

Activar salida 2

Activar salida 3

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Programa
//************************************************************************** // PROYECTO1.c // Descripcion: El programa simula un decodificador de 2x4 // Created: 8/20/2013 12:29:14 PM // Author: Zenn Cucho //************************************************************************* #include <avr/io.h> //**************************************************************************** //*Definicion de la funcion: configuracion de puertos *********************** //**************************************************************************** void Configuracion_puertos(void) { DDRB = 0x00; /* Configuracion como entrada del puerto B y C */ DDRC = 0x00; PORTB = 0x03; /* Resistencias pull up activas en el pin 0 y 1 del puerto B */ PORTC = 0x01; /* Para activar la resistencia pull up del pin 0 del puerto C */ DDRD = 0xff; /* Configuracin como salida el puerto D */ PORTD = 0x00; /* Inicialmente las salidas muestran 0 */ } //**************************************************************************** // Programa Principal ******************************************************** //**************************************************************************** int main(void) { int hab,sel; /* variables globales hab= habilitador y sel= selectores */ Configuracion_puertos(); while(1) { hab = PINC & 0x01; /* lectura del habilitador conectado a PC0 ***** si hab=0, los leds estn apagados */ if(hab) { sel = PINB & 0X03; /* lectura de los selectores en PB0, PB1 */ switch(sel) { case 0: PORTD = 0x01; /* Salida 0 activa */ break; case 1: PORTD = 0x02; /* Salida 1 activa */ break; case 2: PORTD = 0x04; /* Salida 2 activa */ break; case 3: PORTD = 0x08; /* Salida 3 activa */ break; } /* Fin de switch */ } else PORTD = 0x00; /*Decodificador deshabilitado: salidas desactivadas */ /*Fin de while */

} }

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Simulacin en VMLAB Utilizar el siguiente archivo *prj


K0 PC0 VSS LATCHED ; K0 es el interruptor que representa al habilitador K1 PB0 VSS LATCHED ; K1 y K2 son las entrdas selectoras del decodificador K2 PB1 VSS LATCHED ; Se define el hardware de la salida (4 leds) del circuito D1 VDD N1 R1 N1 N2 180 X1 ND2 PD0 PD0 N2 D2 VDD N3 R2 N3 N4 180 X2 ND2 PD1 PD1 N4 D3 VDD N5 R3 N5 N6 180 X3 ND2 PD2 PD2 N6 D4 VDD N7 R4 N7 N8 180 X4 ND2 PD3 PD3 N8

Resultado Las salidas del decodificador se observa en los leds, para cada valor de la entrada PB0 y PB1. Si el habilitador conectado al bit 0, del puerto C tiene un 0 no se observa ningn led prendido.

4.2 Segundo proyecto. El segundo proyecto consiste en implementar un contador de 3 bits. La cuenta se incrementa luego de presionar y soltar un pulsador. Objetivos especficos Aprender a configurar los puertos como entrada y salida Aprender a manejar un pulsador Aprender a usar las funciones lgicas para enmascarar bits. Procedimiento - Los leds de salida del contador estn conectados a PD0, PD1, PD2. - El pulsador de entrada (K0) est conectado a PB0. - Edite el programa en Atmel Studio 6.0 y compruebe la simulacin con el entorno VMLAB - Implemente el programa en el Mdulo AvrPUCP y demuestre su funcionamiento

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Circuito esquemtico simplificado:


VDD= 5V

. .
D1 D2

.
D3

VDD= 5V

ATMEGA88
PD0

R1

K0 R2

.
R4=10K

PD1 PB0 PD2 R1=R2=R3=180 . R3

Diagrama de Flujo
Contador
Inicio

Configuracin de Puertos Salida: 3 leds Entrada: 1 pulsador

salida salida + 1

salida 0 1

salida = MAXIMO?

No

S Pulsador presionado?

salida 0 No

S Mostrar salida en LEDs Pulsador liberado?

No 1

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Programa
//***************************************************************************** * PROYECTO2.c * Descripcion: Se implementa un contador de 3 bits, cuenta de 0 a 7 y se repite. * La cuenta se incrementa al presionar y soltar un pulsador * Created: 8/20/2013 2:10:09 PM * Author: Zenn Cucho //***************************************************************************** #include <avr/io.h> #define MAXIMO 7 // librera de E/S // define una constante

//***************************************************************************** // Definicion de la funcion: configuracion de puertos ************************ // **************************************************************************** void Configuracion_puertos(void) { DDRB = 0x00; // Se define el puerto B como entrada DDRD = 0x07; // Se define 3 pines del puerto D como salida PORTD = 0x00; // Inicialmente los leds estn apagados } // ***************************************************************************** // Programa Principal ********************************************************** // ***************************************************************************** int main(void) { int p0, salida=0; // variables p0= pulsador ; salida= leds Configuracion_puertos(); while(1) { do{ // espera que se presione el pulsador (PB0) p0 = PINB & 0x01; }while (p0 == 0); do{ // espera que se libere el pulsador (PB0) p0 = PINB & 0x01; }while (p0 == 1); salida++; // actualiza el valor de la cuenta if (salida == MAXIMO) { salida = 0; // para reiniciar } PORTD = salida; // muestra el valor actual en los leds } // fin de while // fin del programa

Simulacin en VMLAB Utilizar el siguiente archivo *prj


D1 VDD N1 ; Led 1 est conectado a PD0 R1 N1 N2 180 ; X1 ND2 PD0 PD0 N2 D2 VDD N3 ; Led 2 est conectado a PD1 R2 N3 N4 180 X2 ND2 PD1 PD1 N4 D3 VDD N5 ; Led 3 est conectado a PD2 R3 N5 N6 180 X3 ND2 PD2 PD2 N6 ; El circuito de entrada est definido por: K0 VDD PB0 ; Pulsador K0 est conectado a PB0 R4 PB0 VSS 10K
IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenn Cucho M. 6

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Resultado Se observa, cuando PORTD=0b00000011, los leds D1 y D2 estn encendidos. El pulsador K0 est conectado al bit b0, del puerto B (ver el registro PINB).

4.3 Tercer proyecto. El tercer proyecto consiste en implementar un programa que prenda y apague un diodo led por un tiempo establecido. En el ejemplo el diodo led est encendido por 500 ms y est apagado por 1000 ms. El diodo led est conectado al puerto PB3. Objetivos especficos: Aprender a utilizar funciones incluidas en la Biblioteca de Atmel Studio 6.0 Aprender a utilizar la funcin _delay_ms( ) para generar una demora de tiempo (pausa) durante la ejecucin de un programa. Sintaxis de la funcin _delay_ms( ) _delay_ms(ms) Parmetro de entrada: ms, indica el tiempo en milisegundos Parmetro de salida: ninguno Procedimiento - Edite el programa en Atmel Studio 6.0 y compruebe la simulacin con el entorno VMLAB - Implemente el programa en el Mdulo AvrPUCP y demuestre su funcionamiento Diagrama de Flujo
Encendido / Apagado
Inicio

Configuracin de puertos Salida: 1 LED Entrada: ninguna

Encender LED

Apagar LED

Retardo(500ms)

Retardo(500ms)

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Programa
/* * PROYECTO3.c * Descripcion: El programa prende un diodo led por 500 ms y lo apaga por 1000 seg. * Created: 8/21/2013 5:12:51 PM * Author: Zenn Cucho */ #include <avr/io.h> #include <util/delay.h>

//Se agrega esta Biblioteca para utilizar la funcion delay(ms)

int main(void) { DDRB=0X08; // pin 3 del while(1) { PORTB=0X08; _delay_ms(500); PORTB=0X00; _delay_ms(1000); } }

puerto B como salida

// // // //

PB3 <---"1" ;Inicialmente el led est encendido tiempo de encendido 500 ms PB3<--"0" ; el diodo led se apaga tiempo de apagado 1000 ms

Simulacin en VMLAB Utilizar el siguiente archivo *prj


D1 VDD N1 ; Led 1 est conectado a PB3 R1 N1 N2 180 ; X1 ND2 PB3 PB3 N2

Resultado Se observa el tiempo de la simulacin, debe considerarse que el tiempo del simulador comparado con el tiempo real demora ms tiempo.

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

4.4 Cuarto proyecto. Se tiene 8 diodos conectados al puerto D del microcontrolador ATmega88, el proyecto consiste en implementar un programa que muestra el desplazamiento de un led encendido de derecha a izquierda y viceversa de forma circular. Inicialmente el led conectado a PD0 est encendido y los otros estn apagados.Considere un retardo de 300 ms, por cada cambio en los leds. Dato Inicial: Se desplaza cada 300 ms

.
.

. . .

. .

. .

. .

. .

. .

. .

Al llegar a prenderse, el ltimo led, se repite de izquierda a derecha

Programa
/* * Ejemplo Cuarto_proyecto.c * Created: 3/14/2014 4:58:23 PM * Author: Zenn Cucho //Fuente: Joe Pardue programming for microcontrollers */ #include <avr/io.h> #include <util/delay.h> #define F_CPU=10000000UL int main(void) { int n; DDRD = 0XFF; // Configuracin del puerto D como salida while(1) // Loop { for (n=1;n<=128;n=2*n) { PORTD = n; _delay_ms(300); } for (n=128;n>1;n=n/2) { PORTD = n; _delay_ms(300); } } }

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Simulacin en VMLAB Utilizar el siguiente archivo *prj


D1 VDD N1 R1 N1 N2 180 X1 ND2 PD0 PD0 N2 D2 VDD N3 R2 N3 N4 180 X2 ND2 PD1 PD1 N4 D3 VDD N5 R3 N5 N6 180 X3 ND2 PD2 PD2 N6 D4 VDD N7 R4 N7 N8 180 X4 ND2 PD3 PD3 N8 ; D5 VDD N9 R5 N9 N10 180 X5 ND2 PD4 PD4 N10 D6 VDD N11 R6 N11 N12 180 X6 ND2 PD5 PD5 N12 D7 VDD N13 R7 N13 N14 180 X7 ND2 PD6 PD6 N14 D8 VDD N15 R8 N15 N16 180 X8 ND2 PD7 PD7 N16

Problemas Propuestos: Nota: Comprobar el funcionamiento usando el entorno VMLAB: 1) Un pulsador (K1) y 4 diodos leds (D1, D2, D3, D4) estn conectados al microcontrolador ATmega88 en los pines PC5, PD2, PD3, PD4 y PD5 respectivamente. Inicialmente D1 est prendido y los otros 3 leds estn apagados. Escribir un programa que cumpla con la condicin siguiente: Al presionar y soltar el pulsador conectado al pin PC5 se prenden los diodos apagados y se apaga el led que estaba prendido. Hacer: a) Diagrama esquemtico b) Diagrama de flujo c) Programa 2) Se tiene conectado al microcontrolador ATmega88, 2 pulsadores y 4 diodos leds. Al presionar y soltar el pulsador 1 se debe mostrar ascendentemente los nmeros impares de 1 a 15 y al presionar y soltar el pulsador 2 se debe mostrar la cuenta de los nmeros pares de 0 a 14. La cuenta se modifica luego de presionar y soltar el pulsador correspondiente y comienza desde el valor inicial 0 1. Si llega a su valor mximo se reinicia la cuenta. Ejemplo: Al usar el pulsador 1 y el pulsador 2, consecutivamente, se muestra: 1 3 5 7 9 11 0 2 4 6 Hacer: a) Diagrama esquemtico b) Diagrama de flujo c) Programa (Comprobar su funcionamiento)

IEE 256

SISTEMAS DIGITALES - LABORATORIO

SEMESTRE 2014-1

Ing. Zenn Cucho M.

10

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

3) En el anterior programa, la cuenta de los nmeros impares se modifica cada 500 ms y la cuenta de los nmeros pares cada 800 ms. Los pulsadores 1 y 2 se utilizan solo para comenzar la cuenta. Implemente el programa. Use la funcin _delay_ms(ms) 4) Se tienen conectados al microcontrolador ATmega88 cuatro leds y un pulsador, se pide mostrar una cuenta binaria ascendente en los leds con las siguientes caractersticas: Es una cuenta ascendente de 5 a 12 El valor inicial de la cuenta es cinco. La cantidad de pulsos requeridos para permitir incrementar la cuenta se incrementa en uno cada vez. Es decir, si inicialmente la cuenta est en 5, al presionar una vez el pulsador la cuenta se incrementa a 6, luego, para incrementar la cuenta a 7 se requerirn dos pulsos, luego, para mostrar el 8 se requerirn tres pulsos, y as sucesivamente hasta llegar a 12, luego termina. Conexiones: Leds: Diodos leds conectados a: PB3, PB2, PB1, PB0 (LSB) Pulsador: conectado al pin PC5 5) Desarrollar un programa para el microcontrolador ATmega88 que implemente un contador ascendente de 4 bits y con razn constante. El contador ser gobernado por un pulsador KA para controlar la cuenta ascendente. La razn a la cual aumentar el valor de cuenta se obtiene de 3 interruptores K0, K1 y K2. El valor de cuenta deber ser mostrado en 4 leds. Considerar que los posibles valores para la cuenta son los nmeros del 0 al 15 y que esta cuenta es circular (despus del 15 sigue el 0 y antes del 0 viene el 15) Considerar tambin como primer valor de cuenta el nmero 8. Para las conexiones considerar: Pulsador: conectado a PC2 y los interruptores a PD0 (LSB), PD1, PD2 y PD3 Leds conectados a PB3, PB2, PB1 y PB0 (LSB) 6) Modificar el problema anterior, agregando un pulsador conectado a PC5 para disminuir la cuenta, cuya razn es la misma determinado por los 3 interruptores. 7) Para las siguientes conexiones: Entradas: - Interruptores SW1, SW2, SW3 y SW4 conectados a PC0, PC1, PC2 y PC3 respectivamente. - Pulsador P1 conectado a PC4. Salidas: - Diodos leds D4, D3, D2, D1 conectados a PD5, PD4, PD3 y PD2 (LSB) respectivamente para ver el nmero. Implementar un programa que cumpla los siguientes requerimientos: Los interruptores permiten definir un nmero de 4 bits (SW4 bit ms significativo, SW1 bit menos significativo, interruptor cerrado 0, abierto 1). Cuando el pulsador est presionado, se muestra en los LEDs, en binario, la cantidad de 1s en el nmero (led prendido = 1). Cuando el pulsador no est presionado, se muestra el nmero seleccionado con los interruptores. Ejemplo: Si SW2 y SW4 estn abiertos, y SW1y SW3 estn cerrados, el nmero es 1010. Si se pulsa el pulsador, debe aparecer: D4 apagado, D3 apagado, D2 encendido, D1 apagado. Eso representa al nmero 0010 que es 2 en decimal, y es la cantidad de 1s en el nmero. Si se suelta el pulsador, se prenderan los LEDs D4, D2 y se apagaran D3 y D0.

Material de trabajo para el laboratorio 1: Elaborado por: Ing. Zenn Cucho Mendoza Revisado por: Ing. Freri Orihuela Quivaqui. Semestre: 2014.1

San Miguel, marzo de 2014


IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenn Cucho M. 11

También podría gustarte