ADC je analogno-digitalni pretvarač koji pretvara analogne podatke u digitalni format; obično se koristi za pretvaranje analognog napona u digitalni format. Analogni signal nema bezbroj vrijednosti poput sinusnog vala ili našeg govora, ADC ih pretvara u određene razine ili stanja, koja se mogu mjeriti brojevima kao fizička veličina. Umjesto kontinuirane konverzije, ADC periodički pretvara podatke, što je obično poznato kao brzina uzorkovanja. Telefonski modemjedan je od primjera ADC-a, koji se koristi za internet, pretvara analogne podatke u digitalne podatke, tako da računalo može razumjeti, jer računalo može razumjeti samo digitalne podatke. Glavna prednost upotrebe ADC-a je ta što se buka može učinkovito eliminirati iz izvornog signala, a digitalni signal može putovati učinkovitije od analognog. To je razlog zašto je digitalni zvuk vrlo jasan tijekom slušanja.
U današnje vrijeme na tržištu postoji puno mikrokontrolera koji su ugradili ADC s jednim ili više kanala. A pomoću njihovog ADC registra možemo sučeliti. Kada odaberemo obitelj 8051 mikrokontrolera za izradu bilo kojeg projekta, u kojem nam je potrebna ADC konverzija, tada koristimo vanjski ADC. Neki vanjski ADC čipovi su 0803.0804.0808.0809, a ima ih još mnogo. Danas ćemo povezati 8-kanalni ADC s mikrokontrolerom AT89s52, odnosno ADC0808 / 0809.
Komponente:
- 8051 mikrokontroler (AT89S52)
- ADC0808 / 0809
- LCD 16x2
- Otpornik (1k, 10k)
- LONAC (10k x4)
- Kondenzator (10uf, 1000uf)
- Crveni vodio
- Daska za kruh ili PCB
- 7805
- 11,0592 MHz kristal
- Vlast
- Spajanje žica
ADC0808 / 0809:
ADC0808 / 0809 je monolitni CMOS uređaj i upravljačka logika kompatibilna s mikroprocesorom i ima 28 pina koji daje 8-bitnu vrijednost na izlazu i 8-kanalne ADC ulazne pinove (IN0-IN7). Njegova je razlučivost 8, tako da može kodirati analogne podatke u jednu od 256 razina (2 8). Ovaj uređaj ima liniju adresa s tri kanala i to: ADDA, ADDB i ADDC za odabir kanala. Ispod je pin dijagram za ADC0808:

ADC0808 / 0809 zahtijeva impuls takta za pretvorbu. Možemo ga osigurati pomoću oscilatora ili pomoću mikrokontrolera. U ovom smo projektu primijenili frekvenciju pomoću mikrokontrolera.
Bilo koji ulazni kanal možemo odabrati pomoću adresnih linija, kao što možemo odabrati ulazni redak IN0 držeći sve tri linije adresa (ADDA, ADDB i ADDC) niskim. Ako želimo odabrati ulazni kanal IN2, trebamo održavati ADDA, ADDB niskim i ADDC visokim. Za odabir svih ostalih ulaznih kanala pogledajte u datoj tablici:
|
Naziv ADC kanala |
ADDC PIN |
ADDB PIN |
ADDA PIN |
|
IN0 |
NISKO |
NISKO |
NISKO |
|
IN1 |
NISKO |
NISKO |
VISOKO |
|
IN2 |
NISKO |
VISOKO |
NISKO |
|
IN3 |
NISKO |
VISOKO |
VISOKO |
|
IN4 |
VISOKO |
NISKO |
NISKO |
|
IN5 |
VISOKO |
NISKO |
VISOKO |
|
IN6 |
VISOKO |
VISOKO |
NISKO |
|
IN7 |
VISOKO |
VISOKO |
VISOKO |
Opis kruga:
Krug "Povezivanje ADC0808 s 8051" malo je složen i sadrži više spojnih žica za međusobno povezivanje uređaja. U ovom smo krugu uglavnom koristili AT89s52 kao 8051 mikrokontroler, ADC0808, potenciometar i LCD.
LCD 16x2 povezan je s mikrokontrolerom 89s52 u 4-bitnom načinu. Upravljački pin RS, RW i En izravno su povezani s pinovima P2.0, GND i P2.2. A podatkovni pin D4-D7 povezan je s pinovima P2.4, P2.5, P2.6 i P2.7 od 89s52. Izlazni pin ADC0808 izravno je povezan na priključak P1 AT89s52. Pribadače za adresne linije ADDA, ADDB, AADC povezane su na P3.0, P3.1 i P3.2.
ALE (Omogućen zasun adrese), SC (Start pretvorbe), EOC (Kraj pretvorbe), OE (Omogućavanje izlaza) i klinovi sata povezani su na P3.3, P3.4, P3.5, P3.6 i P3.7.
I ovdje smo koristili tri potenciometra spojena na pin 26, 27 i 28 ADC0808.
Za napajanje kruga koriste se 9-voltna baterija i 5-voltni regulator napona, naime 7805.

Radno:
U ovom smo projektu povezali tri kanala ADC0808. A za demonstraciju smo koristili tri promjenjiva otpornika. Kada napajamo krug, tada mikrokontroler inicijalizira LCD pomoću odgovarajuće naredbe, daje sat ADC čipu, odabire ADC kanal pomoću adresne linije i šalje signal pretvorbe početka ADC-u. Nakon toga ADC prvo čita odabrani ulaz ADC kanala i daje svoj pretvoreni izlaz mikrokontroleru. Tada mikrokontroler prikazuje svoju vrijednost na položaju Ch1 na LCD-u. A onda mikrokontroler mijenja ADC kanal pomoću adresne linije. A zatim ADC čita odabrani kanal i šalje izlaz mikrokontroleru. I prikazati na LCD-u kao naziv Ch2. I kao mudro za druge kanale.

Rad ADC0808 mnogo je sličan radu ADC0804. U ovom prvom mikrokontroleru daje signal takta od 500 KHz na ADC0808, koristeći prekid Timer 0, jer ADC zahtijeva signal sata za rad. Sada mikrokontroler šalje signal LOW to HIGH level na pin ALE (njegov aktivno-visoki pin) ADC0808 kako bi omogućio zasun na adresi. Zatim primjenom signala HIGH to LOW Level na SC (Start Conversion), ADC započinje analognu u digitalnu pretvorbu. A zatim pričekajte da se EOC (kraj pretvorbe) prikaže NISKO. Kada EOC pređe u LOW, to znači da je analogna u digitalnu konverziju dovršena i da su podaci spremni za upotrebu. Nakon toga, mikrokontroler omogućuje izlaznu liniju primjenom signala HIGH to LOW na OE pin ADC0808.
ADC0808 daje izlaz metričke pretvorbe omjera na svojim izlaznim pinovima. A formula za radiometrijsku pretvorbu dana je:
V in / (V fs -V z) = D x / (D max -D min)
Gdje
V in je ulazni napon za pretvorbu
V fs je puna skala Napon
V z je nulti napon
D x je podatkovna točka koja se mjeri
D max je Maksimalno ograničenje podataka
D min je Minimalno ograničenje podataka
Objašnjenje programa:
U program, prije svega uključujemo zaglavlje datoteke pijesak definira varijabilne i ulazno-izlazne igle za ADC i LCD.
# uključuju
Stvorena je funkcija za stvaranje kašnjenja (void delay), zajedno s nekim LCD funkcijama poput LCD inicijalizacije, ispisa niza, LCD naredbi itd. Lako ih možete pronaći u kodu. Pogledajte ovaj članak za LCD povezivanje s 8051 i njegovim funkcijama.
Nakon ovoga u glavnom programu inicijalizirali smo LCD i u skladu s tim postavili pinove EOC, ALE, EO, SC.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
A zatim program čita ADC i pohranjuje ADC izlaz u varijablu, a zatim ga šalje na LCD nakon decimalne u ASCII pretvorbu, koristeći funkcije void read_adc () i void adc (int i):
void read_adc () {broj = 0; ale = 1; sc = 1; kašnjenje (1); ale = 0; sc = 0; dok (eoc == 1); dok (eoc == 0); oe = 1; broj = ulaz_port; kašnjenje (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();
