El LED parpadeante es el primer paso que le gustaría dar para comenzar con la electrónica. En este tutorial vamos a conectar un LED con ATmega32, que es un microcontrolador de la serie AVR. Vamos a hacer parpadear el LED a medio segundo.
Componentes requeridos
Hardware:
Microcontrolador ATmega32A
Fuente de alimentación (5v)
Programador AVR-ISP
Condensador 100uF
LED
Resistencia de 220Ω
Software
Estudio Atmel 6.1
Progisp o magia flash
Circuito y explicación de funcionamiento
Como se muestra en el diagrama de circuito anterior para la interfaz del LED con el microcontrolador AVR, no es necesario conectar un cristal externo aquí. Porque el ATMEGA funciona en el oscilador interno de resistencia-capacitor de 1MHz por defecto. Solo cuando se necesita la precisión del reloj, como aplicación de conteo de alta precisión, se adjunta cristal externo. Cuando se compra el controlador por primera vez, se fusiona para funcionar en el cristal interno de forma predeterminada.
La resistencia está conectada aquí para limitar el consumo de corriente del LED. Recuerde, el controlador no puede proporcionar más de 30 mA en los terminales.
Explicación de programación
El programa para que el microcontrolador ATmega32 haga parpadear un LED se muestra a continuación. Los comentarios en el código explican el propósito de la línea individual del código.
#include // encabezado para permitir el control del flujo de datos sobre los pines
#define F_CPU 1000000 // indicando la frecuencia del cristal del controlador
#incluir
int main (vacío)
{
DDRD = 0xFF; // (o 0b1111 1111) En AVRSTUDIO para decirle al controlador que use un cierto bit de un puerto como entrada usamos “ZERO”, para decirle que use un cierto bit como salida usamos “ONE”. Como ponemos ocho “UNOS”, todos los pines de PORTD están habilitados como salida. Si ponemos un cero como “0b1111 0111”, ahora todos los pines 0,1,2,4,5,6,7 están habilitados como entradas y el PIN 3 está habilitado como entrada.
while (1) // el bucle continúa indefinidamente y el LED parpadeará indefinidamente
{
PORTD = 0xFF; // Se dice que todos los pines de PORTD proporcionan una salida de 5v o se les dice que tiren alto (LED ENCENDIDO)
_delay_ms (220); // retraso de 200ms
_delay_ms (220);); // retraso de 200ms
PORTD = 0x00; // Se dice que todos los pines de PORTD proporcionan tierra en la salida o bajan
_delay_ms (220);); // retraso de 200ms
_delay_ms (220);); // retraso de 200ms
}
}