ADC to konwerter analogowo-cyfrowy, który konwertuje dane analogowe na format cyfrowy; zwykle służy do konwersji napięcia analogowego na format cyfrowy. Sygnał analogowy ma nieskończoną liczbę wartości, takich jak fala sinusoidalna lub nasza mowa, ADC konwertuje je na określone poziomy lub stany, które można zmierzyć liczbowo jako wielkość fizyczną. Zamiast ciągłej konwersji, ADC konwertuje dane okresowo, co jest zwykle znane jako częstotliwość próbkowania. Modem telefonicznyjest jednym z przykładów ADC, który jest używany w Internecie, konwertuje dane analogowe na dane cyfrowe, aby komputer mógł je zrozumieć, ponieważ komputer może zrozumieć tylko dane cyfrowe. Główną zaletą korzystania z ADC jest to, że szumy mogą być skutecznie eliminowane z oryginalnego sygnału, a sygnał cyfrowy może podróżować wydajniej niż analogowy. Dlatego dźwięk cyfrowy jest bardzo wyraźny podczas słuchania.
Obecnie na rynku dostępnych jest wiele mikrokontrolerów, które mają wbudowany przetwornik ADC z jednym lub kilkoma kanałami. Korzystając z ich rejestru ADC, możemy interfejs. Kiedy wybieramy rodzinę mikrokontrolerów 8051 do wykonania dowolnego projektu, w którym potrzebujemy konwersji ADC, to używamy zewnętrznego ADC. Niektóre zewnętrzne układy ADC to 0803,0804,0808,0809, a jest ich o wiele więcej. Dzisiaj zamierzamy połączyć 8-kanałowy ADC z mikrokontrolerem AT89s52, a mianowicie ADC0808 / 0809.
Składniki:
- Mikrokontroler 8051 (AT89S52)
- ADC0808 / 0809
- Wyświetlacz LCD 16x2
- Rezystor (1k, 10k)
- POT (10 000 x 4)
- Kondensator (10 uf, 1000 uf)
- Czerwona dioda LED
- Płytka do chleba lub PCB
- 7805
- Kryształ 11,0592 MHz
- Moc
- Przewody łączące
ADC0808 / 0809:
ADC0808 / 0809 jest monolitycznym urządzeniem CMOS i logiką sterującą kompatybilną z mikroprocesorem i ma 28 pinów, co daje 8-bitową wartość na wyjściu i 8-kanałowe styki wejściowe ADC (IN0-IN7). Jego rozdzielczość wynosi 8, więc może zakodować dane analogowe na jednym z 256 poziomów (2 8). To urządzenie ma trzy linie adresowe kanałów, a mianowicie: ADDA, ADDB i ADDC do wyboru kanału. Poniżej znajduje się schemat pinów dla ADC0808:
ADC0808 / 0809 wymaga impulsu zegarowego do konwersji. Możemy to zapewnić za pomocą oscylatora lub mikrokontrolera. W tym projekcie zastosowaliśmy częstotliwość za pomocą mikrokontrolera.
Możemy wybrać dowolny kanał wejściowy za pomocą linii adresu, tak jak możemy wybrać linię wejściową IN0, utrzymując wszystkie trzy linie adresu (ADDA, ADDB i ADDC) na niskim poziomie. Jeśli chcemy wybrać kanał wejściowy IN2, musimy utrzymywać ADDA, ADDB niskie i ADDC wysokie. Aby wybrać wszystkie inne kanały wejściowe, spójrz na podaną tabelę:
Nazwa kanału ADC |
ADDC PIN |
DODAJ PIN |
ADDA PIN |
IN0 |
NISKA |
NISKA |
NISKA |
W 1 |
NISKA |
NISKA |
WYSOKI |
W 2 |
NISKA |
WYSOKI |
NISKA |
IN3 |
NISKA |
WYSOKI |
WYSOKI |
IN4 |
WYSOKI |
NISKA |
NISKA |
IN5 |
WYSOKI |
NISKA |
WYSOKI |
IN6 |
WYSOKI |
WYSOKI |
NISKA |
IN7 |
WYSOKI |
WYSOKI |
WYSOKI |
Opis obwodu:
Obwód „Łączenia ADC0808 z 8051” jest mało skomplikowany i zawiera więcej przewodów połączeniowych do łączenia urządzeń ze sobą. W tym obwodzie użyliśmy głównie mikrokontrolera AT89s52 jako 8051, ADC0808, potencjometru i LCD.
Wyświetlacz LCD 16x2 jest połączony z mikrokontrolerem 89s52 w trybie 4-bitowym. Piny sterujące RS, RW i En są bezpośrednio podłączone do pinu P2.0, GND i P2.2. A pin danych D4-D7 jest podłączony do pinów P2.4, P2.5, P2.6 i P2.7 na 89s52. Styk wyjściowy ADC0808 jest bezpośrednio podłączony do portu P1 AT89s52. Piny linii adresowej ADDA, ADDB, AADC są podłączone w P3.0, P3.1 i P3.2.
ALE (włączenie zatrzasku adresu), SC (rozpoczęcie konwersji), EOC (koniec konwersji), OE (włączenie wyjścia) i piny zegarowe są podłączone do P3.3, P3.4, P3.5, P3.6 i P3.7.
I tutaj użyliśmy trzech potencjometrów podłączonych do pinów 26, 27 i 28 ADC0808.
Do zasilania obwodu służy 9-woltowa bateria i 5-woltowy regulator napięcia, mianowicie 7805.
Pracujący:
W tym projekcie połączyliśmy trzy kanały ADC0808. Do demonstracji użyliśmy trzech zmiennych rezystorów. Po zasileniu obwodu mikrokontroler inicjalizuje wyświetlacz LCD za pomocą odpowiedniego polecenia, podaje zegar do układu ADC, wybiera kanał ADC za pomocą linii adresowej i wysyła sygnał rozpoczęcia konwersji do ADC. Następnie ADC najpierw odczytuje wybrane wejście kanału ADC i przekazuje swoje przekonwertowane wyjście do mikrokontrolera. Następnie mikrokontroler pokazuje swoją wartość na pozycji Ch1 na wyświetlaczu LCD. A następnie mikrokontroler zmienia kanał ADC za pomocą linii adresowej. A następnie ADC odczytuje wybrany kanał i wysyła wyjście do mikrokontrolera. I pokaż na LCD jako nazwę Ch2. I jak mądry dla innych kanałów.
Działanie ADC0808 jest bardzo podobne do działania ADC0804. W tym pierwszym mikrokontroler dostarcza sygnał zegara 500 KHz do ADC0808, wykorzystując przerwanie Timera 0, ponieważ ADC wymaga sygnału zegara do działania. Teraz mikrokontroler wysyła sygnał poziomu LOW do HIGH do pinu ALE (jego pin aktywny-wysoki) ADC0808, aby włączyć zatrzask w adresie. Następnie przez zastosowanie sygnału poziomu HIGH do LOW do SC (Start Conversion), ADC rozpoczyna konwersję sygnału analogowego na cyfrowy. A następnie poczekaj, aż pin EOC (End of Conversion) spadnie do LOW. Kiedy EOC spada, oznacza to, że konwersja sygnału analogowego na cyfrowy została zakończona i dane są gotowe do użycia. Następnie mikrokontroler włącza linię wyjściową, przykładając sygnał od HIGH do LOW do pinu OE ADC0808.
ADC0808 daje wyjście konwersji metrycznej współczynnika na swoich pinach wyjściowych. Wzór na konwersję radiometryczną jest następujący:
V in / (V fs -V z) = D x / (D max -D min)
Gdzie
V in to napięcie wejściowe do konwersji
V fs to pełna skala Napięcie
V z to napięcie zerowe
D x to mierzony punkt danych
D max to maksymalny limit danych
D min to minimalny limit danych
Objaśnienie programu:
W programie przede wszystkim dołączamy plik nagłówkowy sand definiujący zmienne oraz piny wejścia i wyjścia dla ADC i LCD.
# zawierać
Utworzono funkcję do tworzenia opóźnienia (void delay), a także niektóre funkcje LCD, takie jak inicjalizacja LCD, drukowanie łańcucha, polecenia LCD itp. Możesz je łatwo znaleźć w Kodzie. Zapoznaj się z tym artykułem, aby uzyskać informacje o połączeniu LCD z 8051 i jego funkcjach.
Następnie w programie głównym inicjalizujemy LCD i ustawiamy odpowiednio 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”);
Następnie program odczytuje ADC i przechowuje wyjście ADC w zmiennej, a następnie wysyła je do LCD po konwersji dziesiętnej na ASCII, używając funkcji void read_adc () i void adc (int i):
void read_adc () {liczba = 0; ale = 1; sc = 1; opóźnienie (1); ale = 0; sc = 0; while (eoc == 1); while (eoc == 0); oe = 1; numer = port_wejściowy; opóźnienie (1); oe = 0; } void adc (int i) {switch (i) {przypadek 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();