La LED clignotante est la première étape à franchir pour vous familiariser avec l'électronique. Dans ce tutoriel, nous allons connecter une LED avec ATmega32, qui est un microcontrôleur de la série AVR. Nous allons faire clignoter la LED à une demi-seconde.
Composants requis
Matériel:
Microcontrôleur ATmega32A
Alimentation (5v)
Programmeur AVR-ISP
Condensateur 100uF
LED
Résistance 220Ω
Logiciel
Atmel Studio 6.1
Progisp ou magie flash
Circuit et explication de fonctionnement
Comme indiqué dans le schéma de circuit ci-dessus pour l'interfaçage de la LED avec le microcontrôleur AVR, il n'est pas nécessaire de connecter un cristal externe ici. Parce que l'ATMEGA fonctionne par défaut sur l'oscillateur résistance-condensateur interne de 1 MHz. Ce n'est que lorsque la précision de l'horloge est nécessaire, comme application d'un comptage de haute précision, que le cristal externe est attaché. Lorsque le contrôleur est acheté pour la première fois, il est fusionné pour fonctionner par défaut sur le cristal interne.
La résistance est connectée ici pour limiter la consommation de courant de la LED. N'oubliez pas que le contrôleur ne peut pas fournir plus de 30 mA aux bornes.
Explication de la programmation
Le programme du microcontrôleur ATmega32 pour faire clignoter une LED est illustré ci-dessous. Les commentaires dans le code expliquent le but de la ligne individuelle du code.
#include // en-tête pour activer le contrôle du flux de données sur les broches
#define F_CPU 1000000 // indiquant la fréquence du cristal du contrôleur
#comprendre
int main (void)
{
DDRD = 0xFF; // (ou 0b1111 1111) Dans AVRSTUDIO pour dire au contrôleur d'utiliser un certain bit d'un port comme entrée, nous utilisons "ZERO", pour lui dire d'utiliser un certain bit comme sortie, nous utilisons "ONE". Puisque nous mettons huit «ONE», toutes les broches de PORTD sont activées comme sortie. Si nous mettons un zéro comme «0b1111 0111», maintenant toutes les broches 0,1,2,4,5,6,7 sont activées comme entrées et la broche 3 est activée comme entrée.
while (1) // la boucle se poursuit indéfiniment et la LED clignotera indéfiniment
{
PORTD = 0xFF; // toutes les broches de PORTD sont censées fournir une sortie 5v ou doivent tirer vers le haut (LED allumée)
_delay_ms (220); // délai de 200 ms
_delay_ms (220);); // délai de 200 ms
PORTD = 0x00; // toutes les broches de PORTD sont censées fournir la masse en sortie ou tirer vers le bas
_delay_ms (220);); // délai de 200 ms
_delay_ms (220);); // délai de 200 ms
}
}