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

[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]

Прикладные программы

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

В любом случае объединение соответствующего драйвера и прикладной программы выполняется по команде MERGE (в языке BASIC).

Для использования программы VOLTS.BAS совместно с АЦП ADC 10, например, на языке GWBASIC или эквивалентном надо написать следующие строки:

LOAD "ADC10" (загрузка драйвера);

затем

MERGE "VOLTS" (добавление прикладной программы).

По команде RUN запускается полученная программа, которую можно сохранить целиком по команде:

SAVE "ИМЯ" ,А (если желательно сохранить файл в текстовом формате);

или просто:

SAVE "ИМЯ" (если желательно сохранить его в наиболее компактном виде).

Будет целесообразно произвести полную компиляцию составленной программы, а также и программы на языке TurboPASCAL, в файл ИМЯ.ЕХЕ, исполняемый непосредственно под DOS или Windows. Для этого надо иметь в распоряжении какой-нибудь компилятор, например. Turbo BASIC или Quick BASIC.

Цифровой вольтметр

Очень короткая программа VOLTS.BAS прекрасно подходит для первых шагов в изучении только что собранного или купленного АЦП, но она также пригодна и для более общих задач.

200 REM----VOLTS----

210 GOSUB 100

220D=INT(100*D)/100

230 LOCATE 1,1

240 PRINT USING"##.##";D

250 GOTO 210

260 REM (c) 1997 Patrick GUEULLE 7-546



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

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

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

Эта программа рассчитана на работу совместно с 8- или 10-разрядным АЦП (точность 1%), но ее можно оптимизировать и для работы с 12-разрядным АЦП, исправив строки 220 и 240 следующим образом и обеспечив при этом три индицируемых знака после запятой (т.е. точность 0,1%):

220 D=INT(1000*D)/1000 240 PRINT USING"##.###";D

He стоит также упускать из виду, что драйвер не выполняет никаких округлений, полностью соблюдая точность преобразователя. Только прикладная программа в соответствии с поставленной задачей должна так или иначе использовать получаемую точность, и не более того. Вывод трех знаков после запятой для 8-разрядного АЦП будет излишним, так как третий знак при этом не несет никакого смысла.

200 REM----BARRE----

210 LOCATE 6,1 220 F0RH=1 ТО 5

230 PRINT" I ! ";

240 NEXT Н

250 PRINT" I "

260 LOCATE 7,1

270 PRINT"0 1 2

280 PRINT"3 4 5"

290 GOSUB 100

300D=INT(10*D)

310 LOCATE 5,1



320 PRINT SPC(D);"I" ; 330 PRINT SPC(50-D) 340 GOTO 290

350 REM (c) 1997 Patrick GUEULLE Программа BARRE.BAS, в свою очередь, показывает, как легко можно организовать вывод аналоговой штриховой шкалы.

....!........!........!........!........!.... 0 1 2 3 4 5

Эта форма представления результата, менее точная, чем цифровая индикация, гораздо более удобна, когда требуется лишь оценить направление и скорость изменений или отклонений измеряемой величины, например, при ручной регулировке или настройке. В приведенном примере шкала построена на базе ASCII символов, но такая же шкала может быть выполнена и в графическом режиме экрана.

Усредняющий фильтр

Наиболее распространенный способ подавления быстрых флуктуации (часто паразитных) в медленно изменяющемся сигнале состоит в вычислении среднего значения нескольких выборок, относящихся к одному интервалу дискретизации. Конечно, этот способ может замедлить работу системы, и поэтому он применен в двух программах, выводящих результат один раз в секунду (SECONDE.BAS) и один раз в минуту (MINUTE.BAS).

200 REM----SECONDE----

210Q=0:S=0:GOSUB100 220 LOCATE 5,1

230 PRINT "Идетизмерение..." 240 H$=TIME$

250 IF H$<>TIME$ THEN BEEP:GOTO 290

260 GOSUB 100

270 S=S+D:Q=Q+1

280 GOTO 250

290 D=INT(100*S/Q)/100

300 LOCATE 1,1

310 PRINT USING"ft#.##";D;

320 PRINT " (среднее за " ;Q;" измерений) "

330 GOTO 210

340 REM (c) 1997 Patrick GUEULLE

Кроме вычисления результата измерений, каждая из этих программ выводит и количество измерений, которое было использовано при его вычислении. Это позволяет точно оценить реальное быстродействие



[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