8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 28 29 30 31 32 33 34 ... 105

Terminals for connecting resistors

ЯВеш

.button inputs

El

[ARROW]:Select ResistorSPACE]:Get resistance and button status

[C]: Calibration at resistance input channelQ]j Quit ,

Рис. 3.9. Виртуальная панель управления экспериментальной платой игрового порта

3.3.1. Описание программы GAMEEXP.PAS

Программа выполняет следующие функции:

О считывает состояния двух (или четырех) цифровых входов; О измеряет длительность периода одновибратора для двух (четырех) аналоговых каналов; О калибрует аналоговые каналы; О измеряет сопротивление резистора.

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

Внизу расположена панель помощи, на которой показаны клавиши управления программой с кратким описанием их действий:

О [ARROW] (клавиши управления курсором) - выбор аналогового канала; О [SPASE] (пробел) - считывание сопротивления выбранного канала и состояния входов;

О [С] или [с] - калибровка выбранного аналогового канала; О [QJ или [q] - выход из программы.


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

Текст программы GAMEEXP.PAS

Program Game tester;

(«Программа управления экспериментальной платой игрового порта.*) uses

graph,crt,dos; const

game address=513; var

l,led selected,Timel, Time2:integer; ch:char;

status:array[1..18] of integer, period:real;

interval 0,Interval R,standard R:array[1. .4] of real,

key pressed:string[10];

strxstring,

(«Загрузка файлов библиотек.*) {$1 c:\ioexp\tplib2.pas} {$1 c:\ioexp\tplib1.pas}

Function Resistance(period.real; led selected:integer):real; («Вычисление сопротивления при известном периоде.*) («Необходима калибровка.*) var

dummy,dummy2.real; begin

dummy2:=interval R[led selected]-interval 0[led selected]; if abs(dummy2)<0.0001 then dummy2:=1;

dummy:=standard R[led selected]/dummy2»(period-interval 0[led selected]); if abs(dummy)>200 then resistance:=200 else resistance:=dummy; end,

procedure draw panel; («Рисование панели управления.*) begin

for i.=1 to 16 do status[i]-=0; setbkcolor(cyan),

for i:=1 to 8 do draw led(20+i*40,350,status[i]); for i:=1 to 4 do draw led(420+i*40,350,status[i+8]); draw led(20,20,1);

draw message(50,20,70,20,lightblue,LEO ON,0,1,yellow); draw led(20,60,0);

draw message(50,60,70,20,lightblue,LEO OFF,0,1,yellow);


setfillstyle(1,magenta); bar(1,420,800,480); settextstyle(0,0,1);

outtextxy(10,425,[ARROW]:Select Resistor [Space]:Get resistance and button status); outtextxy(10,425,[C]Calibration of resistance input channel [Q]:Quit); draw message(60,200,500,50,blue,Game port Experimental board,0,2,yellow); drawjnessage(50,390,305,20,blue,AX VCC AY VCC BX VCC BY VCC,0,1,yellow);

draw message(450,390,149, 20, blue, BB2BB1 BA2 BA1,0,1,yellow);

draw message(55,320,280,20,cyan, Terminals for connecting resistors,0,1,red); draw message(450,320,120,20,cyan,Button inputs,0,1,red): end;

procedure output input; var

output byte,input byte:byte; begin

(«Считывание состояния кнопок.*) status[9]:=read game port(8); status[10]:=read game port(7); status[11]:=read game port(6); status[12]:=read game port(5); end;

procedure scan keyboard; begin

key pressed:=getkey;

if key pressed=LEFT then led selected:=led selected-1; if key pressed=RIGHT then led selected:=led selected+1; if key pressed= then begin

period :=interval game port(led selected); str(period«0.838:10:2,strx);

draw message(25,460,250,10,magenta,Interval (us): +strx,0,1, lightcyan); str(resistance(period,led selected):10:2, strx);

draw message(370,460,250,10,magenta,Resistance (kOhm): +strx,0,1, lightcyan);

end;

if (keypressed=Q) or (key pressed=q) then begin

closegraph; clrscr:

writeln(Calibration of resistance input channels CH,led selected:4); writeln(Short the input terminal for the selected channel); writeln(Press RETURN to continue); readln;

interval 0[led selected]:=interval game port(led selected); writeln(Connect the standard resistor to the selected channel); write(Input the resistance of the resistor); readln(standard R[led selected]);

intervalJ[led selected]:=interval game port(led selected);

initialize graph;

draw panel;

end;

end;



0 ... 28 29 30 31 32 33 34 ... 105