A villogó LED az első lépés, amelyet meg szeretne tenni az elektronika használatának megkezdéséhez. Ebben az oktatóanyagban egy LED-et fogunk csatlakoztatni az ATmega32-hez, amely egy AVR sorozatú mikrovezérlő. Fél másodperc sebességgel villogni fogunk a LED-del.
Szükséges alkatrészek
Hardver:
ATmega32A mikrovezérlő
Tápegység (5v)
AVR-ISP programozó
100uF kondenzátor
VEZETTE
220Ω ellenállás
Szoftver
Atmel stúdió 6.1
Progisp vagy flash varázslat
Áramkör és működő magyarázat
Amint azt a fenti kapcsolási rajz mutatja a LED és az AVR mikrovezérlő összekapcsolására, itt nincs szükség külső kristály csatlakoztatására. Mivel az ATMEGA alapértelmezés szerint a belső 1 MHz-es ellenállás-kondenzátor oszcillátoron működik. Csak akkor, ha az óra pontosságára van szükség, nagy pontosságú számlálás alkalmazásakor külső kristály kapcsolódik. A vezérlő első vásárlásakor alapértelmezés szerint a belső kristályon működik.
Az ellenállás ide csatlakozik, hogy korlátozza a LED-től érkező áramfelvételt. Ne feledje, hogy a vezérlő nem tud 30mA-nál többet adni a terminálokon.
Programozási magyarázat
Az ATmega32 mikrokontroller LED-ek villogására szolgáló program az alábbiakban látható. A kódban szereplő megjegyzések elmagyarázzák a kód egyes sorainak célját.
#include // header az adatfolyam irányításának engedélyezéséhez a csapok felett
#define F_CPU 1000000 // a vezérlő kristály frekvenciájának megmondása
#include
int main (érvénytelen)
{
DDRD = 0xFF; // (vagy 0b1111 1111) Az AVRSTUDIO programban azt mondtuk a vezérlőnek, hogy egy portnak egy bizonyos bitjét használja bemenetként, a „ZERO” értéket használjuk, ha azt mondjuk, hogy egy bizonyos bitet használjon kimenetként, akkor az „ONE” -t használjuk. Mivel nyolc „ONE” -t helyeztünk el, a PORTD összes csapja engedélyezve van kimenetként. Ha nullát adunk „0b1111 0111” névre, akkor az összes 0,1,2,4,5,6,7 tű engedélyezve van bemenetként, és a 3 PIN engedélyezve van bemenetként.
míg az (1) // ciklus örökké tart, és a LED örökké villogni fog
{
PORTD = 0xFF; // állítólag a PORTD összes csapja 5v kimenetet szolgáltat, vagy azt mondják, hogy magasra húzza (LED BE)
késedelem_ms (220); // késés 200ms-ig
késedelem_ms (220);); // késés 200ms-ig
PORTD = 0x00; // állítólag a PORTD összes csapja földet ad a kimeneten, vagy lehúzza
késedelem_ms (220);); // késés 200ms-ig
késedelem_ms (220);); // késés 200ms-ig
}
}