Beruflich Dokumente
Kultur Dokumente
Objectifs : - mise en uvre d'un affi heur !C" - d odage d'un lavier matri 1# tou hes
SECTION STI
ELECTRONIQUE
Le panneau so aire auto!atis est insta sur e toit "#un ca!pin$-car %&oir fi$'()' I per!et "e rechar$er une batterie afin "e e ren"re autono!e en ner$ie ectrique' D*s #arr+t "u &hicu e, e panneau se re *&e et cherche a position % &ation et rotation) qui entraine un ren"e!ent !a-i!u!' Dans ce TP on s#intresse . a fonction /P( 0 Traite!ent !icro-pro$ra!! 1 qui se situe "ans un bo2tier "e co!!an"e re i au panneau so aire %&oir fi$'3)' Dans e bo2tier "e co!!an"e %&oir fi$'3) #uti isateur "ispose : "#un c a&ier qui ui per!et : "e choisir un !o"e "e fonctionne!ent 0 !anue 1 ou 0 auto!atique 1 "u panneau4 "#entrer es infor!ations 0 "ate 1 et 0 heure 14 "#un afficheur qui ui per!et : "e &isua iser e courant "e char$e "e a batterie ors "u fonctionne!ent "u panneau4 "#un bu55er qui retentit en cas "e "6sfonctionne!ent' S hma fon tionnel de degr 2 de '(1 )%oitier de ommande* +
? aboration nu!rique "#une hor o$e te!ps re
Infor!ation B3C "ate ; heure S ection afficheur B3C
FS1-2
7$ a$e "u !o"e "e fonctionne!ent par #uti isateur
Infor!ations &isue es
8cquisition Infor!ation "u r$ a$e touche "u !o"e "e fonctionne!ent BDC actionne
FS1-4
8!p ification "e courant ; Trans"uction ectrique acoustique
FS1-3
Position !oteur &ation
Infor!ation sonore
8N8LO:I=>E
Position !oteur rotation
N>9E7I=>E
FS1-5
Co!!an"e 8utorisationA!oteurs Co!!an"e SensAarr+tA &ation Co!!an"e SensAarr+tArotation
B3C
FS1-1
Courant panneau so aire @
B3C
Pour e TP, e PIC uti is est un PIC(D/EF3 "e a fa!i e Gi$h-En"' Cette fa!i e n#est pas co!patib e a&ec e co!pi ateur cc5x "onc nous uti iserons e co!pi ateur cc8e' L#uti isation "es broches "u !icrocontrH eur est a sui&ante :
786 78F 78E 78I 783 78( 78J
PORTA
OSC3
7KL 7K6
7S
7KF
C8P3
7KE
8LE7T
7KI
C8P(
7K3
IA9OT
7K(
IAP8N
7KJ
PORTB
D8T8
7CL
CLM
7C6
DL
7CF
D6
7CE
N
7CI
DF
7C3
DE
7C(
7KJOINT
7CJ
PORTC
7N
7DL
TN
7D6
EN
7DF
SD8
7DE
SCL
7DI
7OT3
7D3
7OT(
7D(
K>P
7DJ
PORTD
LI:I
LI:3
LI:(
LI:J
COLI
COL3
7E3
COL(
7E(
COLJ
7EJ 9OTAEN
PORTE
EL<3
EL<(
programme principal dbut mettre RC0 en sortie rpter activer le buzzer attendre 250 ms teindre le buzzer attendre 250 ms l'infini fin
Act!&+ Inhiber Rafficheur %Disp a6 O//) <a i"er Rafficheur %Disp a6 ON) sans curseur ni c i$note!ent 7a!ener e curseur en haut . $auche %7eturn Go!e) Effacer Rafficheur Confi$urer Rafficheur : D bits, afficha$e sur une i$ne, $ran"s caract*res
3'IDonner a succession "e co"es 8SCII per!ettant "Rcrire 0 KONSO>7 1 3'ELorsque a !!oire est &i"e, e e contient "es co"es T//, e-p iquer pourquoi Rafficheur affiche "es rectan$ es noirs . a !ise sous tension' Pour si!p ifier a pro$ra!!ation, on crira es i$nes sui&antes en en-t+te "u pro$ra!!e : Upra$!a bit 7S V PO7T8'F Upra$!a bit EN V PO7TC'F Upra$!a bit DL V PO7TK'F Upra$!a bit D6 V PO7TK'E Upra$!a bit DF V PO7TK'3 Upra$!a bit DE V PO7TK'(
3'F Dans e projet panneau "e 9PL8K, ou&rir e fichier bonjourAe e&e'c' Ce pro$ra!!e "oit afficher 0 KONSO>7 1 sur #afficheur' En &ous ai"ant "es co!!entaires "onns, co!p ter es sous-pro$ra!!es INITALCD%), 8//ICGALCD%) et e pro$ra!!e principa ' Co!pi er et en&o6er e pro$ra!!e "ans e !icrocontrH eur' Tester et faire &a i"er par e professeur'
/= test affi heur - affi hage du mot >?0-@0/1> fi hier + %onAour6eleve$ auteur + Ch$ !. ?1IS date + B o to%re 200C =/ Dpragma hip (IC1E'9:2 Dpragma onfigF1G H 0;22 Dpragma onfigF2G H 0;0" Dpragma onfigF8G H 0;0. Dpragma onfigF:G H 0;01 Dpragma onfigF#G H 0;E0 Ddefine IC"26".?/J Dpragma %it 1S K (01T,$: Dpragma %it .- K (01TC$: Dpragma %it "B K (01T?$: Dpragma %it "# K (01T?$9 Dpragma %it ": K (01T?$2 Dpragma %it "9 K (01T?$1 // (IC 1E'9:2 // mot de onfiguration du (IC mode IS
void delaL6ms) uns1# millise * // temporisation multiple de 1ms // "elaLs a multiple of 1 millise onds at 20 2IM // using the T210 timer 4 har ne;t H 0N T0C0- H 0;C9N T210! H 2N // dedu t 2=E fi;ed instru tion L les delaL do 4 ne;t OH 1:#N Phile )T210! QH ne;t*N // 1:# = #,9u H 1000 )H 1 ms* 7 Phile ) -- millise QH 0*N 7 void .-R0I60CT.T) har o tet* // envoi d'un o tet dans l'affi heur !C" en mode 9 %its 4 // .nvoi du <uartet de poids fort %B%#%:%9 "B H o tet$BN "# H o tet$#N ": H o tet$:N "9 H o tet$9N .-H1N // 1C: ).-* S 1, validation affi heur delaL6ms)2*N .-H0N // 1C: ).-* S 0 delaL6ms)2*N // .nvoi du <uartet de poids fai%le %8%2%1%0 "B H o tet$8N "# H o tet$2N ": H o tet$1N "9 H o tet$0N .-H1N // 1C: ).-* S 1, validation affi heur delaL6ms)2*N .-H0N // 1C: ).-* S 0 delaL6ms)2*N 7 void .-R0I6I-ST1) har instru tion* // envoi d'une instru tion pour l'affi heur !C" 4 1SH0N .-R0I60CT.T)instru tion*N 7 void .-R0I6C,1) har ara tere* 4 1SH1N .-R0I60CT.T) ara tere*N 7
sous-programme .-R0I60CT.T)o tet* + envoi d'un o tet sur l'affi heur !C" en mode 9 %its
sous-programme .-R0I6I-ST1)instru tion* + envoi d'une instru tion vers l'affi heur !C" sous-programme .-R0I6C,1) ara tere* + envoi d'un ara tTre vers l'affi heur !C"
45T( prog C 6 lavier$odt7 - page B/18
void I-IT6!C")* 4 .-R0I6I-ST1)0;88*N .-R0I6I-ST1) .-R0I6I-ST1) .-R0I6I-ST1) .-R0I6I-ST1) .-R0I6I-ST1) .-R0I6I-ST1) 7 void ,''ICI6!C")* 4 har iN stati *N *N *N *N *N *N
// initialisation de l'affi heur !C" --U S omplter // initialisation // mode 9 %its // paramtrage 9%its, O d'une ligne, matri e :;B // a tivation ran, pas de urseur, pas de lignotement // effa e l'affi heur
// e riture de la gau he vers la droite sans a tiver le suivi de urseur // 1eturn Iome pour le urseur
envoLer messageFiG sur l'affi heur !C" --U S omplter ) utiliser le sous-programme .-R0I6C,1)**N
*N
// 1,: )1S* en sortie, les autres en entre // 1?1 )"9*, 1?2 )":*, 1?9 )"#* et 1?: )"B* en sortie // 1C: ).-* en sortie
Pour spcifier #a"resse "e a case oW &ous &ou e5 "!arrer #afficha$e, &ous "e&e5 en&o6er #instruction sui&ante a&ant "#en&o6er &os caract*res : D( D/ D5 D4 D3 D2 D1 D.
e-e!p e : #appe "e EN<OIAINST7%J-D() p ace e curseur "e #afficheur sur a pre!i*re i$ne et e "eu-i*!e co onne car J-D( X Jb(JJJJJJ(' 3'6 9o"ifier &otre pro$ra!!e pour centrer 0 BON0OUR 1 sur a i$ne "u bas "e #afficheur' Tester et f !re " #!$er % r #e %r&fesse'r(
Pour &iter "#a&oir . chercher e co"e 8SCII "e chaque caract*re, i suffit "e !ettre e caract*re entre # #' e-e!p e : #8# X co"e 8SCII "e a ettre 8 soit J-E('
3'L 9o"ifier e sous-pro$ra!!e 8//ICGALCD%) afin "Rcrire cette fois : 0 PANNEAU SOLAIRE 1, centr sur a i$ne "u haut' Tester et f !re " #!$er % r #e %r&fesse'r(
i$nes
co onnes
PORTD
LI:I
LI:3
LI:(
LI:J
COLI
COL3
COL(
COLJ
La ecture "u c a&ier !atric se "rou e en "eu- te!ps : (- On confi$ure es co onnes "u c a&ier en sorties %7DJ . 7DI) et es i$nes "u c a&ier en entres %7DE . 7DL)' Les sorties "u port D %7DJ . 7DI) sont positionnes au ni&eau bas et on effectue une pre!i*re ecture "u port D4 on obtient a ors e co"e LI:NES'
3- On confi$ure es i$nes "u c a&ier en sorties %7DE . 7DL) et es co onnes "u c a&ier en entres %7DJ . 7DI)' Les sorties "u port D %7DE . 7DL) sont positionnes au ni&eau bas et on effectue une "eu-i*!e ecture "u port D4 on obtient a ors e co"e COLONNES'
P&'r &3te+!r #e c&$e # t&'c*e s'r 8 3!ts4 !# s'ff!t $e f's!&++er #e c&$e LI5NES et #e c&$e COLONNES % r '+ OU #&2!6'e(
I'(8 #ai"e "es sch!as qui&a ents prc"ents, "ter!ine5 e co"e "e chacune "es touches "u c a&ier' Co"e TO>CGE Touche actionne aucune J ( 3 I E F 6 L D Y 8 K C D E / On "onne #a $orith!e per!ettant e "co"a$e "u c a&ier' On uti ise trois &ariab es "e t6pe 0 octet 1, #!2+es, c&#&++es et t&'c*e' Cette "erni*re &ariab e contient . a fin "e #e-cution "u sous-pro$ra!!e e co"e "e a touche appu6e' sous-programme C0".6T0/CI. d%ut mettre le (01T" en entre mettre les olonnes en sortie mettre les olonnes au niveau %as mettre les lignes en entre lire les lignes mettre le (01T" en entre mettre les lignes en sortie mettre les lignes au niveau %as mettre les olonnes en entre lire les olonnes tou he H olonnes 0/ lignes fin du sous-programme ( i$nes
7DL 7D6
co onnes
7D( 7DJ
I'3Ou&rir e fichier clavier.eleve0c' En uti isant #a $orith!e "onn pa$e prc"ente, co!p ter e souspro$ra!!e CODEATO>CGE%)' I'ICo!p ter e sous-pro$ra!!e DECOD8:E%) en entrant es co"es he-a"ci!au- "e chaque touche' On "onne #a $orith!e "u pro$ra!!e principa ' Le but est "#afficher a touche appu6e' programme prin ipal d%ut appel du sous-programme I-IT6(IC)* appel du sous-programme I-IT6!C")* appel du sous-programme ,''ICI6!C")* rpter appel du sous-programme C0".6T0/CI.)* appel du sous-programme ".C0",J.)* 1etour hariot pour le urseur envoi sur l'affi heur !C" de la varia%le numero6tou he S l'inifini fin I'E?crire "ans e fichier c# "!er7e#e"e(c e pro$ra!!e principa en an$a$e C' Co!pi er et en&o6er e pro$ra!!e "ans e !icrocontrH eur' Tester et f !re " #!$er % r #e %r&fesse'r( I'FOn uti ise a LED DF pour si!u er e !oteur "e !onte "u panneau so aire' ?crire un pro$ra!!e -anneau0c qui acti&e a !onte qui panneau si a touche #8# a t appu6e et #arr+te ors "#un appui sur #K#' L#afficheur LCD "e&ra afficher 0 8ONTEE 1 ou 0 ARRET 1' Tester et f !re " #!$er % r #e %r&fesse'r(