ADC - это аналого-цифровой преобразователь, который преобразует аналоговые данные в цифровой формат; обычно он используется для преобразования аналогового напряжения в цифровой формат. Аналоговый сигнал не имеет бесконечного количества значений, таких как синусоида или наша речь, АЦП преобразует их в определенные уровни или состояния, которые могут быть измерены в числах как физическая величина. Вместо непрерывного преобразования АЦП периодически преобразует данные, что обычно называется частотой дискретизации. Телефонный модемявляется одним из примеров АЦП, который используется в Интернете, он преобразует аналоговые данные в цифровые, чтобы компьютер мог их понять, потому что компьютер может понимать только цифровые данные. Основное преимущество использования АЦП заключается в том, что мы можем эффективно устранить шум из исходного сигнала, а цифровой сигнал может распространяться более эффективно, чем аналоговый. По этой причине цифровой звук очень четкий при прослушивании.
В настоящее время на рынке существует множество микроконтроллеров, в которые встроен АЦП с одним или несколькими каналами. И с помощью их регистра ADC мы можем взаимодействовать. Когда мы выбираем семейство микроконтроллеров 8051 для создания любого проекта, в котором нам нужно преобразование АЦП, мы используем внешний АЦП. Некоторые внешние микросхемы АЦП - 0803,0804,0808,0809 и многие другие. Сегодня мы собираемся связать 8-канальный АЦП с микроконтроллером AT89s52, а именно ADC0808 / 0809.
Составные части:
- Микроконтроллер 8051 (AT89S52)
- ADC0808 / 0809
- ЖК-дисплей 16x2
- Резистор (1к, 10к)
- POT (10к x4)
- Конденсатор (10 мкФ, 1000 мкФ)
- Красный светодиод
- Хлебная доска или печатная плата
- 7805
- Кристалл 11,0592 МГц
- Мощность
- Соединительные провода
ADC0808 / 0809:
ADC0808 / 0809 представляет собой монолитное устройство CMOS и совместимую с микропроцессором логику управления и имеет 28 контактов, которые дают 8-битное значение на выходе, и 8-канальные входные контакты ADC (IN0-IN7). Его разрешение составляет 8, поэтому он может кодировать аналоговые данные на один из 256 уровней (2 8). Это устройство имеет трехканальную адресную строку, а именно: ADDA, ADDB и ADDC для выбора канала. Ниже представлена схема контактов ADC0808:
ADC0808 / 0809 требует для преобразования тактового импульса. Мы можем обеспечить это с помощью генератора или микроконтроллера. В этом проекте мы применили частоту с помощью микроконтроллера.
Мы можем выбрать любой входной канал, используя адресные строки, так же, как мы можем выбрать входную строку IN0, оставив все три адресные строки (ADDA, ADDB и ADDC) на низком уровне. Если мы хотим выбрать входной канал IN2, нам нужно поддерживать ADDA, ADDB на низком уровне и ADDC на высоком уровне. Чтобы выбрать все остальные входные каналы, взгляните на данную таблицу:
Имя канала АЦП |
ПИН ADDC |
ПИН-код ADDB |
ADDA PIN |
IN0 |
НИЗКИЙ |
НИЗКИЙ |
НИЗКИЙ |
В 1 |
НИЗКИЙ |
НИЗКИЙ |
ВЫСОКО |
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, поскольку для работы АЦП требуется тактовый сигнал. Теперь микроконтроллер отправляет сигнал уровня LOW to HIGH на вывод ALE (его вывод активного-высокого) ADC0808, чтобы активировать защелку в адресе. Затем, подавая сигнал от высокого к низкому уровню на SC (начало преобразования), АЦП запускает аналого-цифровое преобразование. А затем подождите, пока вывод EOC (конец преобразования) перейдет в НИЗКИЙ уровень. Когда EOC становится LOW, это означает, что аналого-цифровое преобразование завершено и данные готовы к использованию. После этого микроконтроллер включает выходную линию, подав сигнал от высокого до низкого на вывод OE ADC0808.
ADC0808 выдает выходной сигнал преобразования метрики отношения на своих выходных контактах. А формула радиометрического преобразования определяется следующим образом:
V в / (V фс -V г) = D х / (D макс -D мин)
где
V in - входное напряжение для преобразования
V fs - полная шкала Напряжение
V z - нулевое напряжение
D x - измеряемая точка данных
D max - Максимальный предел данных
D min - Минимальный предел данных
Пояснение к программе:
В программу, прежде всего, мы включаем файл заголовка и определяем переменные и входные и выходные контакты для АЦП и ЖК-дисплея.
# включают
Была создана функция для создания задержки (пустая задержка), а также некоторые функции ЖК-дисплея, такие как инициализация ЖК-дисплея, печать строки, команды ЖК-дисплея и т. Д. Вы можете легко найти их в коде. Ознакомьтесь с этой статьей, чтобы узнать о взаимодействии ЖК-дисплея с 8051 и его функциях.
После этого в основной программе мы инициализируем ЖК-дисплей и соответственно устанавливаем контакты EOC, ALE, EO, SC.
void main () {int я = 0; eoc = 1; эль = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint («АЦП 0808/0809»);
Затем программа считывает АЦП и сохраняет вывод АЦП в переменной, а затем отправляет его на ЖК-дисплей после преобразования десятичного числа в ASCII, используя функции void read_adc () и void adc (int i):
void read_adc () {число = 0; эль = 1; сбн = 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 ();