ADC on analoginen digitaalimuunnin, joka muuntaa analogisen datan digitaalimuodoksi; yleensä sitä käytetään muuntaa analoginen jännite digitaalisessa muodossa. Analogisella signaalilla ei ole loputonta arvoja, kuten siniaalto tai puheemme, ADC muuntaa ne tietyille tasoille tai tiloille, jotka voidaan mitata numeroina fyysisenä suureena. Jatkuvan muuntamisen sijaan ADC muuntaa tietoja säännöllisesti, mikä yleensä tunnetaan näytteenottotaajuudeksi. Puhelinmodeemion yksi esimerkkejä ADC: stä, jota käytetään Internetissä, se muuntaa analogiset tiedot digitaalisiksi tiedoiksi, jotta tietokone voi ymmärtää, koska tietokone ymmärtää vain digitaalisia tietoja. ADC: n käytön suurin etu on, että me kohina voidaan poistaa tehokkaasti alkuperäisestä signaalista ja digitaalinen signaali voi kulkea tehokkaammin kuin analoginen. Siksi digitaalinen ääni on hyvin selkeä kuunnellessasi.
Tällä hetkellä markkinoilla on paljon mikro-ohjaimia, jotka ovat integroineet ADC: n yhdellä tai useammalla kanavalla. Ja käyttämällä ADC-rekisteriä voimme liittyä. Kun valitsemme 8051-mikrokontrolleriperheen minkä tahansa projektin tekemiseen, jossa tarvitsemme ADC-muunnoksen, käytämme ulkoista ADC: tä. Jotkut ulkoiset ADC-sirut ovat 0803,0804,0808,0809 ja monia muita. Tänään aiomme liittää 8-kanavaisen ADC: n AT89s52-mikrokontrolleriin, nimittäin ADC0808 / 0809.
Komponentit:
- 8051-mikrokontrolleri (AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- Vastus (1k, 10k)
- POT (10k x4)
- Kondensaattori (10uf, 1000uf)
- Punainen johti
- Leipälauta tai piirilevy
- 7805
- 11,0592 MHz kristalli
- Teho
- Johtojen liittäminen
ADC0808 / 0809:
ADC0808 / 0809 on monoliittinen CMOS-laite ja mikroprosessorilla yhteensopiva ohjauslogiikka, ja siinä on 28-nastainen, joka antaa 8-bittisen arvon lähdössä ja 8-kanavaisen ADC-tulonastat (IN0-IN7). Sen tarkkuus on 8, jotta se voi koodata analogista dataa johonkin 256 tasoa (2 8). Tällä laitteella on kolme kanavan osoiteriviä: ADDA, ADDB ja ADDC kanavan valitsemiseksi. Alla on pin-kaavio mallille ADC0808:
ADC0808 / 0809 vaatii kellopulssin muuntamista varten. Voimme tarjota sen käyttämällä oskillaattoria tai mikro-ohjainta. Tässä projektissa olemme soveltaneet taajuutta käyttämällä mikro-ohjainta.
Voimme valita minkä tahansa tulokanavan käyttämällä osoiteriviä, kuten voimme valita tulorivin IN0 pitämällä kaikki kolme osoiteriviä (ADDA, ADDB ja ADDC) matalina. Jos haluamme valita tulokanavan IN2, meidän on pidettävä ADDA, ADDB matala ja ADDC korkea. Katso kaikki muut tulokanavat valitusta taulukosta:
ADC-kanavan nimi |
LISÄÄ PIN-koodi |
LISÄÄ PIN-koodi |
ADDA PIN |
IN0 |
MATALA |
MATALA |
MATALA |
KOHDASSA 1 |
MATALA |
MATALA |
KORKEA |
IN2 |
MATALA |
KORKEA |
MATALA |
IN3 |
MATALA |
KORKEA |
KORKEA |
IN4 |
KORKEA |
MATALA |
MATALA |
IN5 |
KORKEA |
MATALA |
KORKEA |
IN6 |
KORKEA |
KORKEA |
MATALA |
IN7 |
KORKEA |
KORKEA |
KORKEA |
Piirin kuvaus:
Piiri ”Interfacing ADC0808 with 8051” on vähän monimutkainen, joka sisältää enemmän liitäntäjohtoa laitteen liittämiseksi toisiinsa. Tässä piirissä olemme käyttäneet pääasiassa AT89s52: ta 8051-mikrokontrollerina, ADC0808: na, potentiometrinä ja LCD: nä.
16x2-nestekidenäyttö on kytketty 89s52-mikrokontrolleriin 4-bittisessä tilassa. Ohjaustapa RS, RW ja En on kytketty suoraan napoihin P2.0, GND ja P2.2. Ja datanapa D4-D7 on kytketty 89s52: n nastoihin P2.4, P2.5, P2.6 ja P2.7. ADC0808-ulostulotapa on kytketty suoraan AT89s52-porttiin P1. Osoiterivinastat ADDA, ADDB, AADC on kytketty pisteisiin P3.0, P3.1 ja P3.2.
ALE (Osoitteen salvan käyttöönotto), SC (Aloita muunnos), EOC (Muunnoksen loppu), OE (Lähdön käyttöönotto) ja kellotapit on kytketty kohdille P3.3, P3.4, P3.5, P3.6 ja P3.7.
Ja tässä olemme käyttäneet kolmea potentiometriä, jotka on kytketty ADC0808: n napoihin 26, 27 ja 28.
Piirin virtalähteeksi käytetään 9 voltin akkua ja 5 voltin jännitesäädintä, nimittäin 7805.
Työskentely:
Tässä projektissa olemme liittäneet kolme ADC0808-kanavaa. Ja esittelyyn olemme käyttäneet kolmea muuttuvaa vastusta. Kun virtaa syötetään, mikrokontrolleri alustaa nestekidenäytön sopivalla komennolla, antaa kellon ADC-sirulle, valitsee ADC-kanavan osoiterivillä ja lähettää aloitusmuunnossignaalin ADC: lle. Tämän jälkeen ADC lukee ensin valitun ADC-kanavatulon ja antaa muunnetun lähdön mikro-ohjaimelle. Sitten mikro-ohjain näyttää arvon Ch1-asemassa LCD-näytössä. Ja sitten mikro muuttaa ADC-kanavan käyttämällä osoiteriviä. Ja sitten ADC lukee valitun kanavan ja lähettää lähdön mikrokontrollerille. Ja näytä LCD-näytöllä nimellä Ch2. Ja kuten viisasta muille kanaville.
Työstö ADC0808 on paljon samanlainen työstö ADC0804. Tässä ensimmäinen mikrokontrolleri antaa 500 KHz: n kellosignaalin ADC0808: lle käyttäen ajastimen 0 keskeytystä, koska ADC vaatii kellosignaalin toiminnan. Mikrokontrolleri lähettää nyt LOW - HIGH-tason signaalin ADC0808: n ALE-nastalle (sen aktiivinen-korkea nasta), jotta osoitteen salpa otetaan käyttöön. Sitten soveltamalla HIGH - LOW Level -signaalia SC: lle (Aloita muunnos), ADC alkaa analogisesta digitaaliseen muunnokseen. Odota sitten, että EOC (muunnoksen loppu) -tappi menee LOW. Kun EOC menee LOW, se tarkoittaa, että analogia-digitaalimuunnos on saatu päätökseen ja data on käyttövalmis. Tämän jälkeen mikrokontrolleri sallii lähtöjohdon soveltamalla HIGH - LOW-signaalia ADC0808: n OE-nastaan.
ADC0808 antaa suhdemetrisen muunnoksen lähdön sen nastoille. Ja radiometrisen muunnoksen kaava saadaan:
V sisään / (V fs -V z) = D x / (D max -D min)
Missä
V on on tulojännite muuntamista
V fs on täysimittainen Jännite
V z on nolla jännite
D x on datapisteellä on toimenpide
D max on suurin tiedot raja
D min on vähintään Mittausten raja
Ohjelman selitys:
Ohjelmaan on ensinnäkin sisällytettävä otsikkotiedosto hiekka määrittelee ADC: n ja LCD: n muuttuja- ja syöttö- ja lähtönastat.
# sisältää
Viiveen luomiseen on luotu toiminto (tyhjä viive) sekä jotkut nestekidenäytön toiminnot, kuten nestekidenäytön alustaminen, merkkijonon tulostaminen, LCD-komennot jne. Löydät ne helposti koodista. Tarkista tässä artikkelissa LCD-liitännät 8051: n ja sen toimintojen kanssa.
Tämän jälkeen pääohjelmassa olemme alustaneet LCD-näytön ja asettaneet EOC-, ALE-, EO- ja SC-nastat vastaavasti.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
Ja sitten ohjelma lukee ADC: n ja tallentaa ADC-lähdön muuttujaan ja lähettää sen sitten LCD: lle desimaalista ASCII-muunnoksen jälkeen käyttämällä void read_adc () ja void adc (int i) -toimintoja:
void read_adc () {numero = 0; ale = 1; sc = 1; viive (1); ale = 0; sc = 0; kun (eoc == 1); kun (eoc == 0); oe = 1; numero = syöttöportti; viive (1); oe = 0; } void adc (int i) {kytkin (i) {tapaus 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();