Documente Academic
Documente Profesional
Documente Cultură
Contenu
1.
Introduction :.................................................................................................................................. 2
2. L'explorateur de code:...................................................................................................................... 2
1. L'diteur de code:............................................................................................................................. 2
1.1
L'assistant de code:................................................................................................................ 2
1.2
L'assistant de paramtres:......................................................................................................3
3. Module de statistiques:.................................................................................................................... 5
4. Les routines de fonctions intgres:................................................................................................6
5. Debugger intgr:............................................................................................................................. 6
Activit n 1: Dcouverte de lenvironnement de programmation textuelle............................................7
Activit n 2: Compteur sur la Maquette dexprimentation ZITOPIC..................................................11
Activit n 3: Gestion dun afficheur LCD............................................................................................14
Activit n 4: Serrure code................................................................................................................ 19
Activit n 5 (bis) : Porte automatique dun entrept rfrigr.............................................................23
Activit n 6: Comptage de vhicules sur une route............................................................................25
Activit n 7: Ventilateur sur un concentrateur USB............................................................................27
Activit n 8 (bis): Calculateur de gestion dun moteur de vhicule.....................................................29
Activit n 8: Coffre-fort lectronique roue codeuse 12 digits...........................................................33
-1-
1. Introduction :
MikroPASCAL PRO est un compilateur "PASCAL" pour microcontrleurs PIC, il bnficie d'une
prise en main trs intuitive et d'une ergonomie sans faille. Ses trs nombreux outils intgrs (mode
simulateur, terminal de communication Ethernet, terminal de communication USB, gestionnaire pour
afficheurs 7 segments, analyseur statistique, correcteur d'erreur, explorateur de code, mode Dbug
ICD...) associ sa capacit pouvoir grer la plupart des priphriques rencontrs dans l'industrie
(Bus I2C, 1Wire, SPI, RS485, Bus CAN, USB, gestion de cartes compact Flash et
SD/MMC, gnration de signaux PWM, afficheurs LCD alphanumriques et graphiques et 7
Leds segments, etc...) en font un outil de dveloppement incontournable.
Cette nouvelle version appele "MikroPascal PRO" dispose de trs nombreuses amliorations:
nouvelles variables utilisables, nouvelle interface IDE, amlioration des performances du linker et de
l'optimisateur, cycle de compilation plus rapide, code machine gnr plus compact (jusqu' 40 %
suivant les cas), nouveaux PIC supports, environnement de dveloppement encore
plus ergonomique, nouveaux exemples d'applications, etc...
2. L'explorateur de code:
Cette fonction intgre au compilateur vous permettra de surveiller et de retrouver rapidement vos
variables, fonctions et procdures l'intrieur de votre programme. Pour ce faire, il vous suffira
simplement de cliquer sur un lment pour que l'explorateur vous positionne directement dessus
(idal lorsque vous travaillez sur de "gros" projets).
1. L'diteur de code:
Extrmement convivial, l'diteur du "MikroPASCAL PRO" pour PIC dispose d'une multitude de
fonctions qui permettront aussi bien aux utilisateurs novices comme aux professionnels de travailler
trs rapidement.
1.1 L'assistant de code:
Ce dernier vous permettra aprs avoir tap
les premires lettres d'une instruction d'ouvrir une
fentre en tapant CTRL + ESPACE afin d'obtenir la
liste de toutes les instructions commenant par les
mmes lettres. Il vous suffira ensuite de cliquer sur
celle qui vous convient pour l'importer directement
dans l'diteur.
1.2 L'assistant de paramtres:
Ce dernier vous permettra aprs avoir saisie le dbut d'une
-2-
-3-
-4-
3. Module de statistiques:
Aprs une compilation sans erreur, il vous est possible d'activer un module qui vous permettra
de consulter diverses statistiques selon 6 critres
-5-
Rcapitulatif des procdures : Vous donnent une rcapitulation des procdures utilises et
de leurs tailles mmoires.
Localisation des procdures locales : Montre comment les procdures et les fonctions sont
agences dans la mmoire du microcontrleur.
Dtail des procdures : Vous donne un rcapitulatif dtaill des diffrentes caractristiques
de chaque procdure.
5. Debugger intgr:
Le compilateur "MikroPASCAL PRO" est
directement capable de piloter l'lectronique du
programmateur "PICFlash/ICD" afin de pouvoir vous faire
bnficier pour certains modles de PIC d'une
fonction dbugger ICD qui vous permettra de vrifier sur
l'cran de votre PC les valeurs de vos variables, les
valeurs des registres spciaux (SFR) ou encore l'tat de la
mmoire EEPROM pendant l'excution de votre
programme afin de vous faire bnficier d'un outils de
mise au point extrmement puissant et performant
(compilateur / programmateur / debugger).
Les fonctions du dbugger sont galement
accessibles via des touches de raccourcis clavier:
F9 : Demarre le mode Debug
F6 : Pause mode Debug
F5 : Active / dsactive un point d'arrt
F4 : Excute le programme jusqu'au curseur
F7 : Mode pas pas ou arrt jusqu'au dbut d'une sous-routine
F8 : Pas pas ou arrt jusqu'au retour d'une sous-routine
[CTRL] + F8 : Excute le programme jusqu'au
premier retour d'une sous-routine
-6-
4
3
5
6
-7-
1111
10
12
13
-8-
156
14
13- Assurer les rglages des bits de configurations comme indiqu dans la figure
prcdente
14- Cliquer sur le bouton OK
15- Saisir le programme ci-contre
16- Compiler le projet et vrifiez que la compilation a russi : message Compiled
Successfuly dans longlet messages.
-9166
16
18
19
E3 E2 E1 E0 S3 S2 S1 S0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
24252627-
26
25
27
A, B, C, D
vers
RB0, RB1, RB2, RB3
program compteur10;
var
i : byte;
begin
trisb:= ;
while true do
begin
for i:=0 to 9 do
begin
portb:= ;
delay_ms(1000);
end;
end;
end.
Appliquer les combinaisons donnes au tableau ci-dessous quant au cblage des
connecteurs DR1 DR4, excuter le programme prcdent et noter ltat de chaque
afficheur 7 segments
DR4 DR3
DR2 DR1 Afficheur 4 Afficheur 3 Afficheur 2 Afficheur 1
VCC VCC VCC
GN
OFF
OFF
OFF
ON
D
VCC VCC GND VCC
..
..
..
..
VCC GND VCC VCC
..
..
..
..
GND VCC VCC VCC
..
..
..
..
En dduire le rle des connecteurs DR1 DR4
Afin de raliser un compteur modulo 10000 on va connecter DR1 DR4 RC0 RC3 du
microcontrleur PIC16F876A selon le montage suivant :
DR1 DR4
vers
RC0 RC3
const
aucun_afficheur : byte = %1111;
afficheur1 : byte = %1110;
afficheur2 : byte = %1101;
afficheur3 : byte = %1011;
afficheur4 : byte = %0111;
begin
trisb:=$F0; trisc:=$F0; portc:=$FF; portb:=0;
while true do
begin
For i := 0 to 9999 do
begin
uni := i mod 10;
//
dix := (i div 10) mod 10; //
cent := (i div 100) mod 10; //
mil := (i div 1000);
//
for j:=0 to 10 do
begin
portc:=aucun_afficheur; //
delay_ms(1);
portb:=uni;
portc:=afficheur1;
//
delay_ms(10);
portc:=aucun_afficheur ;
delay_ms(1);
portb:=dix;
portc:=afficheur2;
delay_ms(10);
portc:=aucun_afficheur ;
delay_ms(1);
portb:=cent;
portc:=afficheur3;
delay_ms(10);
portc:=aucun_afficheur ;
delay_ms(1);
portb:=mil;
portc:=afficheur4;
delay_ms(10);
end;
end;
end;
end.
Compiler ce programme et simuler le fonctionnement ;
Transfrer le programme vers le microcontrleur et tester le fonctionnement sur la
maquette dexprimentation.
-14-
LCD_RS_Direction
LCD_EN_Direction
LCD_D4_Direction
LCD_D5_Direction
LCD_D6_Direction
LCD_D7_Direction
:
:
:
:
:
:
sbit
sbit
sbit
sbit
sbit
sbit
at
at
at
at
at
at
TRISB.0;
;
;
;
;
;
begin
LCD_init();
LCD_CMD(_LCD_CURSOR_OFF);
while true do
begin
LCD_out(1,1,'Bonjour');
-15-
end;
end.
2) Cbler le montage prcdent sur la maquette ZITOPIC, transfrer le programme et
tester le fonctionnement :
3) Dans le menu principal de mikropascal pro cliquer sur Tools puis LCD Custom
Caracter
4) Dans la fentre LCD Custom Caracter slectionner : 5*7 + cursor line
5) Tracer la lettre sur la matrice
6) Cliquer sur longlet mikroPascal PRO
7) Cliquer sur le bouton Generate Code
8) Cliquer sur le bouton Copy Code to Clipboard pour copier le sous-programme
gnr par cet outil
9) Dans le programme prcdent cliquer sur coller dans zone de dclaration
10) Remplacer linstruction LCD_out(1,1,Bonjour) ; par CustomChar(1,5) ;
-16-
6
3
program affichage;
// connections du module Lcd
var LCD_RS : sbit at PORTB.0;
var LCD_EN : sbit at PORTB.1;
var LCD_D4 : sbit at PORTB.2;
var LCD_D5 : sbit at PORTB.3;
var LCD_D6 : sbit at PORTB.4;
var LCD_D7 : sbit at PORTB.5;
var LCD_RS_Direction : sbit at TRISB.0;
var LCD_EN_Direction : sbit at TRISB.1;
var LCD_D4_Direction : sbit at TRISB.2;
var LCD_D5_Direction : sbit at TRISB.3;
var LCD_D6_Direction : sbit at TRISB.4;
var LCD_D7_Direction : sbit at TRISB.5;
const character: array[0..7] of byte = (0,0,5,0,2,30,0,0);
procedure CustomChar(pos_row, pos_char: Byte);
var i: Byte;
begin
Lcd_Cmd(64);
for i := 0 to 7 do Lcd_Chr_CP(character[i]);
Lcd_Cmd(_LCD_RETURN_HOME);
Lcd_Chr(pos_row, pos_char, 0);
end;
begin
LCD_init();
LCD_CMD(_LCD_CURSOR_OFF);
while true do
begin
-17-
CustomChar(1,5);
end;
end.
10
11) Compiler le programme, lexcuter puis dduire le rle de loutil LCD Custom
Caracter
12) Faites le mme travail pour la lettre mais changer la case char par la valeur 1
12
for i := 0 to 7 do Lcd_Chr_CP(character2[i]);
Lcd_Cmd(_LCD_RETURN_HOME);
Lcd_Chr(pos_row, pos_char, 1);
end;
begin
LCD_init();
LCD_CMD(_LCD_CURSOR_OFF);
while true do
begin
CustomChar(1,5);
CustomChar2(1,4);
end;
end.
14) Compiler le programme, lexcuter puis faire le mme travail pour avoir laffichage
suivant :
-19-
-20-
Pour chaque touche appuye, retrouver le code correspondant en dcimal. Complter la table
suivante :
Touche
Code en dcimal
program serrure2;
var keypadPort : byte at PORTB;
var kp,a : byte;
code_serrure : word;
begin
trisa:=0;
porta:=0;
CMCON:=$07;
code_serrure :=0;
a:=0;
kp:=0;
Keypad_Init();
sound_init(porta,3);
while true do
begin
kp := Keypad_Key_Click();
if kp <> 0 then
begin
sound_play(1000,100);
case kp of
1: a := 1;
2: a := 2;
3: a := ;
5: a := ;
6: a := ;
7: a := ;
9: a := ;
10: a := ;
11: a := ;
13: a := '*';
14: a := 0 ;
15: a := '#';
end;
if a <> '*' then code_serrure := code_serrure *10 + a ;
if a = '#' then code_serrure :=0;
if a = '*' then
begin
if code_serrure = 1978 then
begin
porta.0:=1;
porta.2:=1;
delay_ms(2000);
-21-
end
else
begin
porta.1:=1;
delay_ms(1000);
end;
code_serrure :=0;
end;
end;
porta:=0;
end;
end.
Dduire, chaque fois, la valeur de la variable code_serrure lorsque lutilisateur appuie sur
les touches donnes dans le tableau suivant :
Touche appuye
1
4
7
5
#
2
3
*
Quel est le code qui permet douvrir la porte, justifier votre rponse en soulignant dans le
programme prcdent la ligne dinstructions qui teste ce code ?
-22-
-23-
Capteurs
Camion devant la porte
Sortie du camion de lentrept
Porte ferme
Porte ouverte
LR
LV
KM1
KM2
Practionneurs
Lampe rouge
Lampe verte
Fermeture de la porte
Ouverture de la porte
Parmi les
microcontrleurs
suivants choisir
celui qui se prte
...
...
...
...
partie
commande de la porte
-24-
end;
if ((X2=1) AND (IR2=1) AND (IR1=0)) then
begin
end;
if then
begin
X3:=0;
X0:=1;
end;
/// sorties
if ((X0=1) OR (X1=1) OR (X3=1)) then LR:=1 else :=0;
if X1=1 then KM1:=1 else KM1:=0;
if X2=1 then
if X3=1 then
end;
end.
Compiler ce programme, simuler le sur logiciel puis tester le fonctionnement sur maquette
dexprimentation.
-25-
Schma :
A chaque passage dun vhicule le capteur gnre deux impulsions, justifier le choix de lentre
RA4 du microcontrleur PIC16f628A pour relier ce capteur :
Bit 6
INTEDG
..
Bit 5
TOCS
..
Bit 4
TOSE
..
Bit 3
PSA
..
-26-
Bit 2
PS2
..
Bit 1
PS1
..
Bit 0
PS0
..
end;
end.
Compiler ce programme, simuler le sur logiciel ISIS puis tester le fonctionnement sur maquette
dexprimentation ZITOPIC.
-27-
Quelle est la technique utilise pour faire varier la vitesse du moteur M1, justifiez le choix de la
sortie RC2/CCP1 du microcontrleur PIC16F876A :
Quel est le type du signal prsent sur lentre RA0/AN0, justifiez le choix de cette entre
PCFG3
PCFG2
PCFG1
PCFG0
-28-
GND
-29-
Bit 6
PEIE
.
Bit 5
TOIE
.
Bit 4
INTE
.
Bit 3
RBIE
.
Bit 2
TOIF
.
Bit 1
INTF
.
Bit 0
RBIF
.
Pour simplifier ltude, on se limitera deux fonctions excutes par le calculateur qui sont :
Lecture de la temprature du liquide de refroidissement du radiateur.
Affichage de la temprature sur lafficheur LCD du porte-instruments.
La plupart des sondes de tempratures dans lautomobile sont de types rsistance
variable. Le paramtre physique qui varie en fonction de la temprature est la rsistance du
matriau qui constitue la sonde. Dans notre cas on utilisera le capteur de temprature LM35.
-30-
Schma de simulation :
Ecrire un programme qui permet de lire et afficher la temprature sur lafficheur LCD sans
tenir compte de limpulsion gnre par le capteur de position du vilebrequin :
program calculateur;
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
-31-
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
La rponse limpulsion gnre par le capteur de position du vilebrequin est simule par
une mise 1 de broche RB7 du PIC16F876A.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Cbler le montage sur la maquette ZITOPIC ou sur plaque essai, programmer le
microcontrleur PIC16F876A et valider le fonctionnement
-33-
On souhaite lire les 4 bits fournis par la roue codeuse chaque changement dtat, quelle
est la technique la plus adapte qui permet de lire cet vnement quel que soit ltat du
programme en cours dexcution :
Bit 6
PEIE
.
Bit 5
TOIE
.
Bit 4
INTE
.
Bit 3
RBIE
.
Bit 2
TOIF
.
Bit 1
INTF
.
Bit 0
RBIF
.
etat : byte;
RAZ : sbit at porta.0;
porte: sbit at porta.1;
ok : bit;
Procedure Interrupt;
begin
etat:=portb;
// lecture du port B
etat:=etat SHR 4; // dcalage droite des 4 bits lus
code_saisi[j] := etat;
j:=j+1;
if j > 11 then j:=0;
INTCON.RBIF:=; // Remise zro de l'indicateur RBIF
INTCON.GIE:= ; // Ractivation Globale des interruptions
end;
begin
CMCON:=$07;
j:=0;
trisa.1:=0;
porte :=0;
INTCON:= ;
while true do
begin
if RAZ = 1 then
begin
code_saisi[0]:= portb shr 4;
j:=1;
end;
ok:=1;
for i:=0 to 11 do
begin
// test de la squence saisies
if code_saisi[i] <> code_acces[i] then ok:=0;
end;
If ok = 1 then porte:=1 else porte :=0; // ouverture porte
end;
end.
Simuler le fonctionnement et cbler le montage sur plaque essai, programmer le
microcontrleur PIC16F628A et valider le fonctionnement
-35-