ADC ir analogais cipars pārveidotājs, kas pārveido analogos datus ciparu formātā; parasti to izmanto, lai pārveidotu analogo spriegumu ciparu formātā. Analogajam signālam nav bezgalīgas vērtības, piemēram, sinusa vai mūsu runas, ADC tos pārveido noteiktos līmeņos vai stāvokļos, kurus skaitļos var izmērīt kā fizisko lielumu. Nepārtrauktas konvertēšanas vietā ADC periodiski konvertē datus, ko parasti dēvē par izlases ātrumu. Tālruņa modemsir viens no ADC piemēriem, kas tiek izmantots internetam, tas pārveido analogos datus par digitāliem datiem, lai dators varētu saprast, jo dators var saprast tikai digitālos datus. ADC izmantošanas galvenā priekšrocība ir tā, ka troksni var efektīvi novērst no sākotnējā signāla, un digitālais signāls var pārvietoties efektīvāk nekā analogais. Tāpēc klausīšanās laikā digitālais audio ir ļoti skaidrs.
Pašlaik tirgū ir daudz mikrokontrolleru, kas ir iebūvējuši ADC ar vienu vai vairākiem kanāliem. Un, izmantojot viņu ADC reģistru, mēs varam saskarni. Kad mēs izvēlamies 8051 mikrokontrolleru saimi jebkura projekta veikšanai, kurā mums nepieciešama ADC pārveidošana, mēs izmantojam ārējo ADC. Dažas ārējās ADC mikroshēmas ir 0803,0804,0808,0809, un ir daudz vairāk. Šodien mēs saskarsimies ar 8 kanālu ADC ar AT89s52 mikrokontrolleru, proti, ADC0808 / 0809.
Komponenti:
- 8051 mikrokontrolleris (AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- Rezistors (1k, 10k)
- POT (10 000 x 4)
- Kondensators (10uf, 1000uf)
- Sarkans vadīja
- Maizes dēlis vai PCB
- 7805
- 11,0592 MHz kristāls
- Jauda
- Savienojošie vadi
ADC0808 / 0809:
ADC0808 / 0809 ir monolīta CMOS ierīce un ar mikroprocesoru saderīga vadības loģika, un tai ir 28 kontakti, kas dod 8 bitu vērtību izvadē un 8 kanālu ADC ieejas tapas (IN0-IN7). Tās izšķirtspēja ir 8, lai tā varētu kodēt analogos datus vienā no 256 līmeņiem (2 8). Šai ierīcei ir trīs kanālu adrešu rinda, proti: ADDA, ADDB un ADDC kanāla izvēlei. Zemāk ir ADC0808 tapu diagramma:
ADC0808 / 0809 pārveidošanai nepieciešams pulksteņa impulss. Mēs to varam nodrošināt, izmantojot oscilatoru vai izmantojot mikrokontrolleru. Šajā projektā mēs izmantojām frekvenci, izmantojot mikrokontrolleru.
Mēs varam izvēlēties jebkuru ievades kanālu, izmantojot adreses līnijas, tāpat kā ievades līniju IN0, atlasot visas trīs adrešu līnijas (ADDA, ADDB un ADDC). Ja mēs vēlamies izvēlēties ieejas kanālu IN2, mums jāsaglabā ADDA, ADDB zems un ADDC augsts. Lai atlasītu visus pārējos ievades kanālus, ieskatieties dotajā tabulā:
ADC kanāla nosaukums |
ADDC PIN |
ADDB PIN |
ADDA PIN |
IN0 |
ZEMS |
ZEMS |
ZEMS |
IN1 |
ZEMS |
ZEMS |
AUGSTS |
IN2 |
ZEMS |
AUGSTS |
ZEMS |
IN3 |
ZEMS |
AUGSTS |
AUGSTS |
IN4 |
AUGSTS |
ZEMS |
ZEMS |
IN5 |
AUGSTS |
ZEMS |
AUGSTS |
IN6 |
AUGSTS |
AUGSTS |
ZEMS |
IN7 |
AUGSTS |
AUGSTS |
AUGSTS |
Ķēdes apraksts:
“Interfacing ADC0808 with 8051” shēma ir maz sarežģīta, un tajā ir vairāk savienojošo vadu ierīces savienošanai viens ar otru. Šajā ķēdē mēs galvenokārt izmantojām AT89s52 kā 8051 mikrokontrolleru, ADC0808, potenciometru un LCD.
16x2 LCD ir savienots ar 89s52 mikrokontrolleru 4 bitu režīmā. Vadības tapa RS, RW un En ir tieši savienota ar tapām P2.0, GND un P2.2. Datu tapa D4-D7 ir savienota ar 89s52 tapām P2.4, P2.5, P2.6 un P2.7. ADC0808 izejas tapa ir tieši savienota ar AT89s52 portu P1. Adreses līnijas tapas ADDA, ADDB, AADC ir savienotas pie P3.0, P3.1 un P3.2.
ALE (adreses fiksatora iespējošana), SC (sākt konvertēšanu), EOC (konvertēšanas beigas), OE (izejas iespējošana) un pulksteņa tapas ir savienotas pie P3.3, P3.4, P3.5, P3.6 un P3.7.
Un šeit mēs esam izmantojuši trīs potenciometrus, kas savienoti ar ADC0808 26., 27. un 28. tapu.
Ķēdes barošanai izmanto 9 voltu akumulatoru un 5 voltu sprieguma regulatoru, proti, 7805.
Darbs:
Šajā projektā mēs esam sasaistījuši trīs ADC0808 kanālus. Demonstrācijai mēs izmantojām trīs mainīgus rezistorus. Kad mēs ieslēdzam ķēdi, mikrokontrolleris inicializē LCD, izmantojot atbilstošu komandu, dod pulksteni ADC mikroshēmai, izvēlas ADC kanālu, izmantojot adreses līniju, un nosūta sākuma pārveidošanas signālu ADC. Pēc tam ADC vispirms nolasa izvēlēto ADC kanāla ieeju un piešķir pārveidoto izvadi mikrokontrollerim. Tad mikrokontrolleris parāda tā vērtību LCD Ch1 pozīcijā. Pēc tam mikrokontrolleris maina ADC kanālu, izmantojot adreses līniju. Tad ADC nolasa izvēlēto kanālu un nosūta izvadi uz mikrokontrolleru. Un parādiet LCD kā nosaukumu Ch2. Un kā gudri citiem kanāliem.
ADC0808 darbība ir daudz līdzīga ADC0804 darbībai. Šajā laikā pirmais mikrokontrolleris nodrošina 500 KHz pulksteņa signālu ADC0808, izmantojot taimera 0 pārtraukumu, jo ADC darbībai nepieciešams pulksteņa signāls. Tagad mikrokontrolleris nosūta LOW to HIGH līmeņa signālu uz ADC0808 ALE kontaktu (tā aktīvo un augsto kontaktu), lai iespējotu fiksatoru adresē. Tad, pielietojot SC (Start Conversion) signālu HIGH to LOW Level, ADC sāk pārveidot analogo uz ciparu. Un tad gaidiet, līdz EOC (Reklāmguvuma beigas) tapa ir LOW. Kad EOC iet LOW, tas nozīmē, ka analogā uz ciparu pārveidošana ir pabeigta un dati ir gatavi lietošanai. Pēc tam mikrokontrolleris iespējo izejas līniju, piemērojot ADC0808 OE tapai signālu HIGH to LOW.
ADC0808 nodrošina metriskās pārrēķina koeficientu izejas tapās. Radiometriskās pārveidošanas formulu izsaka šādi:
V in / (V fs -V z) = D x / (D max -D min)
Kur
V jo ir ieejas sprieguma maiņas
V fs ir pilna skala Spriegums
V z ir nulle spriegums
D x ir datu punktu ir pasākums
D max ir maksimālais datu ierobežojums
D min ir minimālā datu ierobežojums
Programmas skaidrojums:
Programmā, pirmkārt, mēs iekļaujam galvenes failu smiltis definē ADC un LCD mainīgos un ievades un izvades tapas.
# iekļaut
Tika izveidota funkcija aiztures izveidošanai (tukšuma aizture), kā arī dažas LCD funkcijas, piemēram, LCD inicializēšana, virknes drukāšana, LCD komandas utt. Tos var viegli atrast sadaļā Code. Pārbaudiet, vai šajā rakstā ir LCD saskarne ar 8051 un tā funkcijām.
Pēc tam galvenajā programmā mēs esam inicializējuši LCD un attiecīgi iestatījuši EOC, ALE, EO, SC tapas.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
Pēc tam programma nolasa ADC un saglabā ADC izvadi mainīgajā un pēc tam nosūta to uz LCD pēc decimāldaļas uz ASCII konversijas, izmantojot void read_adc () un void adc (int i) funkcijas:
void read_adc () {skaitlis = 0; ale = 1; sc = 1; kavēšanās (1); ale = 0; sc = 0; kamēr (eoc == 1); kamēr (eoc == 0); oe = 1; skaitlis = ievades_ ports; kavēšanās (1); oe = 0; } void adc (int i) {switch (i) {gadījums 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); lasīt_adc ();