A LED-es interfész az első dolog, amit megpróbálna megtenni, miközben bármilyen mikrovezérlővel elkezdődik. Tehát itt, ebben az oktatóanyagban, összekapcsolunk egy LED-et a 8051 mikrovezérlővel, és írunk egy C programot a LED villogására. Egy nagyon népszerű AT89S52 mikrovezérlőt használtunk, a 8051 családból, az ATMEL.
A részletek elõtt röviden át kell gondolnunk az AT89S52 mikrovezérlõt. 40 tűs mikrovezérlő, és 4 porttal rendelkezik (P0, P1, P2, P3), mindegyik portnak 8 érintkezője van. Szoftver szempontból minden portot 8 bites regiszternek tekinthetünk. Minden egyes érintkezõnek egy bemeneti / kimeneti vonala van, ami azt jelenti, hogy minden érintkezõ használható bemenetre és kimenetre is, azaz valamilyen eszköz, például szenzor adatainak kiolvasására vagy kimenetének átadására valamilyen kimeneti eszközre. Néhány csap rendelkezik a kettős funkcióval, amelyet az alábbi Pin Diagram zárójelben említett. Funkcionálisan kettős, például megszakításhoz, számlálókhoz, időzítőkhöz stb.
Az AT89S52 kétféle memóriával rendelkezik, az első a RAM, amelynek 256 bájt memóriája van, a második pedig az EEPROM (elektronikusan törölhető és programozható, csak olvasható memória), amely 8 k bájt memóriával rendelkezik. A RAM-ot az adatok tárolására használják egy program végrehajtása során, az EEPROM-ot pedig a program tárolására használják. Az EEPROM az a flash memória, amelybe a programot beírtuk.
Áramkör diagram és magyarázat
A LED csatlakoztatásához az 1. port egyikét használjuk. A beágyazott C programozás tudjuk elérni a PIN 1 port 1 használatával P1_0. Csatlakoztattunk 11,0592MHz frekvenciájú kristályoszcillátort a 19-es és 18-as PIN kódhoz, azaz az XTAL1 és XTAL2. A kristályoszcillátort az óraimpulzusok előállítására használják, az óraimpulzust pedig az időszámítás átlagának biztosítására, amely kötelező az összes esemény szinkronizálásához. Az ilyen típusú kristályokat szinte minden modern digitális berendezésben használják, például számítógépekben, órákban stb. A leggyakrabban használt kristály a kvarc. Ez egy rezonáns oszcillátor áramkör, és kondenzátorokat használnak a kristály oszcillálására, ezért itt 22pf kondenzátorokat csatlakoztattunk. A „rezonáns áramkörökről” többet tudhat meg.
A 8051 89S52 mikrovezérlővel összekötő LED kapcsolási rajzát a fenti ábra mutatja. A 31. érintkező (EA) a Vcc-hez csatlakozik, amely egy aktív alacsony tű. Ezt akkor kell csatlakoztatni a Vcc-hez, ha nem használunk semmilyen külső memóriát. A 30-as (ALE) és a 29-es (PSEN) érintkezőket a mikrovezérlőnek a külső memóriához történő csatlakoztatására használják, a 31-es érintkező pedig megmondja a mikrovezérlőnek, hogy külső memóriát használjon, amikor a földre van csatlakoztatva. Nem használunk külső memóriát, ezért a Pin31-et csatlakoztattuk a Vcc-hez.
A 9. tű (RST) a visszaállítási PIN, amelyet a mikrovezérlő alaphelyzetbe állítására használnak, és a program újra kezdődik az elejétől. Visszaállítja a mikrovezérlőt, amikor a HIGH-hoz csatlakozik. Az RST tű csatlakoztatásához standard reset áramkört, 10k ohmos ellenállást és 1uF kondenzátort használtunk.
Itt az érdekes rész az, hogy a LED-et fordítva kapcsoljuk, negatív lábat jelent a mikrovezérlő PIN-kódjával, mert a mikrovezérlő nem biztosít elegendő energiát egy LED világításához, ezért itt a LED negatív logikán működik, mint amikor a P1_0 tű 1 akkor a LED kikapcsol és ha a tűkimenet 0, akkor a LED bekapcsol. Ha a PIN kimenet 0, akkor földelésként viselkedik, és a LED világít.
Kód Magyarázat
A REGX52.h fejléc az alapregisztrációs definíciók beillesztésére került be. A beágyazott C-ben sokféle változó és konstans létezik, például int, char, előjel nélküli int, lebegő stb., Könnyedén megtanulhatja őket. Itt olyan előjel nélküli int-et használunk, amelynek tartománya 0 és 65535 között van. A „for loop” -ot használjuk a késleltetés létrehozásához, így a LED egy ideig folyamatosan világít (P1_0 = 0, negatív LED logika) és kikapcsol (P1_0 = 1)., negatív LED logika) késleltetett időre. Általában, amikor a „for loop” 1275-szeres fut, 1 ms késleltetést ad, ezért létrehoztunk egy „delay” funkciót a DELAY létrehozásához, és a fő programból hívtuk meg (main ()). A Késleltetési időt (ms-ban) átadhatjuk, miközben a „késleltetés” funkciót hívjuk a fő funkcióból. A programban a „Míg (1)” azt jelenti, hogy a program végtelenül fog végrehajtani.
Röviden elmagyarázom, hogy a „for” hurok 1275-szeres futása hogyan adja meg az 1ms késleltetést:
8051-ben 1 gépi ciklus végrehajtásához 12 kristályimpulzus szükséges, és 11,0592Mhz kristályt használunk.
Tehát egy gépi ciklushoz szükséges idő: 12 / 11,0592 = 1,085us
Tehát 1275 * 1,085 = 1,3 ms, a „for” hurok 1275-szerese közel 1ms késést ad.
Az oszcilloszkópból (CRO) mérve nagyon nehéz kiszámítani a „C” program által előállított pontos késleltetési eredményt, mivel (j = 0; j <1275; j ++) közel 1 ms késleltetést eredményeznek.
Tehát a LED és a 8051 mikrovezérlő egyszerű összekapcsolásával megérthetjük, hogy egy egyszerű kódolással kölcsönhatásba léphetünk és vezérelhetjük a hardvert szoftver (programozás) segítségével a mikrovezérlő segítségével. Programozással manipulálhatjuk a mikrovezérlő egyes portjait és csapjait is.