El LED intermitent és el primer pas que voldríeu fer per començar a utilitzar l’electrònica. En aquest tutorial connectarem un LED amb ATmega32, que és un microcontrolador de la sèrie AVR. Parpellejarem el LED a una velocitat de mig segon.
Components necessaris
Maquinari:
Microcontrolador ATmega32A
Font d'alimentació (5v)
Programador AVR-ISP
Condensador 100uF
LED
Resistència de 220Ω
Programari
Atmel studio 6.1
Progisp o màgia flash
Circuit i explicació de treball

Com es mostra al diagrama de circuits anterior per a la interfície del LED amb el microcontrolador AVR, aquí no cal connectar un cristall extern. Perquè l'ATMEGA funciona per defecte en un oscil·lador intern de resistència-condensador de 1 MHz. Només quan es necessita la precisió del rellotge, com a aplicació del recompte d’alta precisió, s’adjunta un cristall extern. Quan es compra el controlador per primera vegada, es fusiona per treballar per defecte amb cristall intern.
La resistència està connectada aquí per limitar el dibuix actual del LED. Recordeu que el controlador no pot proporcionar més de 30 mA als terminals.
Explicació de la programació
A continuació es mostra el programa perquè el microcontrolador ATmega32 parpellegi un LED. Els comentaris del codi expliquen l'objectiu de la línia individual del codi.
#include // header per habilitar el control del flux de dades sobre pins
#define F_CPU 1000000 // indicant la freqüència de cristall del controlador
#incloure
int main (buit)
{
DDRD = 0xFF; // (o 0b1111 1111) A AVRSTUDIO per dir al controlador que utilitzi un determinat bit de port com a entrada fem servir "ZERO", per dir-li que utilitzi un bit determinat com a sortida fem servir "ONE". Com que posem vuit "ONE", tots els pins de PORTD estan habilitats com a sortida. Si posem un zero com a "0b1111 0111", ara tots els pins 0,1,2,4,5,6,7 estan habilitats com a entrades i el PIN 3 està habilitat com a entrada.
mentre (1) // el bucle continua sempre i el LED parpellejarà per sempre
{
PORTD = 0xFF; // es diu que tots els pins de PORTD proporcionen una sortida de 5 V o que se'ls diu que treguin (LED encès)
_delay_ms (220); // retard de 200 ms
_delay_ms (220);); // retard de 200 ms
PORTD = 0x00; // es diu que tots els pins de PORTD proporcionen terreny a la sortida o abaix
_delay_ms (220);); // retard de 200 ms
_delay_ms (220);); // retard de 200 ms
}
}
