Page 30 - 6486
P. 30

2.  Вимірювання  з  декількох  каналів  не  може  відбуватись
           одночасно.  В  будь-який  момент  часу  можлива  робота  лише  з

           одною,  конкретно  вибраною  лінією  АЦП  за  допомогою  регістру

           АDМUХ.  Якщо  пристрій  працює  ще  з  одним  каналом  АЦП,  то
           достатньо на початку програми в блокові  налаштувати потрібний

           канал.  В  противному  разі  потрібно  буде  перед  кожним
           вимірюванням  переналаштовувати  регістр  АDМUХ  для  вибору

           потрібного каналу.


                  З.  При  виборі  зовнішнього  опорного  джерела  напруги

           потрібно  щоб  відповідні  виводи  МК  були  до  нього  приєднані  в
           схемі (вивода АVСС і  АREF).


                  Вимірювання  рівня  вхідної  напруги  на  каналі  РА2  та

           виведення значення на LCD)


                  Дана  програма  ініціалізує  LCD,  проводить  вимірювання
           вхідного аналогового сигналу на каналі РА2 і виводить на екран в

           першому  рядку  назву  вибраного  каналу,  а  в  другому  -  виміряне

           значення рівня сигналу.

                  /*
                  Target MCU:
                  ATmega16 Target
                  Device: AVR-
                  Easy
                  */

                  #include <avr/io.h>
                  #include <util/delay.h>
                  #include “LCD.C”             //Бібліотека для роботи з РК-екраном
                  unsigned long u=0; unsigned long voltage=0; unsigned char i;

                  unsigned char text[] = {‘-‘, 0x3D, 0x20, ‘A’, ‘D’, ‘C’, 0x20, ‘P’, ‘A’, ‘2’, 0x20, 0x3D,
           0x3D, ‘-‘, 0x20,0x20 };
                  //===== Функція зчитування даних з попереднього вибраного каналу АЦП
                  unsigned int getACD(void)
                  { unsigned int v; //локальна змінна
                  ADCSRA|=(1<<ADSC); //почати перетворення
                  while ((ADCSRA&_BV(ADIF))==0x00); //Чекаємо закінчення перетворення
                  v=(ADCL|ADCH<<8); //Зчитуємо значення АЦП
                  return v;
                  }
                  //Головна программа int main(void)


                                                        30
   25   26   27   28   29   30   31   32   33   34   35