Convertisseur 8 entrées analogique vers LPT de PC

Bonjour
je remets en marche une carte electronique qui etait en vente en kit
c’etait un kit a monter soit meme.
8 entrées analogique ,convertion vers un PC
en passant par le port parallele.
un programme ecris en QB4 pour la gestion et affichage a l’ecran des données
voici un programme
et la photo de la carte.
ref du module : CH41
'****************************************************************************
'* FICHIER : ETANCHE2.BAS
" PIERRRE JUMEAUX
'* LE 1/09/1998
'* Aquisition : convertisseur 12 bits sur Lpt1
'* Restitution : carte 8 sorties sur Lpt2
'*
'****************************************************************************
debut:
DEFINT A-Z
DECLARE SUB Adc12DriverOpen (port%)
DECLARE SUB Adc12getvalue ()
CLS
SCREEN 12
WINDOW (1, 1)-(4095, 350)

’ **************************

CONST cshigh% = &HFE
CONST clockhigh% = &HFD
CONST clocklow% = &HFC
CONST databit% = &H80 'masque pour la broche 11 (data de ADC-12)
DIM SHARED adc&
DIM SHARED outputaddress% 'imprimer port output
DIM SHARED portin% 'imprime port input
DIM adcpre
DIM sortie(8) 'designation des huit sortie
CALL Adc12DriverOpen(1)
LINE (1, 35)-(4095, 320), 10, B 'cadre exterieur vert
LOCATE 24, 3: COLOR 15: PRINT « Modification de la Consigne = »
LOCATE 4, 2: PRINT " Tension De R‚f = 3,000 Volts "
LOCATE 25, 60: PRINT « Consigne = »
LINE (19, 37)-(4075, 100), 11, B 'cadre CIAN
adcpre = 0
adc& = 0
j = 0
t = 0
u = 0
x = 0
xx = 0
y = 0
yy = 0
z = 0
'*****************************************
OPEN « ETANCHE.MDB » FOR INPUT AS #1
INPUT #1, conf
LOCATE 23, 38: PRINT " "
LOCATE 25, 70: COLOR 10: PRINT conf
CLOSE #1
'******************************************

DO
j = j + 1
IF j = 5000 THEN GOTO eteint
IF j > 5000 THEN j = 0
IF t = 5000 THEN t = 0
IF sortie(1) = 1 THEN j = 0
LOCATE 1, 5: PRINT j
u = u + 1
IF u = 50 THEN u = 0
IF u < 10 THEN LOCATE 24, 33: PRINT " "
IF u > 20 THEN LOCATE 24, 33: COLOR 15: PRINT « F1 »

IF u < 10 THEN LOCATE 24, 33: LINE (60, 71)-(1750, 85), 12, B
IF u > 20 THEN LOCATE 24, 33: LINE (60, 71)-(1750, 85), 14, B

 IF adc& > adcpre THEN
 LINE (adc&, 0)-(adcpre, 30), 13, BF
 ELSEIF adc& < adcpre THEN
 LINE (adcpre, 0)-(adc&, 30), 0, BF
 ELSE
 END IF
 adcpre = adc&

IF adc& > conf THEN LOCATE 4, 70: COLOR 10: PRINT "BON ": x = 10
IF adc& < conf THEN LOCATE 4, 70: COLOR 12: PRINT « MAUVAIS »: x = 12
LINE (100, 120)-(4000, 300), x, BF
'**********
’ IF adc& < conf THEN sortie(1) = 0 ELSE sortie(1) = 1
’ IF adc& < 2000 THEN sortie(2) = 0 ELSE sortie(2) = 1
'***********
car$ = INKEY$
IF car$ = « q » OR car$ = « Q » THEN END
IF LEN(car$) = 2 AND RIGHT$(car$, 1) = « ; » THEN GOSUB clignot 'TOUCHE F1
CALL Adc12getvalue
LOCATE 1, 70: COLOR 15: PRINT TIME$
'IF t = 5000 THEN t = 0
LOCATE 21, 66: COLOR 13: PRINT « ADC-12 = »; adc&
LOCATE 21, 3: COLOR 11: PRINT USING « TENSION = #.### Volts »; ((5 * adc&) / 4095)
GOSUB sortie
LOOP
'****************************************************************
clignot:
DO
car$ = INKEY$
IF car$ = « q » OR car$ = « Q » THEN END
y = y + 1
IF y = 25 THEN yy = yy + 1
IF y = 100 THEN y = 0
IF y > 25 THEN LOCATE 25, 3: COLOR 10: PRINT « FRAPPEZ La valeur de consigne: »
IF y < 25 THEN LOCATE 25, 3: PRINT " "
IF yy = 5 THEN GOTO modif

LOOP

'****************************************************************
modif:
y = 0
yy = 0
LOCATE 25, 36: PRINT " "
LOCATE 25, 70: PRINT " "

LOCATE 25, 3: COLOR 10: INPUT "FRAPPEZ La valeur de consigne: "; conf
LOCATE 25, 70: PRINT conf
LOCATE 23, 38: PRINT " "
OPEN « ETANCHE.MDB » FOR OUTPUT AS #1
WRITE #1, conf
CLOSE #1
LOCATE 25, 3: PRINT "CONSIGNE MEMORISE "
GOTO debut
'****************************************************************
sortie: 'PORT // Nø2 = 888 (ou la valeur de 0378)
d = 0
FOR g = 0 TO 7
IF sortie(g) <> 0 THEN d = d + 2 ^ g
NEXT g
OUT 888, d '956 888
OUT 890, 255 '957 890
OUT 890, 0 '957 890
RETURN
'**********************************************
eteint:
CLS

DO

’ IF adc& < conf THEN sortie(1) = 0 ELSE sortie(1) = 1
’ IF adc& < 1500 THEN sortie(2) = 0 ELSE sortie(2) = 1

car$ = INKEY$
'IF sortie(2) = 1 THEN GOTO debut 'attention au reglage de la sortie 2
IF car$ = « q » OR car$ = « Q » THEN END
CALL Adc12getvalue
LOCATE 1, 70: COLOR 15: PRINT TIME$
IF t = 5000 THEN t = 0
GOSUB sortie
IF INKEY$ <> «  » THEN c = 1: GOTO debut
y = y + 1
IF y = 25 THEN yy = yy + 1
IF y = 100 THEN y = 0
IF y > 25 THEN LOCATE 12, 25: COLOR 12: PRINT « LE SYSTEME EST EN VEILLE !!! »
IF y < 25 THEN LOCATE 12, 25: PRINT " "

IF y > 25 THEN LOCATE 22, 15: COLOR 10: PRINT « APPUYER SUR UNE TOUCHE DU CLAVIER POUR LE REACTIVER »
IF y < 25 THEN LOCATE 22, 15: PRINT " "

LOOP

END

'***************************************************************************
'*
'* Adc12DriverOpen
'* This routine sets port addresses and powers up the ADC-12
'*
'* accepts:
'* 1 - use LPT1
'* 2 - use LPT2
'* 3 - use LPT3
'* 4 - use LPT4
'*
'* sets:
'* outputaddress
'* portin
'*
'***************************************************************************

SUB Adc12DriverOpen (port)

'read the printer port address from the BIOS
DEF SEG = 0
addr% = &H408 + 2 * (port - 1)
outputaddress% = PEEK(addr%) + (PEEK(addr% + 1) * 256)
portin% = outputaddress% + 1

'power up the ADC-12
OUT outputaddress%, cshigh%

END SUB

'***************************************************************************
'*
'* Adc12GetValue
'* This routine starts a new conversion and gets the result of
'* the PREVIOUS conversion. (The first result is invalid as no
'* conversion has been performed).
'*
'* Sets:
'* adc% - result of previous conversion
'*
'***************************************************************************

SUB Adc12getvalue

    adc& = 0       'data is read into this string one bit at a time

      OUT outputaddress%, clocklow%       'switch clock low, CS low

      FOR j% = 1 TO 12 'read in 12 bits from ADC-12 serially

            OUT outputaddress%, clockhigh%      'switch clock high
            OUT outputaddress%, clocklow%       'switch clock low

            ' Shift the result so far one bit to the left
            adc& = adc& * 2

            ' If the input is LOW, set the bottom bit in result
            IF (INP(portin%) AND databit%) = 0 THEN
              adc& = adc& + 1
            END IF

      NEXT

    OUT outputaddress%, cshigh%

END SUB

Ce KIT CH41 etait en vente dans le magasine ELECTRONIQUE PRATIQUE
En bas a gauche de la photo

Je recherche tout documents concernant ce KIT
MERCI de me répondre.

Faire marcher ce truc risque d’être compliqué. Il faut un port parallèle, et ensuite pouvoir y accéder. Avec les OS modernes, c’est devenu très compliqué. Et côté composants, c’est totalement dépassé. Aujourd’hui, il est plus simple de passer par l’USB.
Sinon, il suffit de refaire le schéma pour comprendre le câblage. Déjà, le 4001 doit servir à faire l’horloge. Mais à mon avis, cela ne vaut pas le coup de passer du temps là dessus, autant le passer sur un truc moderne, en USB, avec du Python par exemple.