Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программное управление технологическим оборудованием

.pdf
Скачиваний:
1
Добавлен:
29.11.2025
Размер:
11.79 Mб
Скачать

Окончание таблицы 1.2

 

 

 

 

 

 

Бит запуска

 

 

 

 

 

 

 

 

1

 

SAMP

 

 

выборки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SAMP = 1: Запуск выборки в промежуточные

 

 

 

 

 

 

 

 

усилители

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SAMP = 0: Выборка

 

 

 

 

 

 

 

 

 

 

 

 

 

остановлена

 

 

 

 

 

 

 

 

0

 

DONE

 

 

Бит статуса преобразования

 

 

 

 

 

 

 

 

 

 

 

DONE = 1: Преобразование завершено

 

 

 

 

 

 

 

 

 

DONE = 0: Преобразование не запущено либо не

 

 

 

 

 

 

 

 

завершено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.3

 

 

 

 

 

 

Биты регистра AD1CON2

 

 

 

 

 

Обозначени

 

 

VCFG<2:

 

 

 

 

 

 

CSCN

CHPS<1:

 

е

 

 

 

0>

 

 

 

-

 

-

 

A

 

0>

 

Номер бита

 

15

 

14

 

13

 

12

 

11

 

10

9

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначени

 

BUF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е

 

 

S

 

-

 

 

 

SMPI<3:0>

 

 

BUFM

ALTS

 

Номер бита

 

7

 

6

 

5

 

4

 

3

 

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.4

 

 

 

Назначение некоторых битов регистра AD1CON2

 

 

 

Номер

Обозначени

 

 

 

 

 

 

 

 

Описани

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

е

 

 

 

 

 

бита

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15-13

VCFG<2:0>

 

 

Выбор источника опорного напряжения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VREF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H

VREFL

 

 

 

 

 

 

 

 

 

VCFG<2:0> =

 

 

 

 

 

 

 

 

 

 

 

 

 

000

 

 

 

 

AVDD

 

AVSS

 

 

 

 

 

 

 

 

 

VCFG<2:0> =

 

VREF

 

 

 

 

 

 

 

 

 

 

011

 

 

 

 

+

 

VREF-

 

 

 

 

 

 

 

 

 

Выбор каналов

 

 

 

 

 

 

 

 

9-8

CHPS<1:0>

 

 

преобразования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CHPS<1:0> = 1x: Преобразование сигналов CH0, CH1,

 

 

 

 

 

 

 

CH2, CH3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CHPS<1:0> = 01: Преобразование сигналов

 

 

 

 

 

 

 

 

CH0, CH1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CHPS<1:0> = 00: Преобразование сигнала

 

 

 

 

 

 

 

 

CH0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

531

 

Таблица 1.5

Биты регистра AD1CON3

Обозначени

 

ADR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е

 

C

-

 

-

 

 

 

 

 

 

SAMC<4:0>

 

 

 

Номер бита

 

15

 

14

 

13

 

 

12

 

 

11

 

 

10

 

 

9

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначени

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

ADCS<7:0>

 

 

 

 

 

 

 

 

 

Номер бита

 

7

 

6

 

5

 

 

4

 

 

3

 

 

2

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.6

 

 

 

Назначение некоторых битов регистра AD1CON3

 

 

 

 

Номер

Обозначени

 

 

 

 

 

 

 

 

 

Описани

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

бита

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выбор источника тактирования

 

 

 

 

15

 

ADRC

 

преобразования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ADRC = 0: Внутренняя RC-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цепочка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ADRC = 1: Системная тактовая частота

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.7

 

 

 

 

 

 

Биты регистра AD1CHS123

 

 

 

 

 

 

 

 

 

Обозначени

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CH123NB<1:0

CHS123

 

е

 

-

 

-

 

-

 

 

-

 

 

-

 

 

 

 

 

>

 

B

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бита

 

15

 

14

 

13

 

 

12

 

 

11

10

 

 

9

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначени

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CH123NA<1:0

CH123S

 

е

 

-

 

-

 

-

 

 

-

 

 

-

 

 

 

 

 

>

 

A

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бита

 

7

 

6

 

5

 

 

4

 

 

3

 

2

 

 

1

0

 

532

Таблица 1.8

Назначение некоторых битов регистра AD1CHS123

Номер

 

 

 

Обозначение

Описание

бита

 

 

 

CH123NB<1:

Выбор отрицательного входа для усилителей CH1, CH2,

10-9

0>

CH3 для

 

 

варианта подключения MUXB

 

 

CH123NB<1:0> = 11: Для CH1 отрицательный вход

 

 

AN9, для CH2 –

 

 

AN10, для CH3 –

 

 

AN11.

 

 

CH123NB<1:0> = 10: Для CH1 отрицательный вход

 

 

AN6, для CH2 –

 

 

AN7, для CH3 – AN8.

 

 

CH123NB<1:0> = 0x: Для CH1, CH2, CH3

 

 

отрицательный вход VREFL.

 

 

Выбор положительного входа для усилителей CH1,

8

CH123SB

CH2, CH3 для

 

 

варианта подключения MUXB

 

 

CH123SB = 1: Для CH1 положительный вход AN3, для

 

 

CH2 – AN4,

 

 

для CH3 –

 

 

AN5.

 

 

CH123SB = 0: Для CH1 положительный вход AN0, для

 

 

CH2 – AN1,

 

 

для CH3 –

 

 

AN2.

 

CH123NA<1:

Выбор отрицательного входа для усилителей CH1, CH2,

2-1

0>

CH3 для

 

 

варианта подключения

 

 

MUXA

 

 

CH123NA<1:0> = 11: Для CH1 отрицательный вход

 

 

AN9, для CH2 –

 

 

AN10, для CH3 –

 

 

AN11.

 

 

CH123NA<1:0> = 10: Для CH1 отрицательный вход

 

 

AN6, для CH2 –

 

 

AN7, для CH3 – AN8.

 

 

CH123NA<1:0> = 0x: Для CH1, CH2, CH3

 

 

отрицательный вход VREFL.

533

Окончание таблицы 1.8

 

 

 

 

 

Выбор положительного входа для усилителей CH1,

 

8

 

CH123SA

CH2, CH3 для

 

 

 

 

 

 

 

 

 

 

 

 

 

варианта подключения

 

 

 

 

 

 

 

 

 

 

 

 

MUXA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CH123SA = 1: Для CH1 положительный вход AN3, для

 

 

 

 

 

CH2 – AN4,

 

 

 

 

 

 

 

 

 

 

 

 

 

для CH3 – AN

 

 

 

 

 

 

 

 

 

 

 

 

 

CH123SA = 0: Для CH1 положительный вход AN0, для

 

 

 

 

 

CH2 – AN1,

 

 

 

 

 

 

 

 

 

 

 

 

 

для CH3 – AN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.9

 

 

 

 

 

Биты регистра AD1CHS0

 

 

 

 

 

 

Обозначени

 

 

 

 

 

 

 

CH0SB<4:

 

 

 

е

 

CH0NB

 

-

 

-

 

 

0>

 

 

 

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бита

 

15

 

14

 

13

12

11

 

10

 

9

 

8

 

 

 

 

 

 

 

 

 

 

 

Обозначени

 

 

 

 

 

 

 

CH0SA<4:

 

 

 

е

 

CH0NA

 

-

 

-

 

 

0>

 

 

 

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бита

 

7

 

6

 

5

4

3

 

2

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 1.10

 

 

 

Назначение некоторых битов регистра AD1CHS0

 

 

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначение

 

 

 

 

Описание

 

 

 

бита

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выбор отрицательного входа для усилителя CH0 для

15

 

CH0NB

выборки B

 

 

 

 

 

 

 

 

 

 

 

 

 

CH0NB = 1: Для CH0 отрицательный вход AN1.

 

 

 

 

 

 

CH0NB = 0: Для CH0 отрицательный вход VREFL.

 

 

 

 

 

 

Выбор положительного входа для усилителя CH0 для

12-8

CH0SB<4:0>

выборки B

 

 

 

 

 

 

 

 

 

 

 

 

 

CH0SB<4:0> = 01001: Для CH0 положительный вход

 

 

 

 

 

AN9.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CH0SB<4:0> = 00001: Для CH0 положительный вход

 

 

 

 

 

AN1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CH0SB<4:0> = 00000: Для CH0 положительный вход

 

 

 

 

 

AN0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

534

Окончание таблицы 1.10

 

 

Выбор отрицательного входа для усилителя CH0 для

 

7

CH0NA

выборки A

 

 

 

CH0NA = 1: Для CH0 отрицательный вход AN1.

 

 

 

CH0NA = 0: Для CH0 отрицательный вход VREFL.

 

 

 

Выбор положительного входа для усилителя CH0 для

 

4-0

CH0SA<4:0>

выборки A

 

 

 

CH0SA<4:0> = 01001: Для CH0 положительный вход

 

 

 

AN9.

 

 

 

 

 

 

CH0SA<4:0> = 00001: Для CH0 положительный вход

 

 

 

AN1.

 

 

 

CH0SA<4:0> = 00000: Для CH0 положительный вход

 

 

 

AN0.

 

1.4 Настройка АЦП

Для настройки модуля АЦП необходимо выполнить следующие действия:

1.Выбрать 10либо 12-битный режим (ADxCON1<10>).

2.Выбрать источник опорного напряжения (ADxCON2<15:13>).

3.Выбрать источник тактирования модуля АЦП (ADxCON1<7:5>).

4.Установить требуемые линий порта микроконтроллера как аналоговые входы (ADxPCFGH<15:0> и ADxPCFGL<15:0>) .

5.Задать, каким образом аналоговые входы будут подключены к входам усилителей (ADxCHS123<15:0>).

6.Задать число усилителей, которые будут использованы для одновременной выборки (ADxCON2<9:8>, ADxPCFGH<15:0> и

ADxPCFGL<15:0>).

7.Задать события, по которому будет происходить выборка каналов

(ADxCON1<3>, ADxCSSH<15:0> и ADxCSSL<15:0>).

8.Установить автоматическую либо ручную выборку каналов.

9.Задать события, по которому будет происходить запуск преобразования.

10.Задать каким образом результат преобразования сохраняется в буфер

(ADxCON1<9:8>).

11.Задать прерывание или шаг увеличения указателя на буфер DMA сохранения результата преобразования (ADxCON2<9:5>).

12.Задать число выборок в буфере DMA для каждого входа модуля АЦП (ADxCON4<2:0>).

13.Задать формат сохранения результата преобразования.

14.Настроить прерывание модуля АЦП (если требуется).

15.Настроить буферы DMA (если требуется).

16.Включить модуль АЦП (ADxCON1<15>).

535

2 Электрическая принципиальная схема к лабораторной работе

На рис.2.1 приведена электрическая схема подключения аналоговых сигналов к микроконтроллеру.

Рис. 2.1. Электрическая схема подключения источников аналогового сигнала

В стенде в качестве источников аналоговых сигналов используются переменные резисторы RP1, RP2, которые через фильтрующие RC-цепочки подключены к входам AN0, AN1 микроконтроллера. Таким образом, напряжение на входе микроконтроллера может изменяться в пределах от 0В

до +3.3В.

3 Пример выполнения работы

Задача: Разработать программу для учебного стенда, отображающую на LED данные аналоговых сигналов с переменных резисторов RP1, RP2.

Анализ задачи: Источники аналогового сигнала подключены к входам AN0, AN1. Положительное опорное напряжение – AVdd (+3.3В), отрицательное – AVss (0В). Необходимо вход AN0 подключить к положительному входу усилителя CH0, вход AN1 – к положительному входу усилителя CH1. Отрицательные входы усилителей по умолчанию подключены к отрицательному опорному напряжению, т.е. к AVss. Далее необходимо настроить модуль АЦП на одновременное преобразование сигналов с усилителей CH0, CH1. В основном цикле программы следует периодически запускать процесс аналого-цифрового преобразования, и после его завершения, вывести значения сигналов на LED.

Листинг программы:

#include <P33FJ32MC204.h> #define FOSC

7370000 #define

536

FCY (FOSC / 2)

 

 

 

 

_FOSCSEL(FNOSC_

 

// настройка работы

FRC)

 

микроконтроллера

 

 

// от внутреннего тактового

 

 

генератора

 

// объявление кодов сегментов

 

 

 

#define SEG_A

0x08

//

--- SEG_A ---

#define SEG_B

0x01

//

|

|

#define SEG_C

0x20

//

SEG_F

SEG_B

#define SEG_D

0x04

//

|

|

#define SEG_E

0x80

//

--- SEG_G ---

#define SEG_F

0x10

//

|

|

#define SEG_G

0x40

//

SEG_E

SEG_C

#define SEG_DP

0x02

//

|

|

 

//

--- SEG_D --- SEG_DP

// объявление кодов цифр

 

 

SEG_A + SEG_B + SEG_C + SEG_D + SEG_E +

#define N0

SEG_F

 

#define N1

SEG_B + SEG_C

 

#define N2

SEG_A + SEG_B + SEG_G + SEG_E + SEG_D

#define N3

SEG_A + SEG_B + SEG_G + SEG_C + SEG_D

#define N4

SEG_F + SEG_G + SEG_B + SEG_C

#define N5

SEG_A + SEG_F + SEG_G + SEG_C + SEG_D

 

SEG_A + SEG_F + SEG_G + SEG_C + SEG_D +

#define N6

SEG_E

 

 

SEG_A + SEG_B +

 

#define N7

SEG_C

 

 

SEG_A + SEG_B + SEG_C + SEG_D + SEG_E +

#define N8

SEG_F + SEG_G

 

 

SEG_A + SEG_B + SEG_C + SEG_D + SEG_F +

#define N9

SEG_G

 

#define DIP

SEG_DP

 

#define

 

 

MINUS

SEG_G

 

#define OFF

0x00

 

// массив кодов цифр

char DIGITS[] = {N0, N1, N2, N3, N4, N5, N6, N7, N8, N9};

537

// Инициализация таймера

 

T1

 

 

void Init_Timer1(

 

 

void )

 

{

 

 

T1CON = 0;

// сброс таймера

IFS0bits.T1IF = 0;

// сброс флага прерывания таймера

 

 

// разрешение прерывания от

IEC0bits.T1IE = 1;

таймера

TMR1

 

// обнуление текущего значения

=

0x0000;

таймера

 

0x0E65

 

PR1 =

;

// задание периода таймера

 

 

// разрешение работы таймера и его

T1CONbits.TON = 1;

запуск

}

 

 

char _ind = 0; // номер активного индикатора

char _data[8]; // буфер индикации - массив кодов символов

// Отправление данных в регистр

MBI5168 void Ind_Send(char digit)

{

НТЦ-02.31.2 «Микропроцессорная техника PIC». Методические указания.

char c;

for (c = 0; c < 8; c++)

{

установка требуемого логического уровня

на последовательном входе SDI драйвера

MBI5168 if ((digit & (1 << c)) != 0)

{

LATCbits.LATC3 = 1;

}

else

{

LATCbits.LATC3 = 0;

}

538

формирование синхроимпульса на входе SCK

LATCbits.LATC4 = 1;

LATCbits.LATC4 = 0;

}

// формирование синхроимпульса на входе LE

LATBbits.LATB5 = 1;

LATBbits.LATB5 = 0;

}

 

 

 

// Инициализация линий портов

 

 

 

void Ind_Init()

 

 

 

{

 

 

 

 

 

 

(RB

TRISBbits.TRISB6 = 0;

// Выход

A

6)

 

 

 

(RB

TRISBbits.TRISB7 = 0;

// Выход

B

7)

 

 

 

(RB

TRISBbits.TRISB8 = 0;

// Выход

C

8)

 

 

 

(RB

TRISBbits.TRISB9 = 0;

// Выход

D

9)

 

 

 

(RC

TRISCbits.TRISC3 = 0;

// Выход

SDI

3)

 

 

SC

(RC

TRISCbits.TRISC4 = 0;

// Выход

K

4)

 

 

 

(RB

TRISBbits.TRISB5 = 0;

// Выход

LE

5)

}

 

 

 

// Разбитие числа на цифры

void Ind_Show(unsigned int a, unsigned int b)

{

_data[3] = DIGITS[a %

 

10];

a /= 10;

_data[2] = DIGITS[a %

 

10];

a /= 10;

_data[1] = DIGITS[a %

 

10];

a /= 10;

_data[0] = DIGITS[a %

 

10];

 

_data[7] = DIGITS[b %

 

10];

b /= 10;

539

_data[6] = DIGITS[b %

 

10];

b /= 10;

_data[5] = DIGITS[b %

 

10];

b /= 10;

_data[4] = DIGITS[b %

 

10];

 

}

// Прерывание таймера T1 по совпадению

void __attribute__((interrupt,no_auto_psv)) _T1Interrupt( void )

{

Ind_Send(OFF);

// Отключение индикатора

LATB &= ~(0x07 <<

 

6);

 

// Переключение на следующий

LATB |= (_ind <<

 

6);

 

// индикатор

Ind_Send(_data[_ind]);

// Отправка кода цифры

_ind++;

 

// переход к след. индикатору

if (_ind == 8)

 

{

 

 

_ind = 0;

 

}

 

 

IFS0bits.T1IF = 0;

// Сброс флага прерывания таймера

TMR1

= 0;

// Перезапуск таймера

}

 

 

void

 

 

ADC_Init()

 

 

{

 

 

AD1CON1bits.AD12B

 

= 0;

 

// 10-битный режим

AD1CON2bits.V

 

CFG

= 0;

// Опорное напряжение – Avdd

AD1CON1bits.SS

// Запуск преобразования после

RC

= 0;

очистки

 

 

// бита выборки

AD1PCF

 

 

GL

= 0xFFFF;

AD1PCFGLbits.PCFG

 

0 = 0;

 

// AN0 - аналоговый вход

AD1PCFGLbits.PCFG

 

1 = 0;

 

// AN1 - аналоговый вход

AD1CON1bits.AS

// Автоматический запуск выборки

AM

= 1;

после

540

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]