Page 22 - SERIE N11 micro 2
P. 22
4°) Compléter le programme ci-dessous:
LM016L
S D E
S V V D E V S R R E W 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D
1 2 3 4 5 6 7 8 9 0 1 1 1 2 1 3 1 4 1
program exercice_N_24_voltmetre;
C.A.N
9 OSC1/CLKIN RB0/INT 21 // connexion de L'LCD
10 OSC2/CLKOUT RB1 22
23
2 RB2 24 var var LCD_RS: sbit at RC0_bit;
3 RA0/AN0 RB3/PGM 25 var LCD EN: …………………………..
4 RA1/AN1 RB4 26 var LCD D4: .…………………………..
RB5
RA2/AN2/VREF-/CVREF
5 RA3/AN3/VREF+ RB6/PGC 27
6 RA4/T0CKI/C1OUT RB7/PGD 28 var LCD D5: …………………………..
7
RA5/AN4/SS/C2OUT 11 var LCD D6: .…………………………..
1 MCLR/Vpp/THV RC0/T1OSO/T1CKI 12 var LCD D7: …………………………..
RC1/T1OSI/CCP2
RC2/CCP1 13 var LCD RS Direction : sbit at TRISC.0 bit;
RC3/SCK/SCL 14 var LCD EN Direction : ………………………
15
+88.8 RC4/SDI/SDA 16
RC5/SDO
Volts RC6/TX/CK 17 var LCD D4 Direction : ……………………...
RC7/RX/DT 18 var LCD D5 Direction : …………………………
PIC16F876A var LCD D6 Direction : sbit at TRISC.4 bit;
var LCD D7 Direction : sbit at TRISC.5 bit;
N : word ; // 2 octets car le résultat de conversion est sur 10 bits
calcul:real ; // 4 pour ne pas avoir un dépassement de taille lors de la multiplication
tension:word ; //2 octets car la tension est affichée en mV elle est compris entre 0 et 5000 mV
valeur_affichage :string[4]; // chaine de 4 caractères pour afficher la tension
begin
TRISA:=$........... ;
ADCON1 :=% ………………… ;
LCD_init();
LCD_cmdLLCD_cursor_off);
LCD_out (1, 1,'V=');
while true do
begin
N:= ADC_read( ); // ……………………………
calcul:= (N*(5000/1023));
tension := word( calcul); // ……………………………
wordtostr(tension,valeur_affichage); // ……………………………
LCD_out (1,3,valeur_affichage);
…………………………… //Afficher au premier ligne et 9eme colonne 'mV'
delay _ms( 1000);
end ;
end.
Exercice N°25 :
Écrire un programme qui permet de commander un moteur à courant continu avec un rapport cyclique
a = 0,5. Utiliser la technique MLI (PWM) Sortie sur RC2 fréquence de MLI (1000Hz)
22