Главная  Компьютер 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [ 24 ] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46]

ГОЮГРАММНОЕОБЕСПЕЧЕНИЕ ЧАСТНОГО ПРИМЕНЕНИЯ

Этот раздел можно назвать главным во всей книге: именно в нем рассказывается, как решать практически любые задачи, связанные со сбором данных при низких частотах дискретизации. Модульная структура нижеприведенных программ на языке BASIC или языке TurboPASCAL позволяет адаптировать их к новым задачам, изменяя лишь несколько строк.

10 Инициализация j и включеню питания АЦП

90 оотогоо

100 С>«1Ъ1ванивв«лич4*Рд«ам9ня-10щвйсяаг1эдапахсяОдо5В; 1в0 RETURN.

190 REM©1PatridcGUEUUE


Драйвер (зависит от вида устройства)

Прикладная

профамма

(универсальная)

Профамма вывода

(в соответствии с типом экрана)

Рис. 5.10. Общая структура прикладных программ, рассматриваемых в книге

ченные для научных исследований. Так, график, изображенный на рис. 5.9, был построен при помощи программы SigmaPlot, разработанной компанией SPSS Science, с использованием короткой записи сигнала, полученного от функционального генератора.



На рис. 5.10 представлена структура, по которой будут строиться готовые к работе приложения.

В начале программы находится драйвер, соответствующий выбранному АЦП - либо готовому, либо собранному самостоятельно по описанию, которое приведено в этой книге. Каждый драйвер был написан в соответствии со спецификациями, представленными изготовителями используемых компонентов, причем особое внимание уделялось временным диаграммам протоколов связи. Драйверы можно рассматривать как ПО, поставляемое «под ключ», но допустимо также модифицировать в самых разных целях.

Первый блок каждого драйвера (строки 10-90) проводит инициализацию последовательного или параллельного порта, используемого для связи, и обеспечивает подачу напряжения питания на подключенный к нему АЦП. Блок заканчивается командой GOTO 200, передающей управление собственно прикладной программе (строки 200-290). Эта программа универсальна, она зависит только от выполняемой задачи, но ни в коей мере - от применяемого АЦП. Поэтому заменить драйвер при смене АЦП (например, при переходе от 8-разрядного к 12-разрядному) очень просто.

Прикладная программа может сама обращаться ко второму блоку драйвера (строки 100-190) настолько часто, насколько требуется. Эта часть драйвера отвечает за выполнение одного - и только одного - аналого-цифрового преобразования и за размещение результата (величины напряжения в диапазоне от О до 5 В) в переменной D. Только прикладная программа определяет, с какой скоростью будут проводиться преобразования, надо ли комбинировать полученные значения перед выводом результата и каков будет способ обработки результата (цифровое табло, построение кривой, запись на диск, включение сигнала и т.п.).

Если не хватит места между строками 200 и 290 программы, можно поместить оператор GOTO в строке 290, что позволит продолжать работу, например, со строки 2000. Еще одна зарезервированная область, начиная со строки 300, предназначена для операторов вывода графики. Блок между строками 300 и 490 отведен для операторов инициализации экрана (выбор графического режима, построение координатной сетки, определение цветов и т.п.) Процедура вывода результатов на экран начинается со строки 500. Именно прикладная программа (строки 200-290) будет в нужный момент вызывать графическую подпрограмму командой GOSUB 500.



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

Драйверы для 8-разрядных АЦП

На сервере www.dmk.ru содержатся драйверы для четырех 8-разрядных АЦП:

• АЦП ADC 10 компании PICO Technology;

• версия АЦП на базе TLC 549 (рис. 4.1,4.3);

• версия АЦП на базе МАХ 1243 (рис. 4.6);

• версия АЦП на базе TLC 549 (рис. 4.13, 4.14).

Заметим, что хотя АЦП ADC 10 и собран на базе TLC 549, он требует особого драйвера, так как подключается к параллельному порту. Вполне логично, что версия драйвера для ADC 10 на языке BASIC называется ADC10.BAS.

10 REM-----ADC10----

20 KEYOFFiCLS

30 B=&H378:REMLPT1:

40 N=8 :REM число разрядов

50 OUT В, 2

60FORT=0TO100:NEXTT 70 OUT В,254

80 FOR Т=0 TO 500 : NEXT T 90 GOTO 200

100 OUT B,252:D=0:REMполучение данных

110FORF=OTON-1

120 OUT В, 253

130 E=INP(B+1) AND 128

140 OUT B,252

150 IF E=0 THEN D=D+2 (N-l-F)

160 NEXT F

170D=5*D/{2N-1)

180 OUT B,2:RETURN

190 REM (c)1997 Patrick GUEULLE

Шестнадцатеричная величина 378 в строке 30 предполагает, что ADC 10 подключен к параллельному порту LPT1. Чтобы подключить ADC 10 к порту LPT2 (если таковой имеется), надо заменить эту величину на 278 или на любую другую величину, соответствующую установкам BIOS используемого компьютера.



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [ 24 ] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46]

0.0008