Étape 1: Code avec commentaires
Avec des ports série, le problème le plus commun ne met pas l’ordinateur et le PIC à la même vitesse de transmission, alors assurez-vous que vous faites cela (comme cela est fait dans mon code).
Aussi, assurez-vous que vous avez à relier tous les GNDs ensemble (PIC, MAX232 et ordinateur GNDs tous connectés).
En outre, assurez-vous que vous utilisez la valeur du condensateur droit pour le max232 (max232 vs max232A), voir diagramme dans l’instructable pour les valeurs correctes.
En outre, assurez-vous que votre ordinateur transmet les valeurs que vous pensez qu’il envoie. Pour ce faire, coller les fils dans le câble DB9 pour faire un bouclage série. Cela rendra l’ordinateur revenir exactement ce qu’il a fait juste. Voici un schéma montrant comment au fil de cette place :
Donc faire votre code matlab une série lire juste après l’écriture de série.
Vous pouvez également utiliser un port série libre surveillant le logiciel à makesure communication série est intervenues correctement (Voici un exemple http://www.batchconverter.com/FreeSerialPortMonitor-download-20643.shtml).
En tout cas, voici le code :
%##########################################################################
%########################--MATLAB CODE--###################################
%##########################################################################
%, Copiez le code suivant suppose que vous avez MATLAB relié à un microcontrôleur PIC via le port série du PC grâce à un
% IC MAX232 _OR_ si vous n’utilisez pas un max232 tous dont vous avez besoin est un 22 kohm limitant les résistances sur
% la ligne sérielle qui relie l’ordinateur à la PIC (aka broche 3 et/ou 2 broches, voir ci-dessous).
La broche 3 % ou le port DB-9 est la ligne TX, aka la ligne qui transporte des données série du PC au PIC.
% Pin 2 porte données série l’autre sens (PIC vers PC) si vous voulez le faire.
Broche 5 %est la broche de terre DB-9 qui vous devez utiliser pour connecter le PC de terrain avec le sol PIC.
% Ce code aussi suppose que vous utilisez COM3 pour communication série avec le PIC.
SerPIC = serial('COM3') ; % <--changer cela de manière appropriée
la valeur (SerPIC, « Baud », 9600, « DataBits », 8, 'Parité', 'none', 'StopBits', 1, « FlowControl », « none ») ;
fopen(SerPIC) ; %--ouvrir le port série au PIC
fprintf (SerPIC, « %se, ' 003 ») ; %--Envoyer une chaîne de chiffres _three_ au PIC avec aucun terminateur (« %s »)
%--003 = 00000011 en binaire, donc tout d’abord deux LEDs du PIC s’allume
fclose(SerPIC) %--fermer le port série lorsque terminé
Delete(SerPIC)
claire SerPIC
% NOTE 1 :
%Si MATLAB donne jamais une erreur de la série, il va probablement dire « impossible d’ouvrir le port série » la prochaine fois que vous
%, exécutez le programme, alors vous devrez redémarrer MATLAB
% NOTE 2 :
% le nombre doit toujours être envoyé comme un nombre à trois chiffres parce que pour une raison quelconque, je ne pouvais pas mon PIC pour recevoir
% du nombre quand il n’était pas d’une longueur spécifiée (voir code de PIC : DEC3)
%==========================================================================
%==========================================================================
'##########################################################################
'#############################--PIC16F877 CODE--###########################
'##########################################################################
' Ce code suppose que vous avez le PIC16F877 doté d’une LED sur chaque ligne du Port D (8 lignes).
« De cette façon, le commandant de bord s’allume un modèle différent des LED selon le numéro envoyer par l’intermédiaire de série à partir de MATLAB.
« Chaque LED devrait être en série avec une résistance de 470 ohms (voir photo ci-dessous)
'_
' '
"'---Conduit---\ 470 ohm
« PIC » >---/ \/\/\---GND
' '------LED---/
'---'
'
' Ce code suppose également que vous avez la ligne TX du port série DB9 connectée à la broche 0 du port C (PORTC.0)
Inclure « bs2defs.bas » ' a des trucs utiles dedans
"OSC définissent 4 ' oscillateur la vitesse en MHz, ce n’est pas nécessaire je suppose
SerI var PORTC.0 ' faire un simple nom pour désigner la broche série
TRISD = % 00000000 ' PortD la valeur comme un port de sortie
PortD = % 00000000 ' la valeur port LED tous les zéros
GetGhost :
Serin2 SerI, 84, (DEC3 B0) ' obtenir un nombre à trois chiffres de la broche série et mettez-la dans B0 infraprovincial
PortD = B0 ' fixer les lignes de PortD selon ce nombre à trois chiffres
GOTO GetGhost
'===========================================================================
'===========================================================================