LED povezivanje je prva stvar koju bismo trebali pokušati napraviti dok započinjemo s bilo kojim mikrokontrolerom. Dakle, u ovom uputstvu ćemo povezati LED sa 8051 mikrokontrolerom i napisat ćemo C program za treptanje LED-a. Koristili smo vrlo popularni mikrokontroler AT89S52 iz obitelji 8051 tvrtke ATMEL.
Prije nego što krenemo u detalje, trebali bismo dobiti kratku ideju o mikrokontroleru AT89S52. To je 40-pinski mikrokontroler i ima 4 porta (P0, P1, P2, P3), svaki port ima 8 pinova. Sa softverske točke gledišta svaki port možemo smatrati 8-bitnim registrom. Svaki pin koji ima jednu ulazno / izlaznu liniju, znači da se svaki pin može koristiti za ulaz, kao i za izlaz, tj. Za čitanje podataka s nekog uređaja poput senzora ili za pružanje rezultata na nekom izlaznom uređaju. Neki klinovi imaju dvostruku funkcionalnost, što je spomenuto u zagradama u donjem dijagramu. Dvostruko funkcionalno kao za prekide, brojače, mjerače vremena itd.

AT89S52 ima dvije vrste memorije, prva je RAM koja ima 256 bajtova memorije, a druga je EEPROM (elektronički izbrisiva i programibilna memorija samo za čitanje) koja ima 8k bajta memorije. RAM se koristi za pohranu podataka tijekom izvršavanja programa, a EEPROM za pohranu samog programa. EEPROM je flash memorija u koju smo koristili za snimanje programa.
Kružni dijagram i objašnjenje
Za povezivanje LED-a koristimo pin jedan na priključku 1. U ugrađenom C programiranju možemo pristupiti PIN-u 1 porta 1 pomoću P1_0. Na PIN 19 i 18, tj. XTAL1 i XTAL2, spojili smo kristalni oscilator frekvencije 11.0592MHz. Kristalni oscilator koristi se za generiranje impulsa takta, a impuls takta daje srednju vrijednost za izračun vremena, što je obavezno za sinkronizaciju svih događaja. Ova vrsta kristala koristi se u gotovo svakoj modernoj digitalnoj opremi, poput računala, satova itd. Najčešće korišteni kristal je kvarc. To je rezonantni oscilatorni krug i kondenzatori se koriste za osciliranje kristala, pa smo ovdje spojili 22pf kondenzatore. Možete pročitati o "rezonantnim krugovima" da biste saznali više.

Shema sklopa za LED povezivanje s 8051 mikrokontrolerom 89S52 prikazana je na gornjoj slici. Pin 31 (EA) spojen je na Vcc, koji je aktivni niski pin. Ovo bi trebalo biti povezano s Vcc-om kada ne koristimo nikakvu vanjsku memoriju. Pin 30 (ALE) i pin 29 (PSEN) koriste se za povezivanje mikrokontrolera s vanjskom memorijom, a pin 31 mikrokontroleru govori da koristi vanjsku memoriju kada je spojen na masu. Ne koristimo nikakvu vanjsku memoriju pa smo Pin31 spojili na Vcc.
Pin 9 (RST) je PIN za resetiranje, koji se koristi za resetiranje mikrokontrolera i program ponovno započinje od početka. Resetira mikrokontroler kad je spojen na HIGH. Za povezivanje RST pina koristili smo standardni sklop za resetiranje, otpornik od 10 k ohma i kondenzator od 1 uF.
Sad je zanimljiv dio da LED povezujemo obrnuto, znači negativnu nogu s PIN-om mikrokontrolera, jer mikrokontroler nema dovoljno snage da svijetli LED, tako da ovdje LED radi na negativnoj logici kao kada je pin P1_0 1 tada će se LED isključiti, a kada je izlaz pin 0, LED će se uključiti. Kad je PIN izlaz 0, ponaša se kao uzemljen i LED svijetli.
Objašnjenje koda
Uključeno je zaglavlje REGX52.h koje uključuje osnovne definicije registara. Postoje mnoge vrste varijabli i konstanti u ugrađenom C poput int, char, unsigned int, float itd., Možete ih lako naučiti. Ovdje koristimo nepotpisani int čiji je raspon od 0 do 65535. Koristimo "for loop" za stvaranje kašnjenja, tako da će LED biti uključen neko vrijeme (P1_0 = 0, negativna LED logika) i i OFF (P1_0 = 1, negativna LED logika) za odgođeno vrijeme. Općenito kada "for loop" radi 1275 puta, daje kašnjenje od 1 ms, pa smo stvorili funkciju "delay" za stvaranje DELAY i pozvali je iz glavnog programa (main ()). Možemo proći vrijeme ODGODE (u ms) dok pozivamo funkciju "kašnjenje" iz glavne funkcije. U programu "Dok (1)" znači da će se program izvršavati beskonačno.
Ukratko objašnjavam kako 1275 puta pokretanja petlje "for" daje kašnjenje od 1 ms:
U 8051, jedan strojni ciklus zahtijeva 12 kristalnih impulsa, a mi koristimo kristal od 11,0592 MHz.
Dakle, potrebno je vrijeme za jedan ciklus stroja: 12 / 11.0592 = 1.085us
Dakle, 1275 * 1,085 = 1,3 ms, 1275 puta petlje "for" daje gotovo 1 ms kašnjenja.
Točno vremensko kašnjenje proizvedeno programom "C" vrlo je teško izračunati, mjereći iz osciloskopa (CRO), jer (j = 0; j <1275; j ++) daje kašnjenje od gotovo 1 ms.
Tako možemo razumjeti jednostavnim povezivanjem LED-a s mikrokontrolerom 8051, da jednostavnim kodiranjem možemo komunicirati i kontrolirati hardver putem softvera (programiranja) pomoću mikrokontrolera. Također, programiranjem možemo manipulirati svakim priključkom i pinom mikrokontrolera.
