Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?work=138
Дата изменения: Fri May 5 15:25:43 2006
Дата индексирования: Tue Oct 2 02:39:10 2012
Кодировка: koi8-r

ТЕМИРОВ БЕЛЯЛ
Украина, г. Красноперекопск
Работа:
Универсальный измерительный комплекс

Секция: Информатика (компьютерное моделирование)




Содержание


1. Назначение прибора...............................стр. 4


2. Устройство и принцип работы прибора.......................стр. 5


3. Части программы...................................стр. 7


4. Используемая литература.............................стр. 10
















4
Назначение прибора.


Многие радиолюбители для сборки и отладки схем используют различные
измерительные и тестирующие приборы. Но не все они легко доступны и у
каждого прибора есть свои недостатки. Я постарался собрать такой прибор,
который выполнял бы функции осциллографа, генератора, тестирующего прибора,
измерителя ёмкости и сопротивления и у которого количество недостатков
сводилось бы к минимуму. Но мне пришлось использовать возможности
компьютера, так как с компьютером все поставленные мною задачи облегчились.
Это и вывод результатов измерений и вычислений, и управление самим
прибором. При этом упала и необходимость в дорогостоящих деталях, что и
сделала мой прибор доступным большому кругу потребителя.
Большинство измерительных приборов имеет неудобное управление. Я
постарался его изменить. Большой недостаток моего прибора - его
стационарность. Он также не годится и тем, у кого нет компьютера.


























5
Работа прибора и его возможности.

Разработанный и собранный мною прибор подключается к LPT1 порту(EPP), а
написанная программа UMC.EXE, позволяет им управлять и принимать от него
данные для обработки и вывода результатов.
В функции программы входят:
1) функции осциллографа,
2) частотомера,
3) измерителя ёмкости,
4) измерителя сопротивления,
5) прибора для проверки исправности транзисторов и диодов.

Весь прибор удалось построить с использованием мультиплексоров К561КП1
(2 мультиплексора 4-1), которые выполняют функцию коммутации аналоговых и
цифровых сигналов.
Осциллограф. Это устройство предназначено для того, чтобы просмотреть
характер изменения напряжения во времени и по этому судить какой сигнал
(частота, амплитуда и др.). Мой прибор совместно с программой
«Универсальный измерительный комплекс», выполняет все функции обычного
прибора - осциллографа и функции очень дорогостоящих осциллографов. В
частности это память, возможность получения осциллограмм сразу от восьми
источников, прямой вывод сигнала на монитор и вывод его по частям, что
удобно для наблюдения высокочастотного сигнала. У «Универсального
измерительного комплекса» также есть возможность изменения частоты опроса
щупов, что немало важно для наблюдения того же высокочастотного сигнала.
Осциллограф также обладает функцией вывода на определенные щупы двоичного
кода представленного нулями и единицами. Все функции осциллографа
выполняются за счёт аналого-цифрового преобразователя, который формирует
двоичный сигнал эквивалентный напряжению на щупах.
Программируемый генератор импульсов. Даёт возможность самому строить
и отправлять на щуп цифровой сигнал состоящий из любой последовательности
нулей и единиц любой длительности. Он позволяет сохранять набранный вами
сигнал, а также открывать уже записанные сигналы. Имеется много программных
средств для облегчения построения и редактирования сигнала.
Пример цифрового сигнала который можно построить и передать с помощью
программной и электрической частей прибора:

[pic]

Измеритель ёмкости. Позволяет, путём считывания количества импульсов в
1 секунду, полученных с генератора (частота генерации задаётся измеряемой
ёмкостью электролитического конденсатора), получать значение ёмкости этого
конденсатора.

Блок питания. Реализуется с помощью АЦП (аналого-цифрового
преобразователя) и усилителя тока, собранного на транзисторах.
Характеристики блока питания:
1) Регулируемое напряжение (постоянное).........0-9В
2) Мощность.......................9Вт

Измеритель сопротивления. Функционирует точно так же, как и измеритель
ёмкости, только генерация задаётся сопротивлением измеряемого резистора.
По измеренному или по набранному сопротивлению строится цветовая
маркировка. А по нарисованной цветовой маркировке определяется значению
сопротивления резистора.

6
Измерение ёмкости конденсатора и сопротивления резисторов
осуществляется, как говорилось выше, счётом импульсов. Здесь служит счётчик
К561ИЕ10. Двоичный код формируемый на его выходах соответствует тому числу
импульсов, которое он посчитал. Счётчик необходим так как порт принтера не
в состоянии считывать сигнал высокой частоты. Используя счётчик я могу
вычислять сигнал с частотой в 256 раз большей, чем может позволить порт и
процессор.

Проверка исправности и определение ножек транзисторов и диодов. Выводы
транзистора подключается к жёлтому, зелёному и черному щупам, диод - к
жёлтому и зелёному. Таким образом, по выведенному на монитор рисунку можно
определить какой щуп подключён к какому выводу.


Э

Б
А
К


К

Мне ещё не удалось определить где коллектор, а где эмиттер, но я уже
могу определить какой транзистор по проводимости и найти его базу. Всё
определение у меня выполняется аналогично тому, как проверяется на
исправность транзистор и диод на тестере.

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

|К155ЛА3 |Микросхема ТТЛ - 4 элемента 2И - НЕ |
|К561КП1 |Микросхема КМОП - 2 мультиплексора 4 - |
| |1 |
|Д9 |Диод импульсный |
|КТ361А,Б,Г |Транзистор кремниевый p-n-p |
|КТ315А,Б,Г |Транзистор кремниевый n-p-n |
























7
Части программы.

procedure newdelay(ms:longint); {пауза в микросекундах}
var
r:registers;
begin
r.ah:=$86;
r.cx:=ms*1000 div 65536;
r.dx:=ms*1000 mod 65536;
intr($15,r)
end;

procedure clearcon;assembler; {очистка буфера клавиатуры}
asm
cli
sub ax,ax
mov es,ax;
mov al,es:[41ah]
mov es:[41ch],al
sti
end;

procedure lptread; {чтение порта 37B}
var
a:byte;
begin
port[$37a]:=0;
port[$37a]:=1;
repeat
a:=port[$37B];
if a>=c then begin writeln(a-c);inc(s,a-c);end;
if a c:=a;
until keypressed;
port[$37a]:=0;
readkey;
writeln(' ',s);
end;

procedure InitMouse; {инициализация мыши}
var
r:registers;
begin
r.ax:=$0000;
intr($33,r)
end;

procedure MouseOn; {включение курсора}
var
r:registers;
begin
r.ax:=$0001;
intr($33,r)
end;

procedure MouseOff; {выключение курсора}
var
r:registers;
begin
r.ax:=$0002;
intr($33,r)
end;

8
procedure GetMouseXY(var x,y,code:integer); {определение
положения курсора}
var
r:registers;
begin
r.ax:=$0003;
intr($33,r);
x:=r.cx;
y:=r.dx;
code:=r.bx
end;

procedure SetMouseXY(x,y:integer); {установка курсора в
координаты (X,Y)}
var
r:registers;
begin
r.ax:=$0004;
r.cx:=x;
r.dx:=y;
intr($33,r)
end;

procedure MouseView(x1,y1,x2,y2:integer); {диапазон движения
мыши}
var
r:registers;
begin
r.ax:=$0007;
r.cx:=x1;
r.dx:=x2;
intr($33,r);
r.ax:=$0008;
r.cx:=y1;
r.dx:=y2;
intr($33,r);
end;

procedure MouseNot(x1,y1,x2,y2:integer); {область исключения
курсора}
var
r:registers;
begin
r.ax:=$0010;
r.cx:=x1;
r.dx:=y1;
r.si:=x2;
r.di:=y2;
intr($33,r)
end;

Function MouseIn(x1,y1,x2,y2:integer):Boolean;
{Возвращает TRUE, если указаталь мыши находится в указанном
прямоугольнике}
var
r:registers;
begin
r.ax:=$3;
Intr($33,r);
MouseIn:= (r.cx>=x1) and (r.cx<=x2) and (r.dx>=y1) and
(r.dx<=y2)
end;

function MousePressed(Butt:integer;var x,y:integer):Boolean;
{Возвращает информацию о нажатой клавише:
Butt - флаг выбора клавиши,
Count - количество нажатий
x,y - координаты.}
var
r:registers;
9
count:integer;
begin
begin
r.ax:=$5;
r.bx:=Butt;
Intr($33,r);
x:=r.cx;
y:=r.dx;
Count:=r.bx;
mousepressed:=(count>=1);
end;
end;

Procedure Sensitivity(Hor,Ver:integer);
{Устанавливает чувствительность мыши.}
const
HorRat:integer=8;
VerRat:integer=8;
var
r:registers;
begin
r.ax:=$0F;
r.cx:=Hor and $7FFF;
r.dx:=Ver and $7FFF;
HorRat:=r.cx;
VerRat:=r.dx;
Intr($33,r)
end;

procedure SetCursor(x,y:integer;point:mask);
{Задает форму указателя мыши:
x,y - координаты действия мыши (0,0..16,16)
point - маска в виде массива со значениями}
var
r : registers;
begin
r.ax:=$9;
r.bx:=x;
r.cx:=y;
r.es:=seg(point[0]);
r.dx:=ofs(point[0]);
intr($33,r)
end;

Procedure RestoreCursor;
{Возвращает курсор-стрелку}
var
x,y,code:integer;
r:registers;
begin
GetMouseXY(x,y,code);
MouseOff;
r.ax:=0;
Intr($33,r);
Sensitivity(25,25);
SetMouseXY(x,y);
MouseOn
end;




10
Используемая литература.



1. Бирюков С. А. Применение цифровых микросхем серий ТТЛ и КМОП,
(Москва,2000);

2. Терещук С. В. Справочник радиолюбителя, (Москва,1989);

3. Попов В. Б. Turbo Pascal для школьников, (Москва,1999);

4. Жуков А. В., Авдюхин А. А. Ассемблер, (Санкт-Петербург,2002);

5. Попов В. Б. Turbo Pascal для школьников, (Москва,1999);

6. Фаронов В. В. Turbo Pascal 7.0, издательство «Нолидж» 1999;

7. Грызлов В. И. Турбо Паскаль 7.0, (Москва, 2000).