Rozhraní LED je první věc, kterou byste se pokusili udělat, když jste začínali s jakýmkoli mikrokontrolérem. Takže zde v tomto tutoriálu budeme propojovat LED s mikrokontrolérem 8051 a napíšeme program C, který bude LED blikat. Použili jsme velmi populární mikrokontrolér AT89S52, rodiny 8051, od ATMEL.
Než se pustíme do podrobností, měli bychom získat krátkou představu o mikrokontroléru AT89S52. Jedná se o 40kolíkový mikrokontrolér a má 4 porty (P0, P1, P2, P3), každý port má 8 pinů. Každý port můžeme z pohledu softwaru považovat za 8bitový registr. Každý pin, který má jednu vstupní / výstupní linku, znamená, že každý pin lze použít jak pro vstup, tak pro výstup, tj. Ke čtení dat z nějakého zařízení, jako je senzor, nebo k poskytnutí jeho výstupu do nějakého výstupního zařízení. Některé piny mají duální funkčnost, která byla zmíněna v závorkách v Pin Pin níže. Duální funkčně jako přerušení, čítače, časovače atd.
AT89S52 má dva typy paměti, první je RAM, která má 256 bajtů paměti a druhá je EEPROM (elektronicky vymazatelná a programovatelná paměť pouze pro čtení), která má 8k bajtů paměti. RAM se používá k ukládání dat během provádění programu a EEPROM slouží k ukládání samotného programu. EEPROM je flash paměť, do které jsme program vypálili.
Schéma zapojení a vysvětlení
K připojení LED používáme kolík jeden z portu 1. V integrovaném programování C můžeme získat PIN 1 portu 1 pomocí P1_0. K PIN 19 a 18 jsme připojili krystalový oscilátor o frekvenci 11,0592 MHz, tj. XTAL1 a XTAL2. Krystalový oscilátor se používá ke generování hodinových impulzů a hodinový pulz se používá k zajištění průměru pro výpočet časování, který je povinný pro synchronizaci všech událostí. Tyto typy krystalů používané téměř ve všech moderních digitálních zařízeních, jako jsou počítače, hodinky atd. Nejběžněji používaným krystalem je křemen. Je to rezonanční obvod oscilátoru a kondenzátory se používají k oscilaci krystalu, takže jsme sem připojili kondenzátory 22pf. Můžete si přečíst o „rezonančních obvodech“ a dozvědět se více.
Schéma zapojení pro LED propojení s 8051 mikrokontrolérem 89S52 je zobrazeno na výše uvedeném obrázku. Pin 31 (EA) je připojen k Vcc, což je aktivní nízký pin. Toto by mělo být připojeno k Vcc, když nepoužíváme žádnou externí paměť. Pin 30 (ALE) a pin 29 (PSEN) se používají k připojení mikrokontroléru k externí paměti a pin 31 říká mikrokontroléru, aby používal externí paměť, pokud je připojen k zemi. Nepoužíváme žádnou externí paměť, takže jsme připojili Pin31 k Vcc.
Pin 9 (RST) je resetovací PIN, který se používá k resetování mikrokontroléru a program se znovu spustí od začátku. Po připojení k HIGH resetuje mikrokontrolér. Pro připojení RST pinu jsme použili standardní resetovací obvody, 10k ohmový rezistor a 1uF kondenzátor.
Nyní je zajímavou částí to, že LED připojujeme obráceně, což znamená zápornou nohu s PIN mikrokontroléru, protože mikrokontrolér neposkytuje dostatek energie k rozsvícení LED, takže zde LED běží na záporné logice jako když, pin P1_0 je 1 potom se LED naladí VYPNUTO a když je pinový výstup 0, LED se zapne. Když je výstup PIN 0, chová se jako země a LED svítí.
Vysvětlení kódu
Byla zahrnuta hlavička REGX52.h, která obsahuje základní definice registrů. Ve vložených C je mnoho typů proměnných a konstant, jako int, char, unsigned int, float atd., Snadno se je naučíte. Zde používáme unsigned int, jehož rozsah je od 0 do 65535. Pro vytváření zpoždění používáme „for loop“, takže LED bude nějakou dobu svítit (P1_0 = 0, záporná logika LED) a a OFF (P1_0 = 1, záporná logika LED) pro zpožděný čas. Obecně, když „for loop“ běží 1275krát, dává zpoždění 1ms, takže jsme vytvořili funkci „delay“ pro vytvoření DELAY a zavolali ji z hlavního programu (main ()). Při volání funkce „delay“ z hlavní funkce můžeme projít DELAY time (v ms). V programu „Zatímco (1)“ znamená, že program bude probíhat nekonečně dlouho.
Stručně vysvětluji, jak 1275krát běh smyčky „for“ dává zpoždění 1 ms:
V 8051 vyžaduje 1 strojový cyklus k provedení 12 krystalových pulsů a my jsme použili 11.0592Mhz krystal.
Čas potřebný pro 1 strojový cyklus: 12 / 11,0592 = 1,085us
Takže 1275 * 1,085 = 1,3 ms, 1275 krát smyčky „pro“ dává téměř 1 ms zpoždění.
Přesné vyprodukování časového zpoždění programem „C“ je velmi obtížné vypočítat při měření z osciloskopu (CRO), protože (j = 0; j <1275; j ++) dává zpoždění téměř 1 ms.
Takže můžeme jednoduše pochopit propojení LED s mikrokontrolérem 8051, že s jednoduchým kódováním můžeme interagovat a ovládat hardware pomocí softwaru (programování) pomocí mikrokontroléru. Pomocí programování také můžeme manipulovat s každým portem a pinem mikrokontroléru.