bonjour,
Je suis novice en électronique et j'ai recemment fait l'acquisition d'un controller pour moteur de monture équatoriale astro (MTS3SDI). Ce controller est livré avec un cable PORT SERIE pour le controle via PC et il peut être uprgrader avec un afficheur LCD 16x2 alphanumerique connectable sur le même port que celui de la prise pour PC.
Je peut en effet controller les paramètres du controller avec un programme fait sous QBASIC (je n'y connais rien du tout à la programmation). C'est interessant mais je souhaiterais acheter le LCD qui coute tout de même 150€ l'upgrade! (un LCD sur CON..D.COM coute environ 30 à 40 pour un 16X2) seulement voila je n'y connais rien aux connections et peut être qu'avec le programme QBASIC qqun pourrait m'aider à trouver les PIN à connecter au module LCD non? à priori il faut prendre les PINs qui correspondent au signal généralement 8PINS... Voici le programme en question:
DIM cgram0%(63)
DIM ddram%(150, 1)
SCREEN 2
ESC$ = CHR$(27)
GOSUB initport
GOSUB cleardd
FOR i% = 0 TO 56 STEP 8
cgram0%(i%) = 8
cgram0%(i% + 1) = 8
NEXT
DEF SEG = VARSEG(cgram0%(2 + 0))
adr0% = VARPTR(cgram0%(2))
cgadr% = 0
zeile% = 0
spalte% = 0
iscg% = 0
rs% = 1
PRINT #1, CHR$(&HA0);
DO
key$ = INKEY$
IF key$ = ESC$ THEN CLOSE : END
IF key$ <> "" THEN PRINT #1, CHR$(&HA1): END
IF LOC(1) > 0 THEN
c$ = INPUT$(1, 1)
c% = ASC(c$)
IF c% = 255 THEN
rs% = 0
ELSE
GOSUB LCD
END IF
END IF
LOOP
END
LCD:
c% = ASC(c$)
IF rs% = 0 THEN
rs% = 1
IF c% >= 128 THEN
IF c% >= 192 THEN zeile% = 1 ELSE zeile% = 0
spalte% = c% AND &H3F 'dd set
iscg% = 0
ELSEIF c% >= 64 THEN
cgadr% = c% AND &H3F 'cg set
iscg% = 1
ELSEIF c% >= 32 THEN
'function set
ELSEIF c% >= 16 THEN
'shift
ELSEIF c% >= 8 THEN
'displaycontrol
ELSEIF c% >= 4 THEN
'entrymodeset
ELSEIF c% >= 2 THEN
zeile% = 0: spalte% = 0 'home
ELSEIF c% >= 1 THEN
CLS : zeile% = 0: spalte% = 0 'clear
END IF
RETURN
END IF
IF iscg% = 1 THEN
GOSUB loadcg
GOSUB displaycg
RETURN
END IF
ddram%(spalte%, zeile%) = c%
IF c% < 8 THEN
PUT (spalte% * 8, zeile% * 8), cgram0%(c% * 8), PSET
ELSE
LOCATE zeile% + 1, spalte% + 1
IF c% > 128 THEN
IF c% = &HE1 THEN c$ = "„"
IF c% = &HEF THEN c$ = "”"
IF c% = &HF5 THEN c$ = ""
IF c% = &HDF THEN c$ = "ø"
END IF
PRINT c$;
END IF
spalte% = spalte% + 1
IF spalte% >= &H50 THEN spalte% = 0
RETURN
loadcg:
IF cgadr% < 64 THEN
POKE adr0% + cgadr% + (cgadr% AND &H38), c% * 4
END IF
cgadr% = cgadr% + 1
IF cgadr% >= &H40 THEN cgadr% = 0
RETURN
cleardd:
CLS
FOR ddzeile% = 0 TO 1
FOR ddspalte% = 0 TO 15
ddram%(ddspalte%, ddzeile%) = 32 'space
NEXT
NEXT
RETURN
displaycg:
FOR ddzeile% = 0 TO 1
FOR ddspalte% = 0 TO 15
IF ddram%(ddspalte%, ddzeile%) < 8 THEN
PUT (ddspalte% * 8, ddzeile% * 8), cgram0%(8 * ddram%(ddspalte%, ddzeile%)), PSET
END IF
NEXT
NEXT
RETURN
initport:
OPEN "COM2:9600,N,8,1,CD0,CS0,DS0,O P0,RS,TB2048,RB20480" FOR RANDOM AS #1
' OUT &H2F8 + 3, 128 'Baudrateneingabe
' OUT &H2F8 + 0, 12 '57600 Baud
' OUT &H2F8 + 1, 0
' OUT &H2F8 + 3, 3 '8 Bit + 1 Stopbit
RETURN
MERCI pour votre aide.
-----