Chapitre A4 : Logique Programmée
Ce matériel couvre les notions fondamentales de la logique programmée appliquée aux microcontrôleurs, en particulier le PIC 16F84A. Il s'adresse aux étudiants en sciences techniques souhaitant comprendre la programmation embarquée pour des applications industrielles telles que la commande automatique d'une porte de garage ou d'un monte-charge.
D'après le document Chapitre A4 : Logique Programmée
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Computer Science and Electrical Engineering · PDF · 11 pages
Afficher l'aperçu du document
Ce matériel couvre les notions fondamentales de la logique programmée appliquée aux microcontrôleurs, en particulier le PIC 16F84A. Il s'adresse aux étudiants en sciences techniques souhaitant comprendre la programmation embarquée pour des applications industrielles telles que la commande automatique d'une porte de garage ou d'un monte-charge.
Les microcontrôleurs et leur application industrielle
Un microcontrôleur est un circuit intégré regroupant plusieurs composants essentiels à la commande d'un système embarqué :
- Un microprocesseur (CPU).
- Une mémoire de données (RAM et EEPROM).
- Une mémoire programme (ROM, OTPROM, UVPROM ou EEPROM).
- Une interface parallèle pour les entrées/sorties.
- Une interface série (synchrone ou asynchrone) pour communiquer avec d'autres unités.
- Des timers pour générer ou mesurer des signaux avec précision temporelle.
- Des convertisseurs analogique/numérique pour traiter des signaux analogiques.
Exemple d'application : la porte automatique d'un garage est commandée à distance par une télécommande qui transmet un code binaire sur dix bits [C9..C0]. Ce code est divisé en deux parties : un code d'identification de la télécommande et un ordre d'ouverture ou de fermeture (C1, C0). Le code d'ordre est codé ainsi :
| Bits | Valeur |
|---|---|
| C1 C0 | 10 : ordre d'ouverture |
| C1 C0 | 11 : ordre de fermeture |
Un microswitch permet à l'utilisateur de définir le code d'identification sur la télécommande, facilitant ainsi l'adaptation ou le remplacement de celle-ci.
Programmation graphique et algorigrammes
L'algorigramme (ou organigramme) est une représentation graphique normalisée utilisée pour analyser ou décoder un problème logique. Il s'agit d'une suite de symboles définis permettant de modéliser les actions élémentaires d'un programme.
Dans le cas de la télécommande, un programme graphique est réalisé pour piloter le microcontrôleur, en traduisant les actions attendues en symboles et flux logiques.
Programmation en langage évolué : Mikropascal
La programmation peut aussi être réalisée en langage évolué, notamment en PASCAL, avec le compilateur Mikropascal adapté aux microcontrôleurs PIC. La méthode consiste à :
- Traduire le cahier des charges en une suite ordonnée d'actions (algorithme).
- Décomposer l'algorithme en instructions élémentaires.
- Transformer cet algorithme en code PASCAL.
Structure d’un programme Mikropascal
Un programme Mikropascal comprend trois parties :
- Entête : une ligne commençant par
Programsuivi du nom du programme. - Déclarations : définition des variables, constantes, procédures et fonctions.
- Corps du programme : entre
BeginetEnd., contient les instructions à exécuter.
Règles de base
- Toutes les instructions se terminent par un point-virgule
;. - Les commentaires commencent par
{ }ou//. - Un bloc d'instructions commence par
Beginet se termine parEnd.
Types de variables et notation des nombres
- Variables déclarées avec
Var nom_variable : type ; - Constantes déclarées avec
Const nom_constante : type = valeur ; - Notation des nombres :
- Décimal :
A=10 ; - Hexadécimal :
A=$0F ;ouA=0x0F ; - Binaire :
A=%11010100 ;
Opérateurs et structures usuelles
- Affectation : attribuer une valeur à une variable.
- Structures alternatives : conditions
if ... then ... else. - Structures itératives : boucles
while,for.
Procédures et fonctions
Les sous-programmes permettent de regrouper des instructions réutilisables :
- Procédure : groupe d'instructions sans valeur de retour.
Procédure Identificateur (Param1:Type1, Param2:Type2,...);
Déclarations
Begin
Instruction1;
Instruction2;
...
End;
- Fonction : similaire à une procédure mais retourne un résultat.
Function Identificateur (Param1:Type1, Param2:Type2,...):Type_R;
Déclarations
Begin
Instruction1;
Instruction2;
...
Identificateur := résultat;
End;
Structure générale d’un programme Mikro_Pascal
Program nom_programme;
Déclarations de constantes, types, variables;
Déclarations des procédures et fonctions;
Begin
Activation des interruptions;
Configuration des entrées/sorties;
Initialisation des sorties;
while (1=1) do
begin
Instruction1;
Instruction2;
...
end;
end.
Applications pratiques
Exemple 1 : Carte de commande d’une porte automatique
Algorithme simplifié :
Algorithme Carte_commande;
_DEBUT
TRISB ⇐ $......; // RA0, RA1, RA2 : sorties
TRISB ⇐ $......; // tout le port B en entrée
porta ⇐ 0; // initialisation des sorties
TANT QUE (1=1) FAIRE // boucle infinie
_DEBUT
SI (portB.4 = ...) ALORS // ouverture de la porte
_DEBUT
TANT QUE ((portB.6=0) ET (portB.4=1)) FAIRE
_DEBUT
portA.0 ⇐ ...; // moteur sens ouverture
portA.2 ⇐ ...; // lampe signalisation allumée
_FINFAIRE;
_FINSI;
SI (portB.5=1) ALORS // fermeture de la porte
_DEBUT
TANT QUE ((portB.7=...) ET (portB.5=...)) FAIRE
_DEBUT
portA.1 ⇐ 1; // moteur sens fermeture
portA.2 ⇐ 1; // lampe signalisation allumée
_FINFAIRE;
_FINSI;
portA ⇐ 0; // arrêt moteur et lampe éteinte
_FINFAIRE;
_FIN.
Programme Mikropascal correspondant (à compléter) :
Program Carte_Commande;
Begin
// RA0, RA1, RA2 : sorties
// Tout le port B en entrée
// Initialisation des sorties
// Boucle infinie
while (1=1) do
begin
// Si commutateur en position ouverture
if (portB.4 = 1) then
begin
while ((portB.6=0) and (portB.4=1)) do
begin
portA.0 := 1; // moteur ouverture
portA.2 := 1; // lampe allumée
end;
end;
// Si commutateur en position fermeture
if (portB.5 = 1) then
begin
while ((portB.7=0) and (portB.5=1)) do
begin
portA.1 := 1; // moteur fermeture
portA.2 := 1; // lampe allumée
end;
end;
portA := 0; // arrêt moteur et lampe éteinte
end;
end.
Exemple 2 : Commande d’un monte-charge
Fonctionnement :
- Appui sur le bouton départ (dcy) lance la montée de la cabine vers le 2ème étage par rotation moteur sens 1 (CM) jusqu'à l’action sur le capteur m.
- Attente de T = 5 secondes.
- Descente de la cabine au rez-de-chaussée par rotation moteur sens 2 (CD) jusqu'à l’action sur le capteur d.
Tableau d’affectation des entrées/sorties :
| Entrées/Sorties | Broche µC |
|---|---|
| Entrée : dcy | RA0 |
| Entrée : m | RA1 |
| Entrée : d | RA2 |
| Sortie : EI | RB0 |
| Sortie : T1 | RB1 |
| Sortie : CM | RB2 |
| Sortie : CD | RB3 |
Algorithme simplifié :
Algorithme Monte_Charge
Variables X0, X1, X2, X3, t1 : byte;
Début
TrisA ⇐ ... ; // Configuration RA0, RA1, RA2 en entrée
TrisB ⇐ ... ; // Configuration RB0 à RB3 en sortie
PortB ⇐ 0; // Initialisation sorties
X0 ⇐ 1; // Etat initial
X1 ⇐ 0;
X2 ⇐ 0;
X3 ⇐ 0;
t1 ⇐ 0;
Tant que (1=1) faire
Début
Si ((PortA.0=1) et (X0=1)) alors
Début
X0 ⇐ 0;
X1 ⇐ 1;
Fin;
Si ((PortA.1=1) et (X1=1)) alors
Début
X1 ⇐ 0;
X2 ⇐ 1;
Fin;
Si ((X2=1) et (t1=5)) alors
Début
X2 ⇐ 0;
X3 ⇐ 1;
Fin;
Si ((PortA.2=1) et (X3=1)) alors
Début
X3 ⇐ 0;
X0 ⇐ 1;
Fin;
Si (X0=1) alors PortB.0 ⇐ 1 sinon PortB.0 ⇐ 0;
Si (X1=1) alors PortB.1 ⇐ 1 sinon PortB.1 ⇐ 0;
Si (X2=1) alors
Début
PortB.2 ⇐ 1;
t1 ⇐ 0;
delay_ms(5000);
t1 ⇐ 5;
Fin
Sinon
Début
PortB.2 ⇐ 0;
t1 ⇐ 0;
Fin;
Si (X3=1) alors PortB.3 ⇐ 1 sinon PortB.3 ⇐ 0;
Fin;
Fin.
Glossaire des termes clés
- Microcontrôleur : Circuit intégré regroupant microprocesseur, mémoire, interfaces et périphériques pour commande embarquée.
- Algorigramme : Représentation graphique normalisée d’un algorithme ou programme.
- Programme Mikropascal : Code source écrit en langage PASCAL adapté aux microcontrôleurs PIC.
- Procédure : Sous-programme sans valeur de retour, regroupant des instructions.
- Fonction : Sous-programme retournant une valeur (numérique ou chaîne).
- TRIS : Registre de configuration des ports d’entrée/sortie (1 = entrée, 0 = sortie).
- PortA, PortB : Registres correspondant aux ports d’entrées/sorties du microcontrôleur.
- Delay_ms : Fonction provoquant une temporisation en millisecondes.
Points clés à retenir
- Un microcontrôleur intègre tous les composants nécessaires à la commande d’un système embarqué.
- La programmation peut être graphique (algorigramme) ou en langage évolué (Mikropascal).
- Un programme Mikropascal se structure en entête, déclarations et corps avec des règles syntaxiques strictes.
- Les procédures et fonctions permettent de modulariser et réutiliser le code.
- La configuration des ports (TRIS) est essentielle pour définir les entrées et sorties.
- Les applications industrielles comme la commande d’une porte automatique ou d’un monte-charge illustrent l’usage concret des microcontrôleurs.
Commentaires
Aucun commentaire pour le moment. Posez la première question.