Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

3.12.2 Построение простейших геометрических фигур

Приведем формулы, применяемые для построения простейших геометрических фигур: линии и окружности.

Линия, заданная координаторами начала (, ), а также проекциями на оси координат (, ), строится по следующим формулам.

Если

,

где — целое, изменяющееся через 1 от до . Если

,

где — целое, изменяющееся через 1 от до .

Окружность, заданная координатами центра (, ) и радиусом строится, как множество точек с координатами

;

;

;

;

,

где — целое, изменяющееся через 1 в пределах .

3.13 Измерение постоянного напряжения

3.13.1 Задание

Разработать программу, выполняющую аналого-цифровое преобразование напряжения на входе AIN0.1 (P0.28) и отображение на ЖКИ результата измерения в вольтах. Измерение и обновление показаний производить каждые 0,4 с.

3.13.2 Основные рекомендации

Измеряемое постоянное напряжение регулируется с помощью потенциометра (рисунок 3.13.1) в диапазон от 0 до 3,3 В.

Рисунок 3.13.1 – Схемы формирования опорного напряжения (слева) и аналоговых сигналов (справа)

Предлагается формировать задержку измерений 0,4 с с помощью таймера. Запуск АЦП будет осуществляться сигналом от схемы совпадения.

206

Считывание результата, преобразование в строку символов и обновление индикатора будет осуществляться в процедуре обработки прерывания от АЦП.

3.13.3 Алгоритм основной программы

Программа должна содержать директивы подключения библиотек функций ввода-вывода и функций управления ЖКИ.

#include <LPC214x.h> #include <STDIO.h> #include "LCD.C"

Процедура обработки прерываний будет описана ниже. Алгоритм основной программы показан на рисунке 3.13.1.

1.Перевести линию P0.28 в режим входа АЦП (регистр PINSEL1).

2.Вызвать функцию инициализации ЖКИ LCDInit (из библиотеки).

3.Настроить таймер. Задать пороговое значение (регистр T0MR1), соответствующее временной задержке 0,4 с (1.13.3). Разрешить сброс таймера по совпадению 1 (регистр T0MCR). Разрешить установку внешнего сигнала совпадения 1 (регистр T0EMR). Включить таймер (регистр T0TCR).

4.Настроить АЦП (регистр AD0CR):

а) включить запуск АЦП нарастающим сигналом MAT0.1 (биты

START и EDGE).

б) включить АЦП (бит PDN);

в) непрерывное преобразование не использовать (биты BURST и CLKS);

Основная программа

Начало

1Настройка режима линии P0.28

2

Инициализация

ЖКИ

3

Настройка таймера и схемы совпадения, включение таймера

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

5Настройка системы прерываний

6

Пустая команда

Процедура обработки прерывания от АЦП

Начало

1

Сохранение и масштабирование результата

2

Формирование строки символов

3

Вывод строки на ЖКИ

4

Инициализация системы прерываний

Возврат

Рисунок 3.13.1 – Алгоритм программы измерения постоянного напряжения

207

г) установить делитель частоты (биты CLKDIV), так чтобы тактовая частота АЦП не превышала 4,5 МГц (1.15.1); напомним, что по умолчанию тактовая частота периферийных устройств МГц;

д) выбрать канал 1 (биты SEL).

5.Настроить систему прерываний, разрешив прерывание по заверше-

нии АЦП через VICVectAddr0, VICVectCntl0 и VICIntEnable (раздел 1.11.5).

6.Записать конструкцию вечного цикла.

3.13.4 Алгоритм процедуры обработки прерывания от АЦП

В процедуре обработки прерываний потребуется объявить две переменные: вещественного типа N для хранения результата преобразования в вольтах и строку символов из восьми символов S.

float N; char S[10];

Поясним размерность массива S. Для отображения результата предлагается отвести 9 позиций:

U=1.234 V

Десятый элемент массива необходим для хранения пустого символа (код 0x00), обозначающего конец строки.

1.Считать результат АЦП из регистра AD0DR1 в переменную N (см. пример в разделе 1.15.9). Опорное напряжение задается резисторным делителем кОм, и кОм. Что дает В.

2.Вызвать стандартную функцию форматирования строк sprintf из библиотеки STDIO.h (раздел 2.2.19).

snprintf(S,10,"U=%4.3f V",N);

При строке S получит значение в соответствии с предложенным форматом.

3.Вывести на дисплей строку S c помощью функции PrintSymbol.

4.Сбросить в ноль сигнал EMС1, приведший к запуску АЦП, напри-

мер, так:

T0EMR&=0xFFFFFFFD;

Как всегда, последней командой процедуры обработки прерывания загрузить нулевое значение в регистр VICVectAddr.

3.13.5 АЦП с циклическим опросом нескольких каналов

Дополнительно предлагается разработать модификацию программы, которая проводит измерения двух сигналов, отображая результаты измерения на разных строках индикатора. Теперь запуск АЦП будет выполняться в режиме непрерывного преобразования с автоматическим опросом каналов.

За основу берется прежний алгоритм, в который необходимо внести ряд изменой.

1.Кроме портовой линии P0.28 перевести в режим аналогового ввода линию P0.29 (блок 1).

2.Исключить из основной программы команды, отвечающие за настройку таймера (блок 3), а из процедуры обработки прерывания — команды сброса сигнала EM0 в регистре T0EMR (блок 4).

208

3. Изменить настройку АЦП:

а) сбросить в нули биты START; установить в единицу бит BURST;

б) в разрядах SEL установить единицы, соответствующие каналам

AIN0.1 и AIN0.2.

4. В процедуре обработки прерываний от АЦП повторить команды блоков 1–3 для второго канала. Результаты считывать из регистров AD0DR1

иAD0DR2.

3.13.6Автоматический выбор пределов измерения

Для расширения динамического диапазона измерительные приборы делают многопредельными. Это значит, что чувствительность прибора и диапазон (предел) измерения может меняться. С этой целью в структуру канала обработки измерительного сигнала вводятся специальные масштабирующие устройства, коэффициент передачи которых меняется с помощью коммутирующей аппаратуры. Весьма популярны, например, интегральные операционные усилители или микросхемы АЦП с программируемым коэффициентом передачи.

Ряд пределов измерения определяется возможностями аппаратной части прибора. Часто это десятикратное изменение предела (например, 0,01; 0,1; 1, 10, 100). Встречается вариант удвоения (0,25; 0,5; 1; 2; 4), а также схема 1-2-5 (0,1; 0,2; 0,5; 1; 2). Количество пределов может быть от двух до нескольких десятков.

С точки зрения программиста коэффициент передачи внешних электрических цепей управляется параллельным или последовательным двоичным кодом, формируемым непосредственно на портовых линиях или передаваемый через интерфейс SPI или I2C.

Здесь обсудим логику автоматического переключения пределов измерения. Программа микроконтроллера должна распознавать необходимость повышения чувствительности (то есть перехода на меньший предел) и понижения чувствительности (перехода на больший предел).

Выбор предела с меньшей чувствительностью выполняется, если код АЦП превышает значение, соответствующее текущему верхнему пределу измерения, и, разумеется, если код АЦП содержит все единицы (насыщение).

Выбор предела измерения с большей чувствительностью выполняется при условии, что измеряемая величина не превышает 90–95% этого нового предела.

Отметим, что повышение и понижение чувствительности осуществляется при разных уровнях измерительного сигнала. Такой гистерезис необходим во избежание циклического переключения, когда сигнал близок к границе пределов

Условие понижения чувствительности имеет вид

.

Для десятиразрядного АЦП обычно выбирают или . Условие понижения чувствительности

.

209