LED piscando é a primeira etapa que você gostaria de dar para começar com a eletrônica. Neste tutorial vamos conectar um LED com ATmega32, que é um microcontrolador da série AVR. Vamos piscar o LED a meio segundo.
Componentes necessários
Hardware:
Microcontrolador ATmega32A
Fonte de alimentação (5v)
Programador AVR-ISP
Capacitor 100uF
CONDUZIU
Resistor 220Ω
Programas
Atmel studio 6.1
Progisp ou magia flash
Circuito e explicação de trabalho
Conforme mostrado no diagrama de circuito acima para fazer a interface do LED com o microcontrolador AVR, não há necessidade de conectar um cristal externo aqui. Porque o ATMEGA funciona no oscilador Resistor-Capacitor interno de 1 MHz no padrão. Somente quando a precisão do relógio é necessária, como aplicação de contagem de alta precisão, o cristal externo é anexado. Quando o controlador é comprado pela primeira vez, ele é fundido para funcionar no cristal interno por padrão.
O resistor é conectado aqui para limitar o consumo de corrente do LED. Lembre-se de que o controlador não pode fornecer mais de 30mA nos terminais.
Explicação de programação
O programa para o microcontrolador ATmega32 piscar um LED é mostrado abaixo. Os comentários no código explicam a finalidade da linha individual do código.
#include // cabeçalho para habilitar o controle do fluxo de dados sobre os pinos
# define F_CPU 1000000 // dizendo a frequência do cristal do controlador
#incluir
int main (vazio)
{
DDRD = 0xFF; // (ou 0b1111 1111) Em AVRSTUDIO para dizer ao controlador para usar um certo bit de uma porta como entrada usamos “ZERO”, para dizer-lhe para usar um certo bit como saída usamos “ONE”. Como colocamos oito “ONE's”, todos os pinos do PORTD são habilitados como saída. Se colocarmos um zero como “0b1111 0111”, agora todos os pinos 0,1,2,4,5,6,7 são habilitados como entradas e o PIN 3 habilitado como entrada.
enquanto (1) // o loop continua para sempre e o LED piscará para sempre
{
PORTD = 0xFF; // todos os pinos do PORTD fornecem saída de 5 V ou puxam para cima (LED aceso)
_delay_ms (220); // atraso para 200ms
_delay_ms (220);); // atraso para 200ms
PORTD = 0x00; // todos os pinos de PORTD são considerados para fornecer aterramento na saída ou puxar para baixo
_delay_ms (220);); // atraso para 200ms
_delay_ms (220);); // atraso para 200ms
}
}