1. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 2 Hs PUERTOS COMO GPIO
2.4. Encendido de LEDs con Switch
Objetivos
1. Realizar las configuraciones del ATMEGA128 para encender LED con switch.
2.4.1. Procedimiento
AVR Studio
1. Configure la F_CPU a 8MHz.
2. Configure el PUERTO E como salida.
3. Configure el PUERTO D como entrada.
4. Configure el PUERTO D a PULL-UP (entrada).
5. Realice el código en C, el LED debe encender cuando el switch se mantiene pulsado,
caso contrario debe permanecer apagado.
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/sfr_defs.h>
int main(void)
{
DDRE = 0b11111111;//PUERTO E COMO SALIDA (LED)
DDRD = 0b00000000;//PUERTO D COMO ENTRADA (SWITCH)
PORTD = 0b11111111;//PUERTO D A PULL-UP
while (1)//LOOP INFINITO
{
if(bit_is_clear(PIND, PIND0))//SI EL SW0 SE PULSA
PORTE |= _BV(PINE0);//ENCIENDE EL LED0
else
PORTE &= ~_BV(PINE0);//APAGA EL LED0
}
}
Pedro Ramírez <pedroramirez22@gmail.com> 1
2. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 2 Hs PUERTOS COMO GPIO
Proteus
1. En el Edit Component del ATMEGA128, seleccione el CKSEL Fuses: (0100)
Int. RC 8MHz.
2. En el Edit Component del ATMEGA128, seleccione el Program File el archivo
.hex generado dentro de la carpeta Debug en la ruta del proyecto del AVR Studio
en cuestión.
3. Simule el esquemático y compruebe que el LED enciende cuando se pulsa el switch.
2.4.2. Esquemático
Realice el esquemático de la Figura 2.1 en el Proteus.
PE0/RXD0/PDI 2
PE1/TXD0/PDO 3
PE2/XCK0/AIN0 4
PE3/OC3A/AIN1 5
PE4/OC3B/INT4 6
PE5/OC3C/INT5 7
PE6/T3/INT6 8
PE7/ICP3/INT7 9
PB0/SS10
PB1/SCK11
PB2/MOSI12
PB3/MISO13
PB4/OC014
PB5/OC1A15
PB6/OC1B16
PB7/OC2/OC1C17
PG3/TOSC2 18
PG4/TOSC1 19
RESET20
XTAL223
XTAL124
PD0/SCL/INT0 25
PD1/SDA/INT1 26
PD2/RXD1/INT2 27
PD3/TXD1/INT3 28
PD4/ICP1 29
PD5/XCK1 30
PD6/T1 31
PD7/T2 32
PG0/WR 33
PG1/RD 34
PC0/A835
PC1/A936
PC2/A1037
PC3/A1138
PC4/A1239
PC5/A1340
PC6/A1441
PC7/A1542
PG2/ALE 43
PA7/AD744
PA6/AD645
PA5/AD546
PA4/AD447
PA3/AD348
PA2/AD249
PA1/AD150
PA0/AD051
PF7/ADC7/TDI 54
PF6/ADC6/TDO 55
PF5/ADC5/TMS 56
PF4/ADC4/TCK 57
PF3/ADC3 58
PF2/ADC2 59
PF1/ADC1 60
PF0/ADC0 61
AREF62
AVCC64 PEN 1
U1
ATMEGA128
R1
330
D1
LED-YELLOW
Figura 2.1: Encender LED por software
Pedro Ramírez <pedroramirez22@gmail.com> 2
3. CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M07 MICROCONTROLADORES II
Laboratorio: D-19
Duración: 2 Hs PUERTOS COMO GPIO
2.4.3. Ejercicios propuestos
1. Realice el mismo ejercicio pero ahora conecte el LED al PUERTO A y el switch
al PUERTO B.
2. Monte un circuito en Proteus con 8 switches y 8 LEDs. Cuando se pulsa un switch
se enciende el LED correspondiente, es decir SW1-LED1, SW2-LED2, etc.
3. Monte un circuito en Proteus con 2 switches (MAR, PAR) y un LED. El programa
debe trabajar como un circuito de enclavamiento con prioridad a la marcha.
4. Monte un circuito en Proteus con 2 switches (MAR, PAR) y un LED. El programa
debe trabajar como un circuito de enclavamiento con prioridad al paro.
5. Monte un circuito en Proteus con 2 switches (A, B) y un LED. El programa debe
funcionar (con los switches) con la lógica de:
a) AND
b) OR
c) NAND
d) NOR
e) XOR
f ) XNOR
Obs: realice la tabla de verdad para verificar los resultados.
6. Realice un circuito que cuente con tres switches (A, B, C) y un LED, al presionar
A el LED debe parpadear a 10Hz, al presionar B el LED debe parpadear a 5Hz y
al presionar C el LED debe parpadear a 1Hz.
2.4.4. Conclusión
Pedro Ramírez <pedroramirez22@gmail.com> 3