ADC е аналогово-цифровият преобразувател, който преобразува аналогови данни в цифров формат; обикновено се използва за преобразуване на аналогово напрежение в цифров формат. Аналоговият сигнал има безкраен брой стойности като синусоида или нашата реч, ADC ги преобразува в определени нива или състояния, които могат да бъдат измерени в числа като физическа величина. Вместо непрекъснато преобразуване, ADC преобразува периодично данни, което обикновено е известно като честота на вземане на проби. Телефонен модеме един от примерите за ADC, който се използва за интернет, той преобразува аналогови данни в цифрови данни, така че компютърът да може да разбере, защото компютърът може да разбира само цифрови данни. Основното предимство на използването на ADC е, че шумът може ефективно да бъде елиминиран от оригиналния сигнал, а цифровият сигнал може да пътува по-ефективно от аналоговия. Това е причината, че цифровото аудио е много ясно, докато слушате.
Понастоящем има много микроконтролери на пазара, които имат вграден ADC с един или повече канали. И като използваме техния регистър ADC, можем да взаимодействаме. Когато изберем семейство микроконтролери 8051 за създаване на който и да е проект, в който се нуждаем от преобразуване на ADC, тогава използваме външен ADC. Някои външни ADC чипове са 0803,0804,0808,0809 и има много повече. Днес ще свържем 8-канален ADC с микроконтролер AT89s52, а именно ADC0808 / 0809.
Компоненти:
- 8051 микроконтролер (AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- Резистор (1k, 10k)
- POT (10k x4)
- Кондензатор (10uf, 1000uf)
- Червено доведе
- Дъска за хляб или ПХБ
- 7805
- 11.0592 MHz кристал
- Мощност
- Свързващи проводници
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 високи. За да изберете всички останали входни канали, разгледайте дадената таблица:
Име на ADC канал |
ADDC ПИН |
ADDB ПИН |
ADDA ПИН |
IN0 |
НИСКО |
НИСКО |
НИСКО |
IN1 |
НИСКО |
НИСКО |
ВИСОКО |
IN2 |
НИСКО |
ВИСОКО |
НИСКО |
IN3 |
НИСКО |
ВИСОКО |
ВИСОКО |
IN4 |
ВИСОКО |
НИСКО |
НИСКО |
IN5 |
ВИСОКО |
НИСКО |
ВИСОКО |
IN6 |
ВИСОКО |
ВИСОКО |
НИСКО |
IN7 |
ВИСОКО |
ВИСОКО |
ВИСОКО |
Описание на веригата:
Веригата на „Връзка ADC0808 с 8051“ е малко сложна, която съдържа повече свързващ проводник за свързване на устройство помежду си. В тази схема сме използвали главно AT89s52 като 8051 микроконтролер, ADC0808, потенциометър и LCD.
LCD 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. И за демонстрация използвахме три променливи резистора. Когато захранваме веригата, тогава микроконтролерът инициализира LCD с помощта на подходяща команда, дава часовник на ADC чипа, избира ADC канал с помощта на адресната линия и изпраща сигнал за преобразуване на старта към ADC. След това ADC първо чете избрания вход на ADC канал и дава преобразувания изход на микроконтролера. След това микроконтролерът показва стойността си в позиция Ch1 в LCD. И тогава микроконтролерът променя ADC канала, като използва адресната линия. И тогава ADC чете избрания канал и изпраща изход към микроконтролера. И покажете на LCD като име Ch2. И като мъдър за други канали.
Работата на ADC0808 е много подобна на работата на ADC0804. При това, първият микроконтролер осигурява 500 KHz тактов сигнал към ADC0808, използвайки прекъсването на таймера 0, тъй като ADC изисква тактов сигнал за работа. Сега микроконтролерът изпраща сигнал от НИСКО до ВИСОКО ниво на щифт ALE (неговия активен-висок щифт) на ADC0808, за да активира ключалката в адреса. След това чрез прилагане на сигнал HIGH към LOW Level към SC (Start Conversion), ADC започва аналогово към цифрово преобразуване. И след това изчакайте EOC (End of Conversion) щифт да отиде LOW. Когато EOC стане НИСКО, това означава, че аналогово-цифровото преобразуване е завършено и данните са готови за използване. След това микроконтролерът позволява изходната линия, като прилага сигнал HIGH to LOW към OE щифт на ADC0808.
ADC0808 дава изходно метрично преобразуване на изхода при изходните му щифтове. И формулата за радиометрично преобразуване се дава от:
V in / (V fs -V z) = D x / (D max -D min)
Където
V in е входно напрежение за преобразуване
V fs е пълна скала Напрежение
V z е нулево напрежение
D x е точката на данни, която се измерва
D max е Максимална граница на данни
D min е Минимална граница на данни
Обяснение на програмата:
В програмата на първо място включваме заглавния файл пясък дефинира променливи и входно-изходни щифтове за ADC и LCD.
# включва
Създадена е функция за създаване на забавяне (void delay), заедно с някои LCD функции като за инициализация на LCD, отпечатване на низа, за LCD команди и др. Можете лесно да ги намерите в Код. Проверете тази статия за LCD взаимодействие с 8051 и неговите функции.
След това в основната програма ние инициализираме LCD и настройваме съответно 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");
И тогава програмата чете ADC и съхранява изхода на ADC в променлива и след това го изпраща на LCD след десетично преобразуване в 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 ();