1) Répartiteur VGA
L'appareil sert à pouvoir visionner en même temps 4 moniteurs VGA à partir d'une seule sortie de carte graphique VGA. Pour donner cours le professeur dispose d'un des 4 moniteurs et de l'ordinateur et ses 10 élèves regardent le cours sur les trois autres moniteurs par groupe de 3 à 4 élèves.
Schéma:

Les transistors utilisés sont de BC548 classique, le schéma est un ampli VGA , il est donc triplé pour les trois couleurs fondamentales.
Si sur le plan il fait marqué 10 sur une résistance, c'est 10 ohms. 180 c'est 180 ohms. Car plusieurs personnes
Mon envoyés des E-mail pour cela. Pour les synchro horizontales et verticales ils sont commander par des portes logiques 7432 ne pas mettre les 74LS32 à la place car ils ne sont pas suffisamment puissants,
il vaut mieux utilisé une seule porte par sortie synchro, car certain moniteur VGA sont plus gourmand que d'autre en courant. Le 74HCT32 commande les 7432.
Il y avait moyen d'utiliser des IC analogique mais ca augment le prix considérablement.
implantation:

PCB: côté cuivre et composants avec protel 1.5
Attention si vous avez une image floue, c'est du à une mauvaise masse, un mauvais trou métallisé ou un oubli de soudure sur une pinne.
2) Isolation OPTO pour port parallèle unidirectionnel de PC compatible IBM
Il est de plus en plus recommander de mettre une isolation OPTO sur vos ordinateur pour faire des montages autour des ports séries et parallèles. Surtout si vous avez une carte mère avec le chipset VIA et CPU AMD, elles sont très fragiles.

autre schéma plus rapide mais plus coûteux

N'oubliez pas les résistances smd 1k8 sur les entrées pin 7 des optos reliées au plus 5 Volts.
Avant de brancher votre carte sur votre PC tester la rigoureusement avec votre multimètre élément par élément.
Il y va de la vie de votre PC, faite ça bien et surtout ne soyez pas trop pressez.
Vous simulez votre ordinateur en appliquant des "1" sur les 12 entrées.
Vous simulez votre carte dans l'autre sens également en placent des "0" sur les entées.
Les Optos 6NY84 suivent jusqu'à 100 Khz alors que les 74HCTxxx suivent jusqu'à 10 Mhz.
Si vous voulez monter à 10 Mhz, il faut essayer les OPTOs 6N137 au lieu des CNY74, le gros problème c'est qu'ils coûtent chers et sont encombrants.
Ce circuit est valable pour les jeux de lumière commandés par ordinateur. Par contre pour un programmateur d'EPROM qui doit tourner nettement plus vite, ce circuit ne tournera pas correctement, mais il pourra servir pour les diagnostiques de dépannage ou de conception.
3) Isolation OPTO pour port série de PC compatible IBM


Voici le PCB avec protel 1.5 sur une euro carte. Il faut deux alimentations 5 V différentes, une de chaque côté des OPTOS. Attention la face ou est fixé les connecteurs DB9 doit être en matière isolante afin d'isolé les masses entre PC et votre sortie opto sans quoi votre appareil ne sert à rien.
Quick BASIC
Voici un petit programme en Qbasic pour faire clignoter la led D0 et vérifier la transmission du signal de l'entrée de cette carte Opto à la sortie n°2 de la DB 25 mâle.
CLS
10
OUT &h378,0
FOR x=1 to 200000
NEXT x
OUT &h378,1
FOR x=1 to 200000
NEXT x
IF INKEY$<>"" THEN END
GOTO 10
END
Si l'adresse de votre port parallèle est 278 à la place de 378, changez le dans votre programme.
Explication du programme.
CLS est une instruction qui efface l'écran en Qbasic.
Out est une instruction qui va effectuer le changement d'état du port parallèle de votre PC.
&h378 est l'adresse de votre port parallèle en hexadécimal.
0 éteint toutes les LED de D0 à D7
FOR x=1 to 200000
NEXT x --> est une boucle de durée. En effet, vous faite compter votre ordinateur en donnant à la variable x la valeur 1 et l'instruction NEXT x renvoie de nouveau à la variable x qui prendra une valeur incrémenté de 1 unité et le cycle continue jusqu'à ce que la variable x arrive à 200000. Ensuite la boucle s'arrête et vous passez à l'instruction suivante donc à la ligne suivante. C'est la durée pendant lequel la LED restera allumée.
OUT &h378,1 accède au port parallèle pour modifier ses états.
1 est le bit de poids le plus faible que vous allumez, dont vous lui donnez la valeur 1.
Si vous voulez allumez uniquement la Led D1, vous donnerez la valeur 2 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D2, vous donnerez la valeur 4 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D3, vous donnerez la valeur 8 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D4, vous donnerez la valeur 16 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D5, vous donnerez la valeur 32 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D6, vous donnerez la valeur 64 à la place de la valeur 1.
Si vous voulez allumez uniquement la Led D7, vous donnerez la valeur 128 à la place de la valeur 1.
Si vous voulez allumez toutes les Led de D0 à D7, vous donnerez la valeur 255 à la place de la valeur 1.
En effet avec 8 fils vous avez 256 possibilités et si vous comptez le zéro avec, il vous reste 256 - 1 = 255 possibilités. 28=256, c'est simple vous placez le nombre de fils comme exposant sur le 2 qui lui représente le binaire et le tour est joué vous obtenez le chiffre 256. Ne pas oublier que 28 est 2*2*2*2*2*2*2*2=256.
FOR x=1 to 200000 est la deuxième boucle de temps durée pendant lequel la LED restera allumée.
NEXT x
IF INKEY$<>"" THEN END cette instruction permettra de sortir de notre boucle en appuyant sur n'importe quelle touche du clavier PC, pour arrêter le programme.
GOTO 10 nous renvoi à la ligne N°10 en boucle continue.
END -->fin du programme, notez bien que cette instruction n'est pas obligatoire puisqu'on n'y arrive jamais car le programme boucle toujours.
En DELPHI
asm
mov dx, 0378h
mov ax, 255
out dx, al
end;
end;
En delphi, on doit ouvrir une section en assembleur car les registres sont de 32 bits.
Vous placez l'adresse hexadécimal 0378h dans le registre appelé dx en ligne 2.
En ligne 3 vous placez le nombre décimal 255 dans le registre accumulateur ax.
En ligne 4 vous activez le port parallèle d'adresse dx et vous allumez toutes les diodes LED.
En ligne 5 fin du programme.
Les boucles de durées peuvent se faire en pascal c'est pour plus tard.
En visuel Basic 6
Port série
Après avoir démarré windows les sorties TX, DTR et RTS du port série RS 232 sont au niveau logique 0 et la tension est de –10 Volts.
Vous aurez un 1 logique pour une tension de +10 Volts.
1 -> de +3 v à +10 v |suivent le type de PC.
0 -> de –3 v à -10 v |
Modifier l’état du port de sortie série et parallèle avec visuel basic nécessite une DLL pour windows à placer dans le directoire windows\system . Le nom de fichier de cette DLL est port.dll et avec cette DLL il faut faire une succession de déclarations pour que visuel basic la tienne en compte. Cette succession de déclaration est mise dans un fichier module appelé ports.bas car on ne va pas taper toutes ces déclarations à chaque fois que l’on ouvre visuel basic 6.
Comment mettre le module ports.bas dans visuel basic 6 ?
Et bien en cliquant sur projet du menu, puis en cliquant sur ajout un module, et puis sélectionnez l’onglet existant et dirigez vous dans les directoires sur votre fichier ports.bas et cliquez sur lui. Voilà toutes les 36 lignes de déclarations sont présentes dans visuel basic 6.
Voici les fichiers :on les trouvent aussi sur internet et en trouve même d'autre et tout est gratis.
Comment activer une sortie du port série ?
Pour adresser le port RS232, il faut ouvrir le port comme lors d’un ace fichier.
Attention lors de l’ouverture de ce port vous effectuez ré-initialisation des sorties qui peuvent perturber votre montage. C’est pourquoi, qu’on pratique l’ouverture du ce port à l’ouverture de votre feuille d’application. Et on refermera le port en ressortant de cette feuille.
Dans le code d’ouverture de la feuille tapez
Private Sub Form_Load()
OPENCOM ("com1,1200,n,8,1")
End Sub
Et dans le code de fermeture de la feuille tapez. Attention sélection sur l'onglet de FROM l'option UNLOAD et on obtient à
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
Pour activer RTS avec un bouton tapez dans le code de ce bouton
Private Sub Command1_Click()
TXD 0
RTS 1
DTR 0
End Sub
Pour désactiver RTS avec un bouton tapez dans le code de ce deuxième bouton
Private Sub Command2_Click()
TXD 0
RTS 0
DTR 0
End Sub
Autre façon de procéder.
Dans le code d’ouverture de la feuille tapez
Private Sub Form_Load()
OPENCOM ("com1,1200,n,8,1")
End Sub
Et dans le code de fermeture de la feuille tapez
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
Pour activer RTS avec un bouton tapez dans le code de ce bouton
Private Sub Command1_Click()
OUTPORT &h3F8+4, 2
End Sub
Pour désactiver RTS avec un bouton tapez dans le code de ce deuxième bouton
Private Sub Command2_Click()
OUTPORT &h3F8+4, 0
End Sub
2 à RTS à 1
1 à DTR à 1
3 à RTS et DTR à 1
0 à RTS et DTR à 0
pour TX à OUTPORT &h3F8+3, 64
Comment LIRE une ENTREE du port série ?
Ils y 5 entrées sur un RS232
DCD
RX
RI
DSR
CTS
De –3 v à -10 v on a un 0 logique
et de +3 v à +10 v on a un 1 logique
En visuel basic 6 on peut lire en direct seulement 4 entrées DCD,RI,DSR et CTS.
Dans le code d’ouverture de la feuille tapez
Private Sub Form_Load()
OPENCOM ("com1,1200,n,8,1")
End Sub
Et dans le code de fermeture de la feuille tapez
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
Pour lire DCD avec un bouton tapez dans le code de ce bouton
Private Sub Command1_Click()
A=DCD( )
End Sub
Ou
Private Sub Command1_Click()
A=INPORT(&h3F8+6) and 128
End Sub
On aura CTS pour 16, DSR pour 32, RI pour 64 et DCD pour 128
Transmission asynchrone par tx et rx
Transférer avec un UART
Dans le code d’ouverture de la feuille tapez
Private Sub Form_Load()
OPENCOM ("com1,1200,n,8,1")
End Sub
Et dans le code de fermeture de la feuille tapez
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
SENDBYTE(2) à émet sur TX le nombre 2
Données = READBYTE à reçoit sur RX les 8 bits
Port parallèle
Adresse 379 ou 279 ou 3BD
Pour la DLL et les déclaration voilez le port série, il faut que cette DLL soie dans le directoire système de windows. Et en principe les déclarations de fonction vous les avez déjà faite.
Il faut utiliser l'instruction OUTPORT &H378,255 pour mètre à 1 logique toutes les données du port parallèle de D0 à D7. OUTPORT &H378,0 pour mettre D0 à D7 à 0 logique.
On peut ne changer qu'un seul bit le 3 ieme à OUTPORT &H378,INPORT (&h378) OR 4
Pour le bus de commande 4 bits sont adressable en sortie: stobe, autofeed, init, sel in
OUTPORT &H37A,INPORT (&h37A) OR 4


Les entrées
Attention ne pas utiliser cette instruction en temps que telle B = INPORT(&H379)
Mais B3 = INPORT(&H379) AND 8 car les bits 1 , 2 , 3 sont pas définis.
Réponse B3 = 0 nous indique un zéro logique
B3 = 8 nous indique un 1 logique ou 5 V

Attention le bit n°8 est inversé
Ex) B7 = INPORT(&H379) AND 128
Réponse B7 = 0 nous indique un 1 logique
B7 = 128 nous indique un 0 logique ou 0 V
PASCAL Microcontrôleur Fam 8051
Structure générale d'un programme
En rouge les mots clés
En bleu ; un point virgule qui signifie que l'instruction est finie et que le programme doit continué.
En vert les noms
En brun (**) les commentaires sont situés dans les parenthèses.
En violet ('contenu d'affichage à l'écran')
program Nom; (*je donne un nom au programme*)
var nb_de_sonneries, sonneries_supl : integer; (*ma variable nommée
nb_de_sonneries est un nombre entier de -32767 à +32767* )
(*ma 2eme variable nommée sonneries_supl est un nombre entier de -32767 à
+32767* )
begin (*début du programme*)
write ('combien de coups de sonnerie désirez-vous ?');
read (nb_de_sonneries); (*entrez le nombre de coups de sonnerie*)
writeln ('D''accord, les voiçi: ', nb_de_sonneries);
write ('combien de coups de sonnerie supplémentaires voulez-vous ?');
read (sonneries_supl);
writeln ('Addition des coups de sonnerie: ',nb_de_sonneries + sonneries_supl);
end.(*fin du programme, n'oubliez pas le point après le end*)
opérateurs
l'addition à +
la soustraction à -
la multiplication à *
la division à div
le reste de la division à mod
égal à =
supérieur à à >
inférieur à à <
supérieur ou égal à >=
inférieur ou égale à <=
condition si à if
alors à then
sinon à else
Logique
et à AND
ou à OR
Non à not
à <>