ADC je analógovo-digitálny prevodník, ktorý prevádza analógové dáta do digitálneho formátu; obvykle sa používa na prevod analógového napätia do digitálneho formátu. Analógový signál nemá nekonečné množstvo hodnôt ako sínusová vlna alebo naša reč, ADC ich prevádza do konkrétnych úrovní alebo stavov, ktoré je možné merať v číslach ako fyzickú veličinu. Namiesto nepretržitej konverzie prevádza ADC dáta pravidelne, čo sa zvyčajne nazýva vzorkovacia rýchlosť. Telefónny modemje jedným z príkladov ADC, ktorý sa používa pre internet, prevádza analógové dáta na digitálne dáta, aby počítač porozumel, pretože počítač porozumie iba digitálnym údajom. Hlavnou výhodou použitia ADC je to, že šum môžeme efektívne eliminovať z pôvodného signálu a digitálny signál môže cestovať efektívnejšie ako analógový. To je dôvod, prečo je digitálny zvuk pri počúvaní veľmi čistý.
V súčasnosti je na trhu veľa mikrokontrolérov, ktoré majú zabudovaný ADC s jedným alebo viacerými kanálmi. A pomocou ich registra ADC sa môžeme prepojiť. Keď vyberieme rodinu mikrokontrolérov 8051 na výrobu akýchkoľvek projektov, v ktorých potrebujeme konverziu ADC, použijeme externý ADC. Niektoré externé čipy ADC sú 0803,0804,0808,0809 a je ich oveľa viac. Dnes sa chystáme prepojiť 8-kanálový ADC s mikrokontrolérom AT89s52, konkrétne ADC0808 / 0809.
Komponenty:
- Mikrokontrolér 8051 (AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- Rezistor (1k, 10k)
- POT (10k x4)
- Kondenzátor (10uf, 1000uf)
- Červená viedla
- Chlebová doska alebo DPS
- 7805
- 11,0592 MHz kryštál
- Moc
- Pripojovacie vodiče
ADC0808 / 0809:
ADC0808 / 0809 je monolitické zariadenie CMOS a riadiaca logika kompatibilná s mikroprocesorom a má 28 pinov, ktoré poskytujú 8-bitovú hodnotu na výstupe a 8-kanálové vstupné piny ADC (IN0-IN7). Jeho rozlíšenie je 8, takže dokáže kódovať analógové dáta do jednej z 256 úrovní (2 8). Toto zariadenie má trojkanálový adresný riadok, a to: ADDA, ADDB a ADDC na výber kanála. Ďalej je uvedený pinový diagram pre ADC0808:
ADC0808 / 0809 vyžaduje na prevod hodinový impulz. Môžeme to zabezpečiť pomocou oscilátora alebo pomocou mikrokontroléra. V tomto projekte sme aplikovali frekvenciu pomocou mikrokontroléra.
Akýkoľvek vstupný kanál môžeme zvoliť pomocou riadkov adresy, podobne ako môžeme zvoliť vstupný riadok IN0 tak, že udržíme všetky tri riadky adresy (ADDA, ADDB a ADDC) na nízkej úrovni. Ak chceme zvoliť vstupný kanál IN2, musíme udržiavať ADDA, ADDB nízku a ADDC vysokú. Ak chcete zvoliť všetky ostatné vstupné kanály, pozrite sa na príslušnú tabuľku:
Názov kanálu ADC |
PIN ADDC |
ADDB PIN |
PIN ADDA |
IN0 |
NÍZKY |
NÍZKY |
NÍZKY |
IN1 |
NÍZKY |
NÍZKY |
VYSOKÁ |
IN2 |
NÍZKY |
VYSOKÁ |
NÍZKY |
IN3 |
NÍZKY |
VYSOKÁ |
VYSOKÁ |
IN4 |
VYSOKÁ |
NÍZKY |
NÍZKY |
IN5 |
VYSOKÁ |
NÍZKY |
VYSOKÁ |
IN6 |
VYSOKÁ |
VYSOKÁ |
NÍZKY |
IN7 |
VYSOKÁ |
VYSOKÁ |
VYSOKÁ |
Popis obvodu:
Obvod „Prepojenie ADC0808 s 8051“ je málo zložitý, ktorý obsahuje viac spojovacieho vodiča na vzájomné pripojenie zariadenia. V tomto obvode sme používali hlavne AT89s52 ako mikrokontrolér 8051, ADC0808, potenciometer a LCD.
Displej 16x2 LCD je spojený s mikrokontrolérom 89s52 v 4-bitovom režime. Ovládací pin RS, RW a En sú priamo spojené s pinmi P2.0, GND a P2.2. A dátový pin D4-D7 je pripojený k pinom P2.4, P2.5, P2.6 a P2.7 z 89s52. Výstupný pin ADC0808 je priamo pripojený k portu P1 na AT89s52. Kolíky adresného riadku ADDA, ADDB, AADC sú spojené na P3.0, P3.1 a P3.2.
ALE (Povolenie blokovania adresy), SC (Spustiť konverziu), EOC (Koniec konverzie), OE (Výstup povolený) a časové piny sú pripojené na P3.3, P3.4, P3.5, P3.6 a P3.7.
A tu sme použili tri potenciometre zapojené na pinoch 26, 27 a 28 na ADC0808.
Na napájanie obvodu sa používa 9 voltová batéria a 5 voltový regulátor napätia, konkrétne 7805.
Pracovné:
V tomto projekte sme prepojili tri kanály ADC0808. A na ukážku sme použili tri variabilné odpory. Keď napájame obvod, mikrokontrolér inicializuje LCD pomocou príslušného príkazu, dá čipu ADC čas, vyberie kanál ADC pomocou adresného riadku a odošle začiatočný konverzný signál do ADC. Potom ADC najskôr načíta vybraný vstup kanálu ADC a dá prevedený výstup do mikrokontroléra. Potom mikrokontrolér zobrazí svoju hodnotu na pozícii Ch1 na LCD displeji. A potom mikrokontrolér zmení kanál ADC pomocou riadku adresy. A potom ADC prečíta vybraný kanál a odošle výstup do mikrokontroléra. A ukázať na LCD ako meno Ch2. A ako múdre pre ostatné kanály.
Práca s ADC0808 je veľmi podobná práci s ADC0804. V tomto poskytuje prvý mikrokontrolér hodinový signál 500 KHz do ADC0808 pomocou prerušenia Timer 0, pretože ADC vyžaduje na svoju činnosť hodinový signál. Teraz mikrokontrolér vysiela signál NÍZKEJ až VYSOKEJ úrovne na pin ALE (jeho aktívny vysoký pin) ADC0808, aby sa povolila západka v adrese. Potom aplikáciou signálu HIGH to LOW Level na SC (Start Conversion) spustí ADC analógovo-digitálnu konverziu. A potom počkajte, kým špendlík EOC (End of Conversion) klesne na LOW. Keď hodnota EOC klesne na LOW, znamená to, že analógovo-digitálna konverzia bola dokončená a údaje sú pripravené na použitie. Potom mikrokontrolér povolí výstupné vedenie aplikáciou signálu HIGH to LOW na OE pin ADC0808.
ADC0808 poskytuje pomerový výstup metrickej konverzie na svojich výstupných kolíkoch. A vzorec pre rádiometrickú konverziu je daný:
V in / (V fs -V z) = D x / (D max -D min)
Kde
V in je vstupné napätie na prevod
V fs je celá stupnica Napätie
V z je nulové napätie
D x je údajový bod, ktorý je meradlom
D max je maximálny dátový limit
D min je minimálny dátový limit
Vysvetlenie programu:
V programe predovšetkým zahrnieme hlavičkový súbor sand definuje premenné a vstupné a výstupné piny pre ADC a LCD.
# zahrnúť
Bola vytvorená funkcia pre vytvorenie oneskorenia (void delay) spolu s niektorými funkciami LCD, ako je inicializácia LCD, tlač reťazca, príkazy LCD atď. Ľahko ich nájdete v kóde. V tomto článku nájdete informácie o rozhraní LCD s rozhraním 8051 a jeho funkciami.
Potom v hlavnom programe inicializujeme LCD a podľa toho nastavíme piny 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 potom program načíta ADC a uloží výstup ADC do premennej a potom ho pošle na LCD po desatinnej konverzii na ASCII pomocou funkcií void read_adc () a void adc (int i):
void read_adc () {číslo = 0; ale = 1; sc = 1; oneskorenie (1); ale = 0; sc = 0; while (eoc == 1); while (eoc == 0); oe = 1; number = input_port; oneskorenie (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();