Читать «Как превратить персональный компьютер в измерительный комплекс» онлайн - страница 43
Патрик Гёлль
Самый распространенный случай — это создание двухлучевого виртуального осциллографа, но можно принять в расчет и задачи, требующие режима работы «Х-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 развертка
260 NEXT G
270 END
300 REM — VGA —
310 SCREEN 9
320 KEY OFF: CLS
330 LINE(0,0)-(0,349),2
340 TOR Y=0 TO 349 STEP 35
350 LINE(0,Y)-(639,Y),2,&HCCCC
360 NEXT Y
370 FOR X=0 TO 639 STEP 32
380 LINE(X,0)-(X,349),2,&HCCCC
390 NEXT X
400 LINE(639,0)-(639,349),2
410 LINE(0,349)-(639,349),2,&HCCCC
415 X=0: RETURN
500 Y=349-INT(Y*349/5)
502 PSET(X,V)
505 V=Y
510 LINE-(X,V),12
520 X=X+1
530 RETURN
600 Y=349-INT(Y*349/5)
602 PSET(X,W)
605 W=Y
610 LINE-(X,W),14
630 RETURN
1000 REM 12BITS
1010 KEY OFF: CLS
1020 C=&H2F8: REM COM2:
1030 M=12: REM число разрядов
1040 OUT C+4,1
1050 FOR T=0 TO 100:NEXT T
1060 OUT C+3,64
1070 FOR T=0 TO 500:NEXT T
1080 RETURN
1090 OUT C+4,0: Q=0: REM ACQUISITION
1100 OUT C+4,2: OUT C+4,0
1110 OUT C+4,2: OUT C+4,0
1120 OUT C+4,2: OUT C+4,0
1130 FOR F=0 TO M-1
1140 OUT C+4,2
1150 E=INP(C+6) AND 16
1160 OUT C+4,0
1170 IF E=16 THEN Q=Q+2^(M-1-F)
1180 NEXT F
1190 Q=5*Q/(2^M-1)
1200 OUT C+4,1: RETURN
1210 REM (c) 1997 Patrick GUEULLE
Программа BICOURBE.BAS не должна рассматриваться только как иллюстрация того, что можно получить при комбинировании программных модулей, приведенных в данной книге. Это образец подхода, называемого англоговорящими программистами
В частности, неоднократно применялась функция RENUM языка BASIC для переопределения в разных местах той или другой подпрограммы.
В том виде, в каком она приведена, программа управляет сразу двумя 12-разрядными АЦП — одним на базе МАХ 1241 и другим на базе LTC 1286. Для каждого из них определен один из каналов двухлучевого осциллографа (рис 5.14), в котором разные цвета лучей позволяют без проблем отличать один АЦП от другого.