Читать «Как превратить персональный компьютер в измерительный комплекс» онлайн - страница 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 не должна рассматриваться только как иллюстрация того, что можно получить при комбинировании программных модулей, приведенных в данной книге. Это образец подхода, называемого англоговорящими программистами quick and dirty («быстро и грязно»), т. е. здесь отсутствует всякое стремление к структурированию и четкости. Программа работает, и это главное!

В частности, неоднократно применялась функция RENUM языка BASIC для переопределения в разных местах той или другой подпрограммы.

В том виде, в каком она приведена, программа управляет сразу двумя 12-разрядными АЦП — одним на базе МАХ 1241 и другим на базе LTC 1286. Для каждого из них определен один из каналов двухлучевого осциллографа (рис 5.14), в котором разные цвета лучей позволяют без проблем отличать один АЦП от другого.