- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Как превратить персональный компьютер в измерительный комплекс - Патрик Гёлль
Шрифт:
Интервал:
Закладка:
Программа сбора данных (FICHIER.BAS), которую, конечно же, надо дополнить драйвером используемого АЦП при помощи команды MERGE, исключительно проста.
200 REM — FICHIER —
210 GOSUB 100
220 OPEN "dat.dat" FOR OUTPUT AS #1
230 PRINT "Идут измерения… "
240 FOR G=0 TO 639
250 GOSUB 100
260 PRINT# 1, D
270 FOR T=0 TO 2000: NEXT T
280 NEXT G: CLOSE# 1
290 REM (c) 1997 Patrick GUEULLE
В оригинальной версии эта программа создает файл DAT.DAT, содержащий 640 выборок, которые производятся с частотой дискретизации, определяемой в строке 270 (простая задержка). Конечно, число 2000 используется лишь при первых попытках, а потом надо будет подобрать эту величину в соответствии со скоростью используемого ПК и конкретной задачей.
В самых сложных случаях можно, по примеру SECONDE.BAS и MINUTE.BAS, использовать переменную TIME$ для улучшения точности и значительного снижения частоты дискретизации.
Число 640, в свою очередь, соответствует числу точек по горизонтали обычного графического экрана, что позволяет вывести график кривой непосредственно на экран, перед тем как скопировать его на бумагу, если это необходимо.
Графопостроитель
Вывод информации на экран осуществляет программа CGAVISU.BAS или VGAVISU.BAS. Вторая из них применяется, если желательно воспользоваться большим разрешением, соответствующим экранам VGA.
500 REM — CGAVISU —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=199-INT(Y*199/5)
530 PSET(0,Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=199-INT(Y*199/5)
560 LINE — (X, Y)
570 NEXT X
580 CLOSE
590 REM (c) 1997 Patrick GUEULLE
500 REM — VGAVISU —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=349-INT(Y*349/5)
530 PSET(0,Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=349-INT(Y*349/5)
560 LINE — (X, Y)
570 NEXT X
580 CLOSE
590 REM (c) 1997 Patrick GUEULLE
Очевидно, каждую из программ надо объединить с экранным драйвером CGA.BAS или VGA.BAS, соответствующим используемому оборудованию.
300 REM — CGA —
310 SCREEN 2
320 KEY OFF: CLS
330 LINE(0,0)-(0,199)
340 FOR Y=0 TO 199 STEP 20
350 LINE(0,Y)-(639,Y),&HCCCC
360 NEXT Y
370 FOR X=0 TO 639 STEP 32
380 LINE(X,0)-(X,199),&HCCCC
390 NEXT X
400 LINE(639,0)-(639,199)
410 LINE(0,199)-(639,199),&HCCCC
420 REM (c) 1997 Patrick GUEULLE
300 REM VGA
310 SCREEN 9
320 KEY OFF: CLS
330 LINE(0,0)-(0,349)
340 FOR Y=0 TO 349 STEP 35
350 LINE(0,Y)-(639,Y),&HCCCC
360 NEXT Y
370 FOR X=0 TO 639 STEP 32
380 LINE(X,0)-(X,349),&HCCCC
390 NEXT X
400 LINE(639,0)-(639,349)
410 LINE(0,349)-(639,349),&HCCCC
420 REM (c) 1997 Patrick GUEULLE
Это объединение можно сделать следующим образом:
LOAD "CGA" (загрузка драйвера);
затем
MERGE "CGAVISU" (добавление программы вывода на экран).
Полученная программа теперь может быть сохранена под каким-либо именем при помощи обычной команды SAVE.
На рис. 5.11 показан результат вывода на бумагу с использованием буфера обмена Windows, кривой разряда конденсатора емкостью 4,7 мкФ через входное сопротивление АЦП. Эта кривая была получена на экране CGA (320x200 точек).
Рис 5.11. Результат, полученный в режиме CGA
Рис. 5.12 воспроизводит ту же запись, пересчитанную для вывода на экран VGA.
Рис 5.12. Результат, полученный в режиме VGA
Обеспечение точной временной развертки
Для приложений, требующих точной регистрации параметра «время», можно использовать программу
TIME.BAS, записывающую в файл DAT.DAT значение переменной TIMES вместе с измеренной величиной напряжения.
200 REM — TIME —
210 GOSUB 100
220 OPEN "dat.dat" FOR OUTPUT AS #1
230 PRINT "Идут измерения "
240 FOR G=0 ТО 639
250 GOSUB 100
260 PRINT#1,D,TIME$
270 FOR T=0 TO 2000: NEXT T
300 REM (c) 1997 Patrick GUEULLE
Понятно, что для полной обработки такого файла потребуются специальные программы. Можно использовать как большие коммерческие пакеты, статистические или графические, так и простые программы TCGA.BAS и ТVGA.ВAS.
500 REM — TCGA —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=199-INT(Y*199/5)
530 INPUT#1,S$: PSET(0, Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=199-INT(Y*199/5)
560 INPUT#1,T$: LINE-(X,Y)
570 NEXT X: CLOSE #1
580 LOCATE 1,1: PRINT S$
590 LOCATE 1,73: PRINT S$
600 REM (C) 1997 Patrick GUEULLE
500 REM — TVGA —
510 OPEN "dat.dat" FOR INPUT AS #1
520 INPUT#1,Y: Y=349-INT(Y*349/5)
530 INPUT#1,S$: PSET(C,Y)
540 FOR X=1 TO 639
550 INPUT#1,Y: Y=349-INT(Y*349/5)
560 INPUT# 1,T$: LINE-(X, Y)
570 NEXT X: CLOSE#1
580 LOCATE 1,1: PRINT S$
590 LOCATE 1,73: PRINT S$
600 REM (c) 1997 Patrick GUEULLE
Осциллограф
Во многих ситуациях бывает нужно наблюдать формирование кривой в реальном масштабе времени прямо на экране ПК. При этом должна быть предусмотрена возможность распечатки изображения на принтере после вывода на экран или даже в процессе вывода, при включении опции «печать экрана». Такой результат очень просто получить, совместив три программы:
• драйвер АЦП;
• драйвер экрана;
• прикладную программу.
Первые два модуля уже известны, а в качестве третьего может быть использована либо программа CDIRECT.BAS (с экраном CGA), либо VDIRECT.BAS (с экраном VGA).
85 GOSUB 300
200 REM — CDIRECT —
210 GOSUB 100: PSET(0,0)
220 FOR G=1 TO 639
230 GOSUB 100
240 Y=D: GOSUB 500
250 FOR T=0 TO 2000: NEXT T: REM развертка
260 NEXT G
270 END
415 X=0: RETURN
500 Y=199-INT(Y*199/5)
510 LINE-(X, Y)
520 X=X+1
530 RETURN
540 REM (c) 1997 Patrick GUEULLE
85 GOSUB 300
200 REM — VDIRECT —
210 GOSUB 100: PSET(0,0)
220 FOR G=1 TO 639
230 GOSUB 100
240 Y=D: GOSUB 500
250 FOR T=0 TO 2000: NEXT T: REM развертка
260 NEXT G
270 END
415 X=0: RETURN
500 Y=349-INT(Y*349/5)
510 LINE-(X, Y)
520 X=X+1
530 RETURN
540 REM (c) 1997 Patrick GUEULLE
Потребуются следующие команды:
LOAD "MAXIM10" (загрузка драйвера для МАХ 1243);
MERGE "VGA" (добавление драйвера для экрана VGA);
VERGE "VDIRECT" (добавление модуля осциллографа VGA).
На рис. 5.13 приведена полученная таким образом осциллограмма синусоидального сигнала с амплитудой 1 В и частотой 4 Гц на выходе функционального генератора, выполненного на базе широко распространенной микросхемы МАХ 038. В данном случае 10-разрядный АЦП работал с ПК модели 486/133 МГц с экраном VGA.
Рис 5.13. Осциллогромма, полученная в режиме VGA
Для того чтобы приспособить осциллограф к той или иной практической задаче, в программу достаточно внести минимальные изменения. Для получения непрерывной развертки без очистки экрана (режим длительного послесвечения) следует исправить строку 270:
270 Х=0: GOTO 220
Для получения того же результата, но с очисткой экрана на каждом * обратном ходе» развертки (режим короткого послесвечения), надо записать:
270 CLS: GOTO 85
Для получения режима «ждущей синхронизации» следует добавить только одну строку:
215 IF D=0 THEN 210
Эта команда позволяет дождаться положительного напряжения на входе АЦП для запуска развертки. Конечно, можно выбрать и любую другую отличную от нуля величину в диапазоне от 0 до +5 В, а также использовать условные операторы «больше, чем» или «меньше, чем».
Можно также предусмотреть и вход внешней развертки, использовав либо второй АЦП, либо один из цифровых входов (линии /АСК или BUSY параллельного порта, игровой порт и т. п.).
Возможности многоканальных измеренийПодключение нескольких АЦП к параллельным и последовательным портам позволяет оснастить ПК несколькими аналоговыми входами, не используя при этом дорогие АЦП с мультиплексными входами. Возможны любые сочетания, как в плане аппаратных, так и программных средств.
Самый распространенный случай — это создание двухлучевого виртуального осциллографа, но можно принять в расчет и задачи, требующие режима работы «Х-Y», а также просто запись в файл более или менее взаимосвязанных последовательностей данных.
Допускается огромное множество различных комбинаций — все их даже не перечислить. Скажем, приобретя один готовый АЦП, второй можно собрать самостоятельно, чтобы не платить дважды за одно и то же программное обеспечение. В некоторых случаях может понадобиться использование двух абсолютно идентичных АЦП.
5 REM — BICOURBE —
10 REM — MAXIM12 —
20 KEY OFF: CLS
30 B=&H3F8: REM COM1:
40 N=12: REM число разрядов
50 OUT B+4,1
60 FOR T=0 TO 100:NEXT T
70 OUT B+3,64
80 FOR T=0 TO 500: NEXT T
84 GOSUB 1000
85 GOSUB 300
90 GOTO 200
100 OUT B+4,0: D=0: REM ACQUISITION
105 OUT B+4,2: OUT B+4,0
110 FOR F=0 TO N-1
120 OUT B+4,2
130 E=INP(B+6) AND 16
140 OUT B+4,0
150 IF E=16 THEN D=D+2^(N-1-F)
160 NEXT F
170 D=5*D/(2^N-1)
180 OUT B+4,1: RETURN
200 REM — VDIRECT —
210 GOSUB 100: GOSUB 1090
220 FOR G=1 TO 639
230 GOSUB 100
240 Y=D: GOSUB 500
241 GOSUB 1090
242 Y=Q: GOSUB 600
250 FOR T=0 TO 2000: NEXT T: REM развертка