ADC - це аналого-цифровий перетворювач, який перетворює аналогові дані в цифровий формат; зазвичай він використовується для перетворення аналогової напруги в цифровий формат. Аналоговий сигнал не має нескінченних значень, таких як синусоїда або наша мова, АЦП перетворює їх на певні рівні або стани, які можна виміряти в цифрах як фізичну величину. Замість безперервного перетворення АЦП періодично перетворює дані, що зазвичай називають частотою дискретизації. Телефонний модемє одним із прикладів ADC, який використовується для Інтернету, він перетворює аналогові дані в цифрові дані, щоб комп'ютер міг зрозуміти, оскільки комп'ютер може розуміти лише цифрові дані. Основна перевага використання АЦП полягає в тому, що ми можемо ефективно усунути шум від вихідного сигналу, а цифровий сигнал може рухатися ефективніше, ніж аналоговий. Ось чому цифровий звук дуже чіткий під час прослуховування.
В даний час на ринку існує безліч мікроконтролерів, які мають вбудований АЦП з одним або кількома каналами. І за допомогою їх реєстру АЦП ми можемо взаємодіяти. Коли ми вибираємо сімейство мікроконтролерів 8051 для створення будь-якого проекту, в якому нам потрібно перетворення АЦП, тоді ми використовуємо зовнішній АЦП. Деякі зовнішні мікросхеми АЦП - 0803 0804 0808 0809, а їх набагато більше. Сьогодні ми збираємось взаємодіяти 8-канальний АЦП з мікроконтролером AT89s52, а саме ADC0808 / 0809.
Компоненти:
- 8051 мікроконтролер (AT89S52)
- ADC0808 / 0809
- РК-дисплей 16x2
- Резистор (1k, 10k)
- POT (10k x4)
- Конденсатор (10 мкФ, 1000 мкФ)
- Червоний привів
- Хлібна дошка або друкована плата
- 7805
- 11,0592 МГц Кристал
- Потужність
- Підключення проводів
ADC0808 / 0809:
ADC0808 / 0809 - це монолітний CMOS-пристрій та мікропроцесорна сумісна логіка управління та має 28-контактний вивід, що дає 8-бітове значення на виході та 8-канальні вхідні висновки АЦП (IN0-IN7). Його роздільна здатність становить 8, тому він може кодувати аналогові дані в один із 256 рівнів (2 8). Цей пристрій має триканальний адресний рядок, а саме: ADDA, ADDB та ADDC для вибору каналу. Нижче наведена схема контактів для ADC0808:
ADC0808 / 0809 вимагає тактового імпульсу для перетворення. Ми можемо забезпечити це за допомогою генератора або за допомогою мікроконтролера. У цьому проекті ми застосували частоту за допомогою мікроконтролера.
Ми можемо вибрати будь-який вхідний канал, використовуючи адресні рядки, як ми можемо вибрати вхідний рядок IN0, зберігаючи всі три рядки адреси (ADDA, ADDB та ADDC) низькими. Якщо ми хочемо вибрати вхідний канал IN2, тоді нам потрібно тримати ADDA, ADDB низьким і ADDC високим. Для вибору всіх інших вхідних каналів перегляньте наведену таблицю:
Назва каналу ADC |
ADDC PIN |
PIN-код ADDB |
PIN-код ADDA |
IN0 |
НИЗЬКИЙ |
НИЗЬКИЙ |
НИЗЬКИЙ |
IN1 |
НИЗЬКИЙ |
НИЗЬКИЙ |
ВИСОКО |
IN2 |
НИЗЬКИЙ |
ВИСОКО |
НИЗЬКИЙ |
IN3 |
НИЗЬКИЙ |
ВИСОКО |
ВИСОКО |
IN4 |
ВИСОКО |
НИЗЬКИЙ |
НИЗЬКИЙ |
IN5 |
ВИСОКО |
НИЗЬКИЙ |
ВИСОКО |
IN6 |
ВИСОКО |
ВИСОКО |
НИЗЬКИЙ |
IN7 |
ВИСОКО |
ВИСОКО |
ВИСОКО |
Опис ланцюга:
Схема “Взаємозв'язок ADC0808 з 8051” є малоскладною, що містить більше з'єднувального дроту для з'єднання пристрою один з одним. У цій схемі ми в основному використовували AT89s52 як мікроконтролер 8051, ADC0808, потенціометр та РК-дисплей.
РК-дисплей 16x2 підключений до мікроконтролера 89s52 у 4-бітному режимі. Керуючі штирі RS, RW та En безпосередньо підключені до штифтів P2.0, GND та P2.2. А контакт даних D4-D7 підключений до контактів P2.4, P2.5, P2.6 і P2.7 з 89s52. Вихідний штифт ADC0808 безпосередньо підключений до порту P1 AT89s52. Висновки адресного рядка ADDA, ADDB, AADC з'єднані на P3.0, P3.1 і P3.2.
ALE (Увімкнення засувки адреси), SC (Початок перетворення), EOC (Кінець перетворення), OE (Увімкнення виходу) і тактові штифти підключені на P3.3, P3.4, P3.5, P3.6 і P3.7.
І тут ми використали три потенціометри, підключені на контактах 26, 27 і 28 ADC0808.
Для живлення ланцюга використовується 9-вольтовий акумулятор і 5-вольтовий регулятор напруги, а саме 7805.
Робоча:
У цьому проекті ми з'єднали три канали ADC0808. І для демонстрації ми використали три змінних резистори. Коли ми вмикаємо ланцюг, тоді мікроконтролер ініціалізує РК-дисплей за допомогою відповідної команди, подає годинник на мікросхему АЦП, вибирає канал АЦП за допомогою адресного рядка і посилає сигнал перетворення старту на АЦП. Після цього АЦП спочатку зчитує вибраний вхід каналу АЦП і передає його перетворений вихід на мікроконтролер. Потім мікроконтролер показує своє значення в положенні Ch1 на РК-дисплеї. А потім мікроконтролер змінює канал АЦП за допомогою адресного рядка. А потім АЦП зчитує вибраний канал і надсилає вихід на мікроконтролер. І покажіть на РК-дисплеї назву Ch2. І як мудро для інших каналів.
Робота ADC0808 дуже схожа на роботу ADC0804. При цьому перший мікроконтролер подає тактовий сигнал 500 КГц на ADC0808, використовуючи переривання таймера 0, оскільки для роботи АЦП потрібен тактовий сигнал. Тепер мікроконтролер надсилає сигнал НИЗЬКОГО до ВИСОКОГО рівня на штифт ALE (його активний-високий штифт) ADC0808, щоб увімкнути фіксацію в адресі. Потім, застосовуючи сигнал HIGH до LOW Level до SC (Start Conversion), АЦП запускає аналого-цифрове перетворення. А потім зачекайте, поки штифт EOC (End of Conversion) стане НИЗКИМ. Коли EOC стає НИЗКИМ, це означає, що аналого-цифрове перетворення завершено і дані готові до використання. Після цього мікроконтролер включає вихідну лінію, подаючи сигнал ВИСОКОГО ВНИЗУ на штифт OE ADC0808.
ADC0808 дає вихідний показник метричного перетворення на вихідних штифтах. І формула радіометричного перетворення дається за формулою:
V в / (V fs -V z) = D x / (D макс. -D хв)
Де
V in - вхідна напруга для перетворення
V fs - повна шкала Напруга
V z - нульова напруга
D x - точка даних, що вимірюється
D max - Максимальна межа даних
D min - Мінімальна межа даних
Пояснення програми:
У програмі, насамперед, ми включаємо файл заголовка пісок визначає змінні та вхідні / вихідні штифти для АЦП та РК-дисплея.
# включати
Створена функція для створення затримки (void delay), а також деякі функції РК-дисплея, такі як ініціалізація РК-дисплея, друк рядка, команди РК-дисплея тощо. Ви можете легко знайти їх у Коді. Перегляньте цю статтю на тему взаємодії РК з 8051 та її функціями.
Після цього в головній програмі ми ініціалізуємо РК-дисплей і відповідно встановимо виводи EOC, ALE, EO, SC.
void main () {int i = 0; eoc = 1; ель = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
А потім програма зчитує АЦП і зберігає вихідні дані АЦП у змінній, а потім надсилає їх на РК після перетворення десяткового в ASCII, використовуючи функції void read_adc () та void adc (int i):
void read_adc () {число = 0; ель = 1; sc = 1; затримка (1); ель = 0; sc = 0; в той час як (eoc == 1); в той час як (eoc == 0); oe = 1; число = ввід_порту; затримка (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();