Главная Компьютер [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.0012 |