Vous êtes sur la page 1sur 3

ACTIVITE 9: Capteur ultrason(voir

manuel de cours pages 131135)

program ultrason;
var
Tmesure : ...................;
Distance : .............;
temps_afichage : string[....];
distance_afichage : string[.....];
signal : sbit at portb.1;
echo

: sbit at portb.0;
// connections de l'LCD

LCD_RS : sbit at portc.0;


LCD_EN : sbit at portc.1;
LCD_D4 : sbit at portc.2;
LCD_D5 : sbit at portc.3;
LCD_D6 : sbit at portc.4;
LCD_D7 : sbit at portc.5;
LCD_RS_Direction : sbit at TRISC.0;
LCD_EN_Direction : sbit at TRISC.1;
LCD_D4_Direction : sbit at TRISC.2;
LCD_D5_Direction : sbit at TRISC.3;
LCD_D6_Direction : sbit at TRISC.4;
LCD_D7_Direction : sbit at TRISC.5;
function calcul_distance_mm(var temps : byte):integer;
var temps_s : real;
Distance_m : .;
Begin
temps_s := temps*pow(10,.....);

// transformation du temps de s en s

Page 1

Distance_m := (temps_s*.......................)/2;
la Distance en metre
calcul_distance_mm := Distance_m * pow(10,....);
en mm

// calcul de
// transformation

end;
begin
lcd_init();

// initialisation de l'LCD

lcd_cmd(_LCD_CURSOR_OFF);
lcd_out(1,1,'Temps ');

// dsactivation du curseur de l'LCD


// prparation de ............................

lcd_out(2,1,'Dist. ');
trisB:=$FD; // RB1 : ..................., RB0 : ....................
portb.1:=0; // inisialisation de RB1 ........
OPTION_REG := $.....;

//Timer0 Prescaler = 1:4 donc ....MHz ou ......s

while true do
begin
Tmesure:=.......; // initialisation du temps mesur 0
signal:=1; // envoie du signal
TMR0 := 0; // ...........................du Tmer 0

// attente de l'echo
while (TMR0 <= 250) do
begin
if (echo = 1) then
begin
Tmesure:=TMR0; // reception de l'cho alors lecture du TIMER0
break; // ...................de la boucle
end;
end;
signal:=.......; // remise zro du signal

Page 2

.........to....(TMesure,temps_afichage); // conversion du temps mesur en


texte pour l'affichage
lcd_out(1,9,temps_afichage);
lcd_out(1,16,'us');

// affichage du temps mesur en s

// affichage de l'unit s

Distance := calcul_distance_mm(TMesure); // fonction de calcul de la


distance
.....to.....(Distance,distance_afichage);
calcule en texte

// conversion de la distance

lcd_out(2,9,...........................);
calcul en mm

// affichage de la distance

lcd_out(2,16,'.........');

// affichage de l'unit mm

end;
end.

Schma de lapplication(fichier ISIS)

LCD1
LM032L

RETARDER DE 100S

C2

C1

2
3
4
5
6
7
1

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
MCLR/Vpp/THV
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT

21
22
23
24
25
26
27
28

RV1

10k

11
12
13
14
15
16
17
18

PIC16F876A

Page 3

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

1
2
3

U1
9
10

50%

16MHz

4
5
6

VSS
VDD
VEE

DELAY_1

X1

RS
RW
E

15p

15p

Vous aimerez peut-être aussi