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