ADC yra iš analoginio į skaitmeninį keitiklis, kuris konvertuoja analoginius duomenis į skaitmeninį formatą; paprastai jis naudojamas analoginei įtampai paversti skaitmeniniu formatu. Analoginiame signale nėra begalinės vertės, pvz., Sinusinės bangos ar mūsų kalbos, ADC jas paverčia tam tikrais lygiais ar būsenomis, kurias skaičiais galima išmatuoti kaip fizinį dydį. Vietoj nuolatinio keitimo, ADC periodiškai konvertuoja duomenis, kurie paprastai žinomi kaip atrankos dažnis. Telefoninis modemasyra vienas iš ADC, naudojamo internetui, pavyzdžių, jis konvertuoja analoginius duomenis į skaitmeninius duomenis, kad kompiuteris galėtų suprasti, nes kompiuteris gali suprasti tik skaitmeninius duomenis. Pagrindinis ADC naudojimo pranašumas yra tas, kad triukšmą galime efektyviai pašalinti iš pradinio signalo, o skaitmeninis signalas gali keliauti efektyviau nei analoginis. Dėl šios priežasties skaitmeninis garsas yra labai aiškus klausantis.
Šiuo metu rinkoje yra daugybė mikrovaldiklių, kurie turi integruotą ADC su vienu ar daugiau kanalų. Naudodamiesi jų ADC registru galime susieti. Kai mes pasirenkame 8051 mikrovaldiklių šeimą bet kuriam projektui, kuriame mums reikia ADC konversijos, tada mes naudojame išorinį ADC. Kai kurie išoriniai ADC lustai yra 0803,0804,0808,0809 ir yra daug daugiau. Šiandien mes sujungsime 8 kanalų ADC su „AT89s52“ mikrovaldikliu, būtent su ADC0808 / 0809.
Komponentai:
- 8051 mikrovaldiklis (AT89S52)
- ADC0808 / 0809
- 16x2 LCD ekranas
- Rezistorius (1k, 10k)
- POT (10 k x 4)
- Kondensatorius (10uf, 1000uf)
- Raudona vedė
- Duonos lenta arba PCB
- 7805
- 11,0592 MHz kristalas
- Galia
- Jungiamieji laidai
ADC0808 / 0809:
ADC0808 / 0809 yra monolitinis CMOS įrenginys ir su mikroprocesoriumi suderinama valdymo logika, turinti 28 kontaktus, suteikiančius 8 bitų išvesties vertę ir 8 kanalų ADC įvesties kaiščius (IN0-IN7). Jo skiriamoji geba yra 8, todėl ji gali užkoduoti analoginius duomenis į vieną iš 256 lygių (2 8). Šiame įrenginyje yra trys kanalų adresų eilutės: ADDA, ADDB ir ADDC kanalui pasirinkti. Žemiau yra ADC0808 kaiščių schema:
ADC0808 / 0809 konversijai reikalingas laikrodžio impulsas. Mes galime jį pateikti naudodami osciliatorių arba naudodami mikrovaldiklį. Šiame projekte mes pritaikėme dažnį naudodami mikrovaldiklį.
Bet kurį įvesties kanalą galime pasirinkti naudodamiesi adreso eilutėmis, pavyzdžiui, įvesties eilutę IN0 galime pasirinkti išlaikydami visas tris adreso eilutes (ADDA, ADDB ir ADDC) žemas. Jei norime pasirinkti įvesties kanalą IN2, turime išlaikyti žemą ADDA, ADDB ir aukštą ADDC. Norėdami pasirinkti visus kitus įvesties kanalus, pažiūrėkite į pateiktą lentelę:
ADC kanalo pavadinimas |
ADDC PIN kodas |
ADDB PIN kodas |
ADDA PIN kodas |
IN0 |
MAŽAI |
MAŽAI |
MAŽAI |
IN1 |
MAŽAI |
MAŽAI |
AUKŠTAS |
IN2 |
MAŽAI |
AUKŠTAS |
MAŽAI |
IN3 |
MAŽAI |
AUKŠTAS |
AUKŠTAS |
IN4 |
AUKŠTAS |
MAŽAI |
MAŽAI |
IN5 |
AUKŠTAS |
MAŽAI |
AUKŠTAS |
IN6 |
AUKŠTAS |
AUKŠTAS |
MAŽAI |
IN7 |
AUKŠTAS |
AUKŠTAS |
AUKŠTAS |
Grandinės aprašymas:
„Interfacing ADC0808 with 8051“ grandinė yra nedaug sudėtinga, joje yra daugiau jungiamojo laido, leidžiančio prijungti prietaisą vienas prie kito. Šioje grandinėje mes daugiausia naudojome AT89s52 kaip 8051 mikrovaldiklį, ADC0808, potenciometrą ir LCD.
16x2 skystųjų kristalų ekranas yra sujungtas su 89s52 mikrovaldikliu 4 bitų režimu. Valdymo kaiščiai RS, RW ir En yra tiesiogiai prijungti prie kaiščių P2.0, GND ir P2.2. Duomenų kaištis D4-D7 yra prijungtas prie 89s52 kaiščių P2.4, P2.5, P2.6 ir P2.7. ADC0808 išvesties kaištis yra tiesiogiai prijungtas prie AT89s52 prievado P1. Adreso eilutės kaiščiai ADDA, ADDB, AADC yra prijungti P3.0, P3.1 ir P3.2.
ALE (adreso užrakto įjungimas), SC (pradėti konversiją), EOC (konversijos pabaiga), OE (išvesties įgalinimas) ir laikrodžio kaiščiai yra prijungti prie P3.3, P3.4, P3.5, P3.6 ir P3.7.
Ir čia mes panaudojome tris potenciometrus, sujungtus ADC0808 26, 27 ir 28 kaiščiuose.
Grandinei maitinti naudojama 9 voltų baterija ir 5 voltų įtampos reguliatorius, būtent 7805.
Darbas:
Šiame projekte mes susiejome tris ADC0808 kanalus. Demonstravimui naudojome tris kintamuosius rezistorius. Kai mes įjungsime grandinę, mikrovaldiklis inicializuos LCD, naudodamas atitinkamą komandą, duoda laikrodį ADC lustui, parenka ADC kanalą naudodamas adreso eilutę ir siunčia pradžios konversijos signalą į ADC. Po to ADC pirmą kartą perskaito pasirinktą ADC kanalo įvestį ir pateikia savo konvertuotą išvestį mikrovaldikliui. Tada mikrovaldiklis rodo savo vertę Ch1 padėtyje LCD ekrane. Tada mikrovaldiklis pakeičia ADC kanalą naudodamas adreso eilutę. Tada ADC nuskaito pasirinktą kanalą ir siunčia išvestį į mikrovaldiklį. Ir rodyti LCD ekrane kaip pavadinimą Ch2. Ir kaip išmintinga kitiems kanalams.
ADC0808 darbas yra labai panašus į ADC0804 darbą. Šiuo atveju pirmasis mikrovaldiklis teikia 500 KHz laikrodžio signalą ADC0808, naudodamas „Timer 0“ pertraukimą, nes ADC veikimui reikalingas laikrodžio signalas. Dabar mikrovaldiklis siunčia signalą „LOW to HIGH“ į ADC0808 ALE kaištį (jo aktyvųjį aukštą kaištį), kad įjungtų skląsčio adresą. Tada, pritaikydamas HIGH to LOW Level signalą SC (Pradėti konversiją), ADC pradeda analoginio ir skaitmeninio keitimą. Tada palaukite, kol EOC (konversijos pabaigos) kaištis eis LOW. Kai EOC eina LOW, tai reiškia, kad analoginis į skaitmeninį konversija baigta ir duomenys yra paruošti naudoti. Po to mikrovaldiklis įgalina išvesties liniją, pritaikydamas HIGH - LOW signalą ADC0808 OE kaiščiui.
ADC0808 pateikia metrinės konversijos koeficiento išvestį ties išvesties kaiščiais. Radiometrinės konversijos formulę pateikia:
V į / (V FS -V Z) = D x / (D maks -D -oji min)
Kur
V in yra įėjimo įtampa konversijai.
V fs yra visa skalė. Įtampa
V z yra nulinė įtampa
D x yra matuojamas duomenų taškas
D max yra maksimali duomenų riba
D min yra minimali duomenų riba
Programos paaiškinimas:
Pirmiausia į programą įtraukiame antraštės failo smėlį, kuris apibrėžia kintamuosius, įvesties ir išvesties kaiščius ADC ir LCD.
# įtraukti
Sukurta uždelsimo sukūrimo funkcija (negaliojantis uždelsimas), kartu su kai kuriomis LCD funkcijomis, tokiomis kaip LCD inicializavimas, eilutės spausdinimas, LCD komandoms ir kt. Jas galite lengvai rasti Kode. Šiame straipsnyje rasite LCD sąsają su 8051 ir jo funkcijomis.
Po to pagrindinėje programoje mes inicijuojame LCD ir atitinkamai nustatome EOC, ALE, EO, SC kaiščius.
negaliojantis main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); „lcdprint“ („ADC 0808/0809“);
Tada programa nuskaito ADC ir saugo ADC išvestį kintamajame, o tada siunčia ją į LCD po dešimtainio skaičiaus į ASCII konvertavimo, naudodama void read_adc () ir void adc (int i) funkcijas:
void skaityti_adc () {skaičius = 0; ale = 1; sc = 1; vėlavimas (1); ale = 0; sc = 0; o (eoc == 1); o (eoc == 0); oe = 1; skaičius = input_port; vėlavimas (1); oe = 0; } negaliojantis adc (int i) {switch (i) {atvejis 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); skaityti_adc ();