0% ont trouvé ce document utile (0 vote)
32 vues14 pages

Gestion des afficheurs 7 segments avec PIC

Transféré par

Salah Dahouathi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues14 pages

Gestion des afficheurs 7 segments avec PIC

Transféré par

Salah Dahouathi
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

MICROCONTROLEUR ET PROGRAMATION

COMPTE RENDU DU TP N01 Gestion des afficheurs


Microcontr#$eur % &ic 1'f()A Pro!ra""ation % asse"*$eur sur MPLA+

se!"ents

P$an
I, Afficha!e he-a [Link] /aria*$e ( *its sur 1 afficheur II, Afficha!e he-a [Link] /aria*$e ( *its sur 0 afficheur III,Afficha!e he-a [Link] /aria*$e ( *its sur ) afficheur I1, un co"&teur *inaire se!"ent se!"ent se!"ent

Grou&e % E,I,0,0,0
LOU22I3 MOU4AMED AMINE 5A6ID 4AIT4EM C4A78I 6GUIDER

I, Afficha!e he-a [Link] /aria*$e ( *its sur 1 afficheur


Description

se!"ent

Le code suivant permet dincrmenter et dafficher une variable hexadcimale de 8 bits sur un afficheur 7 segment. Un bouton poussoir lie au pin R+0 est programm comme tant une interruption, lappui sur ce bouton permet dincrmenter cette variable.

!"c#$rer une v$ri$%#e compteur Compteur = 0 Conversion Hex 7seg

Afficheur

NON RB0=0?

OUI

Compteur

NON RB0=0?

OUI

Code assembleur

list p=16F84A ; list directive to define processor #include <[Link] ; processor specific variable definitions !!C"#F$% !C&!"FF ' !(D)!"FF ' !&(*)+!"# ' !*C!",C var +-. /0/C c1 +-. /0/D c1 +-. /0/+ c2 +-. /0/F or3 //4 3oto 5A$# of pro3ram 4e6!1!7se3 andl8 /6/F ;5,9 D+ ( =/ add8f &C:;f ;&C:=&C:<( retl8 9=/111111/= retl8 9=////11//= retl8 9=1/11/11/= retl8 9=1//1111/= retl8 9=11//11//= retl8 9=11/11/1/= retl8 9=11111/1/= retl8 9=////111/= retl8 9=1111111/= retl8 9=11/1111/= retl8 9=111/111/= retl8 9=11111///= retl8 9=/111//1/= retl8 9=1/1111//= retl8 9=1111//1/= retl8 9=111///1/= tempo movl8 1 AFF1 "# AFF/ "FF "FF "# debut ; 3o to be3innin3 5A$#

3oto r2 decfs> c1 3oto r1 decfs> c1 3oto r1 return bsf ,)A).,;*&/ bcf ,)A).,;*&1 movl8 /6/1 mov8f )*$,9 clrf )*$,A bcf ,)A).,;*&/ clrf var

;conversion et affic4a3e du :,9 movf8 var call 4e6!1!7se3 bsf &"*)A;/ ; *A/=1 AFF/ bcf &"*)A;1; *A1= / AFF1 mov8f &"*)9 call tempo ;conversion et aff de 5,9 s8apf var ; 5,9<? :,9 movf8 var s8apf var call 4e6!1!7se3 bcf &"*)A;/ bsf &"*)A;1 mov8f &"*)9 call tempo ; *A/=/ ; *A1=1

5onta3e sur $,$,

I, Afficha!e he-a [Link] /aria*$e ( *its sur 0 afficheur


Description

se!"ent

&e progr$mme suiv$nt permet '(incr"menter et '($fficher un v$ri$%#e hex$'"cim$# 'e ) %its sur 'eux $fficheurs 7 segments *$ffich$ge mu#tip#ex"+, #es 'eux $fficheurs sont $ c$tho'e commune te#s -ue #es 'eux c$tho'es sont #i"s #(un $u pin *A/ et #($utre $u pin *[Link] %outon poussoir #i"e $u pin *9/ est progr$mm" comme "t$nt une interruption, #($ppui sur ce %outon permet '(incr"menter cette v$ri$%#e. On suit #(org$nigr$mme suiv$nt /

Initi$#is$tion 0OR1 *234+ Init*56+ Convertir #e &4B*56+ Hex7seg Activer Afficheur 0 Afficheur sur 0OR1 B

1emporis$tion *78ms3s+

Convertir 94B*56+ Hex7seg

Activer $fficheur 6

1emporis$teur

Code assembleur
= #ist 'irective to 'ecfsK c7 goto r7 'ecfsK c6 goto r6

#ist p=6:;)<A 'efine processor

>inc#u'e ?p6:;)<[Link]@ = processor specific v$ri$%#e 'efinitions

AACON;IB AC0AON C AD!1AO;; C A0DR12AON C ARCAO4C

return m$in %sf 41A1U4,R00 = %$scu#er vers %$nL6

v$r 2EU 0F0C = 0x0C #G$''resse 'u v$ri$%#e compteur c6 2EU 0F0! c7 2EU 0F02 cH 2EU 0F0; ORB 0 goto m$in conversion $n'#I 0x0f =*94B 'e D +=0 $''If 0C&,f = 0C&=0C& D ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I ret#I tempo mov#I 6 movIf c6 BG06666660G BG00006600G BG60660660G BG60066660G BG66006600G BG66066060G BG66666060G BG00006660G BG66666660G BG66066660G BG66606660G BG66666000G BG06660060G BG60666600G BG66660060G BG66600060G =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e =co'e 0 6 7 H < 8 : 7 ) J A B C ! 2 ;

c#rf 1RI4B = configur$tion 'u 0OR1B en sortie *Output+ %sf 1RI4B,0 = RB0 *input+ c#rf 1RI4A = 0OR1A *output+ %cf 41A1U4,R00 = %$scu#er vers %$nL0 c#rf v$r = v$r=0 retour =conversion et $ffich$ge 'u &4B movfI v$r c$## conversion %sf 0OR1A,0 =RA0=6 A;;0 ON %cf 0OR1A,6 =RA6=0 A;;6 O;; movIf 0OR1B c$## tempo =conversion et $ffich$ge 'u 94B sI$pf v$r = 94B ?M@&4B movfI v$r = I=v$r sI$pf v$r = 94B ?M@&4B c$## conversion %cf 0OR1A,0 =RA0=0 A;;0 O;; %sf 0OR1A,6 =RA6=6 A;;6 ON movIf 0OR1B

r6

mov#I )8 = :N788N788 cOc#es movIf c7

c$## tempo %tfss 0OR1B,0 goto retour incf v$r goto retour $ttente6 %tfss 0OR1B,0 goto $ttente6 $ttente7 %tfsc 0OR1B,0 goto $ttente7 incf v$r goto retour

r7

mov#I 0xff = 788N788 cOc#es movIf cH

rH

'ecfsK cH = 788 cOc#es goto rH

2N!

5onta3e sur $,$,

I, Afficha!e he-a [Link] /aria*$e ( *its sur ) afficheur

se!"ent

Description &e progr$mme suiv$nt permet '(incr"menter et '($fficher un v$ri$%#e hex$'"cim$# 'e 6: %its sur < $fficheurs 7 segments*$ffich$ge mu#tip#ex"+ ,#es < $fficheurs sont $ c$tho'e commune te#s -ue #es < c$tho'es sont #i"s $ux pins *A/ ,*A1;*A1 et *[Link] %outon poussoir #i"e $u pin *9/ est progr$mm" comme "t$nt une interruption ,#($ppui sur ce %outon permet '(incr"menter cette v$ri$%#e.

Code

5onta3e sur $,$,

II, UN COMPTEUR +INAIRE

Description
c(est un compteur %in$ire sur ) %its -ui compte 'e %(00000000( Pus-uGQ %(66666666( , Q #($i'e '(un pic 6:f)<A, 'eux %outonMpoussoir, #(un re#i" Q #$ pin RA0 *B06+ et #($utre Q #$ pin RA6 *B07+ / M B06 #$nce #e progr$mme MB07 stoppe #e compt$ge &e r"su#t$t est $ffich" sur 'eux $fficheur 7 segments

Code

LIST

p=16F84 #include <[Link]>

; Dfinition de processeur ; Dfinitions de !ri!"les

##$%&FI'

#$(#%FF ) #*DT#%& ) #(*+T,#%& ) #-S#%S$

;definitions

#D,FI&,

"p1 (%+T./0

;dfinir le (%+T./0 p!r "p1

#D,FI&,

"p1

(%+T./1

;dfinir le (%+T./1 p!r "p1

#D,FI&, ;decl!r!tion des

por" (%+T2 !ri!"les

;dfinir le (%+T2 p!r por"

c"loc3

040c

; d"ut de l! 5one ; le pre7ier

!ri!"les

ret!rd#1 61 ret!rd#1 61 endc

re8istre pour l! te7poris!tion.

; le deu4i97e re8istre pour l! te7poris!tion. ; fin de l! 5on5 !ri!"le

;confi8ur!tion des ports

or8 "sf

0400 ST.T:S/+(0

; .dresse de dp!rt !pr9s reset ; !cceder en "!n31 ; confi8urerle (%+T. en entr.

7o l; "<11111<

7o ;f T+IS. clrf "cf clrf T+IS2 ST.T:S/+(0 por" ; confi8urerle (%+T2 en sortie ; !ccder en "!n30 ; eff!cer le (%+T2 =initi!lis!tion>

de"ut "tfsc 8oto st!r c!ll incf te7po por"/f ;ret!rder le 5ero. ;incri7enter "p1 de"ut ;controler le "p1/ s!uter si c<est le ?0? =!ppui> ;"oucler si c<est "p1=1 =c<est p!s !ppui>

"tfsc "p1 8oto 8oto st!r de"ut

;controler le "p1/ s!uter si c<est le ?0? =!ppui> ;continu!it le co7pt!8e. ;si on cli@ue sur "p1 on !rrete l! co7pt!8e.

te7po clrf ret!rd#1 clrf ret!rd#1

;eti@uette de l! te7pors!tion ;initi!liser ret!rd#1 ;initi!liser ret!rd#1

te7po#1 incfs5 ret!rd#1 8oto te7po#1 ;incr7enter et tester le d"orde7ent de re!rd#1 ;"oucler s<il n<est p!s encor d"order. ;incr7enterle ret!rd#1 si le t!rd1 est d"rd. ;ref!ire si le r!t!rd#1 n<est p!s encor d"order. ;retourne de l! te7poris!tion.

incfs5 ret!rd#1 8oto return te7po#1

end

5onta3e sur $,$,

Vous aimerez peut-être aussi