Скачиваний:
14
Добавлен:
01.05.2014
Размер:
187.9 Кб
Скачать

7. Меры предосторожности при работе с устройством.

При работе с устройством входное измеряемое напряжение ни при каких условиях не должно выходить за пределы 15В относительно аналогового общего уровня. В случае необходимости на датчиках сигналов следует устанавливать ограничивающие элементы. Несоблюдение этого условия может вывести из строя входные цепи устройства.

8. Дополнительные возможности устройства.

В устройстве имеется возможность изменения диапазона измеряемого напряжения в пределах от +-2.5В до +-10В (основной диапазон). Для этого необходимо изменить коэффициент усиления входного инструментального усилителя. В исходном состоянии этот коэффициент усиления равен 1, что соответствует диапазону входного сигнала +-10В. Коэффициент усиления изменяется установкой резистора между 1 и 8 выводами микросхемы AD622 (для этого резистора на печатной плате устройства оставлено место). Сопротивление резистора определяется из выражения:

R[кОм]=49.4/(k-1), где k – коэффициент усиления, который необходимо установить.

9. Пример программы для работы с устройством.

program MD142T9;

USES Crt,Graph;

{

вывод на экран результатов 600 измерений с делением

результата на 160 по заданному каналу при запуске от таймера. Выход из

программы по ESC, по любой другой клавише цикл измерения повторяется.

}

const

Base=$320; {базовый адрес MD142}

CSR=Base; {адрес регистра управления MD142}

DR=Base+2; {адрес регистра данных  MD142}

label 1;

var

VCSR: word;{глобальная переменная, хранящая содержимое регистра CSR}

dat: array[1..600] of integer;

i,e,grdrv,grmode: integer;

kw: real;

s: char;

ch,g,k: word;

st: string;

{******************************************************************}

Procedure MD142FIFORST;

{процедура сброса FIFO}

begin

Portw[CSR]:=VCSR or $4000;

end ;{MD142FIFORST}

{*******************************************************************}

Function MD142PRSTS(ch:word):integer;

{

функция получения результата по каналу ch,

режим работы коммутатора каналов – 16 заземленных

режим запуска - программный

}

begin

VCSR:= VCSR+(ch shl 4);

Portw[CSR]:=VCSR+1;

while (Portw[CSR] and $1)=0 do;

MD142PRSTS:=integer(Portw[DR]);

end;{MD142PRSTS}

{********************************************************}

procedure MD142SET(ch,time:word);

{

процедура подключения на вход устройства MD142 сигнала с канала

ch с задержкой после включения, равной

time условных единиц. Режим работы коммутатора каналов – 16 заземленных

}

var

tmp: integer;

begin

VCSR:= VCSR+(ch shl 4)+(g shl 9);

Portw[CSR]:=VCSR;

for tmp:=0 to time do;{генерация временной задержки}

end;{MD142SET}

{*********************************************************}

function MD142GETT:integer;

{

Функция получения одного отсчета от устройства MD142 про внешнем

Или таймерном запуске.

Канал должен быть предварительно установлен процедурой MD142SET.

}

begin

while (Portw[CSR] and $1)=0 do;

MD142GETT:=integer(Portw[DR]);

end;{MD142GETT}

{**********************************************************}

Procedure MD142STIM(k:word);

{

Процедура установки периода сигналов запуска АЦП от внутреннего

Таймера устройства MD142.

ПЕРИОД=(1+k)[мкс].

Таймер начинает работать сразу после установки периода.

}

begin

VCSR:=VCSR and $FFF7;

Portw[CSR]:=VCSR;

Portw[DR]:=k;

VCSR:=VCSR+$2;

Portw[CSR]:=VCSR;

end {MD142STIM};

{**********************************************************}

{**********************************************************}

begin

{начало автокалибровки}

Portw[CSR]:=$200;

while (Portw[CSR] and $1)=0 do;

{конец автокалибровки}

VCSR:=0;

ClrScr;

GotoXY(1,1);

Write(‘КАНАЛ -> ');

Readln(ch);

MD142SET(ch,20);

GotoXY(1,3);

Write('период запуска/2...65635/->');

Readln(k);

1: MD142FIFORST;

for i:=1 to 600 do dat[i]:=100;

MD142STIM(k);

VCSR:= VCSR and $FFFD;

for i:=1 to 600 do dat[i]:=MD142GETT;

portw[CSR]:=VCSR; {остановка таймера}

e:=portw[CSR] and $4000; {чтение признака переполнения FIFO}

grdrv:=0;

InitGraph(grdrv,grmode,'');

SetColor(2);

Rectangle(40,20,GetMaxX,GetmaxY-20);

SetColor(15);

OutTextXY(40,8,'Є ­ «');

OutTextXY(88,8,Chr(48+ch));

OutTextXY(104,8,'интервал квант.');

kw:=1+k;

Str(kw:6:1,st);

OutTextXY(250,8,st);

OutTextXY(250+Length(st)*8,8,'¬Єб');

SetColor(14);

OutTextXY(344,8,'выход ESC продолжение – ЛЮБАЯ КЛАВИША');

SetColor(2);

SetLineStyle(DottedLn,0,NormWidth);

for i:=1 to 9 do Line(40,40+(i-1)*50,639,40+(i-1)*50);

SetColor(15);

OutTextXY(0,437,'-32000');

OutTextXY(0,337,'-16000');

OutTextXY(32,237,'0');

OutTextXY(8,137,'16000');

OutTextXY(8,37,'32000');

OutTextXY(37,470,'0');

OutTextXY(129,470,'100');

OutTextXY(229,470,'200');

OutTextXY(329,470,'300');

OutTextXY(429,470,'400');

OutTextXY(529,470,'500');

SetColor(Red);

If e<>0 then OutTextXY(460,32,'переполнение буфера')

else OutTextXY(460,32,' ');

SetColor(2);

for i:=1 to 5 do Line(140+(i-1)*100,20,140+(i-1)*100,459);

SetLineStyle(SolidLn,0,NormWidth);

for i:=1 to 600 do PutPixel(i+39,240-(dat[i] div 160),15);

repeat

until(KeyPressed);

if ReadKey<>Chr($1B) then goto 1;

CloseGraph;

end.

3

Соседние файлы в папке Курсовая работа