Beruflich Dokumente
Kultur Dokumente
ENSEIRB
SOMMAIRE
INTRODUCTION........................................................................................................3 LE MATRIEL ...........................................................................................................4
I II SYNOPTIQUE DE LA CARTE ..................................................................................................... 4 SCHMA ET RALISATION DE LA CARTE ................................................................................ 4
LE LOGICIEL .............................................................................................................5
I LES BIBLIOTHQUES C........................................................................................................... 5 I.A) La LED ......................................................................................................................... 5 I.B) Le bouton-poussoir ....................................................................................................... 5 I.C) L'afficheur LCD 2*16 .................................................................................................. 5
I.C.1) I.C.2) I.C.3) I.C.4) I.C.5) I.C.6) I.C.7) I.C.8) I.C.9) I.C.10) I.C.11) L'criture d'un octet dans le LCD...................................................................................................5 L'criture d'une instruction LCD ....................................................................................................5 L'criture d'un caractre vers le LCD.............................................................................................5 L'criture d'une chane de caractres vers le LCD.........................................................................6 Le retour chariot..............................................................................................................................6 L'effacement de l'cran ...................................................................................................................6 Le positionnement du curseur en ligne et colonne ........................................................................6 Les temporisations ..........................................................................................................................6 L'attente pour l'instruction suivante ...............................................................................................6 Linitialisation gnrale du LCD en mode 8 bits...........................................................................7 Le programme test ..........................................................................................................................7 Linitialisation gnrale pour le capteur analogique .....................................................................7 La lecture de la temprature ...........................................................................................................8 Le programme test ..........................................................................................................................8
I.D)
I.D.1) I.D.2) I.D.3)
I.E)
I.E.1) I.E.2) I.E.3) I.E.4) I.E.5) I.E.6)
II
I.F) La bibliothque additionnelle ..................................................................................... 10 LE PROGRAMME PRINCIPAL................................................................................................. 10 II.A) La premire version .................................................................................................... 10
II.A.1) II.A.2) II.A.3) II.A.4) II.A.5) II.A.6) II.A.7) II.A.8) Point d'entre "main()"..................................................................................................................10 Initialisation des interruptions "irq_init()"...................................................................................10 Initialisation du microcontrleur "pic_init()"...............................................................................10 Conversion ASCII "temp_to_string( temp )"...............................................................................10 Enregistrements des tempratures maxi et mini "min_max()" ....................................................10 Remise zro des tempratures maxi et mini "raz_min_max()".................................................11 Traitement et affichage des tempratures "traitement()".............................................................11 Le programme d'interruption "interrupt isr()".............................................................................12 Gnralits.....................................................................................................................................13 Les diffrentes tches....................................................................................................................13 Point d'entre "main()"..................................................................................................................14
II.B)
II.B.1) II.B.2) II.B.3)
Sargos - Zancan
2/16
ENSEIRB
Sargos - Zancan
3/16
ENSEIRB
Vout
RB0
BP sl
/RST
DS1620
CLK DQ
RD0 RD7
DB0 DB7
RB5
LED
Sargos - Zancan
4/16
ENSEIRB
I.B)
Le bouton-poussoir
On souhaite faire changer l'tat de la LED chaque appui sur le boutonpoussoir. Ce changement sera effectu dans le programme d'interruption appel lors de l'appui sur le bouton-poussoir. Il a donc fallu initialiser en interruption le bouton-poussoir de slection qui se trouve sur la broche RB0 du PIC.
I.C)
L'afficheur LCD doit permettre de lire les tempratures, on souhaite donc afficher une chane de caractres en code ASCII partir d'une position dfinie sur l'cran. On dcompose cette fonction principale en sous-programmes pour obtenir une programmation plus claire et rutilisable.
5/16
ENSEIRB
crire dans la RAM. L'criture de la donne d'un caractre en code ASCII sera faite aussi uniquement si le LCD est libre.
6/16
ENSEIRB
attend, attention il faut refaire un LCD_STROBE chaque fois que l'on souhaite lire l'indicateur.
I.D)
Le capteur LM35
Le capteur LM35 est un capteur de temprature o la tension de sortie est linairement proportionnelle la temprature en Celsius centigrade. Ce capteur ne ncessite pas de calibrage externe pour fournir une prcision de _C sur une gamme de temprature de 55C +150C. Son coefficient est de 10mV/C et dans notre cas le capteur est aliment en 0-5V, on ne peut mesurer par consquent que des tempratures positives.
7/16
ENSEIRB
I.E)
Le capteur DS 1620
Le capteur DS1620 est un capteur numrique de temprature avec une gamme de mesure de 55C +125C et de prcision 0.5C. Ce capteur fonctionne avec une interface de trois fils!: un signal dhorloge CLK, un signal de reset RST et un signal de donne DQ. La transmission des donnes et des instructions se fait par liaison synchrone srie avec le bit de poids faible en premier. Ce capteur peut nous permettre davoir une mesure de temprature environ toutes les secondes.
8/16
ENSEIRB
jusqu un front montant de lhorloge. Ainsi entre CLK=0 et CLK=1, suivant ltat de la broche DQ on modifie le bit correspondant de la donne finale.
Sargos - Zancan
9/16
ENSEIRB
I.F)
La bibliothque additionnelle
Cette bibliothque est prsente en raison du compilateur qui naccepte pas les rentrances dans les fonctions. Les mmes fonctions ne doivent donc pas se retrouver la fois dans le programme dinterruption et dans le programme principal. On a donc recopi les fonctions qui posaient un problme sous un autre nom.
II Le programme principal
II.A) La premire version
II.A.1) Point d'entre "main()"
Aprs avoir appel la fonction d'initialisation "pic_init() ", le microcontrleur entre dans une boucle infinie. Dans cette boucle, le PIC effectue seulement l'appel de la fonction "traitement()" qui est charge de la gestion de l'affichage.
Sargos - Zancan
ENSEIRB
prcdemment, cette dernire est mise jour. Cet enregistrement seffectue pour les deux tempratures (intrieure et extrieure).
De faon viter un clignotement de l'cran, les tempratures courantes ne sont affiches que si elles ont chang. Toutefois l'cran des tempratures courantes doit tre affich si un autre cran t affich auparavant. La variable boolenne "flag_select_different" a pour rle de dtecter si un autre cran vient d'tre affich. Voici l'algorithme de la fonction "traitement()"
Selon ( select ) si ( 0 ) faire Si ( (temprature ! temprature_prcdente) ou flag_select_different ) alors flag_select_different = 0 min_max() Modification des max et min temprature_prcdente = temprature afficher l'cran des tempratures courantes Fin si si ( 1 ) faire afficher l'cran des tempratures maximales si ( 2 ) faire afficher l'cran des tempratures minimales si ( 3 ) faire raz_min_max() afficher l'cran de RAZ des tempratures Fin selon
Sargos - Zancan
11/16
ENSEIRB
Sargos - Zancan
12/16
ENSEIRB
"task_display"
C'est une tche de frquence moyenne (toutes les 250ms) et de faible priorit. Elle permet le traitement et l'affichage des donnes par l'appel de la fonction "traitement()" (cette dernire est dtaille en II.A.7). Comme cette tche peut durer plus de 1ms, dans l'interruption, seul un "flag" et mis 1, l'excution de la tche se fait dans la boucle infinie du "main()".
Sargos - Zancan
13/16
ENSEIRB
"task_read"
C'est une tche de faible frquence (toutes les 1s) et de faible priorit. C'est dans cette tche qu'est effectue la lecture des valeurs des capteurs de temprature et les re-lancements de conversion. Elle ralise aussi le retour l'affichage "tempratures courantes" si l'cran "tempratures maxi" ou "tempratures mini" est affich depuis 3 4 secondes. Comme pour "task_display", la tche durant plus de 1ms, elle est excute dans le "main()" grce un "flag" mis 1 dans l'interruption.
"task_raz"
Cette tche n'est autorise que si l'utilisateur vient d'appuyer sur le bouton-poussoir (dans "task_sw", le compteur "task_raz_counter " y est aussi mis 0 en mme temps que "task_raz" est autorise), elle s'effectuera alors au bout de 2 secondes. Sa seule fonction est de mettre la variable "select" 3, permettant ainsi d'autoriser l'effacement des tempratures maxi et mini.
Sargos - Zancan
14/16
ENSEIRB
Sargos - Zancan
15/16
ENSEIRB
Sargos - Zancan
16/16
# Board Station BOM file # date : Friday April 16, 2004; 11:23:47
REFERENCE C1 C2 C3 Cds1 Clcd1 Cpic1 D1 Jds_CLK1 Jds_dq1 Jds_rst1 Jgnd1 Jgnd2 Jgnd3 Jlcd_E1 Jlcd_RS1 Jlcd_RW1 Jlm1 Jvcc1 K1 K2 P1 R1 R2 R3 R4 R5 U1 U2 U3 U4 U5
ITEM_NUMBER 12 12 12 12 12 13 9 4 4 4 4 4 5 4 4 4 4 5 3 3 11 10 10 10 10 10 2 1 7 6 8
COMPANY PART NO. pn-m-cap_01_2u pn-m-cap_01_2u pn-m-cap_01_2u pn-m-cap_01_2u pn-m-cap_01_2u pn-m-chim_tantale_2u pn-k-led_3.5mm pn-g-cosse_poignard pn-g-cosse_poignard pn-g-cosse_poignard pn-g-cosse_poignard pn-g-cosse_poignard pn-g-douille_4mm_ci pn-g-cosse_poignard pn-g-cosse_poignard pn-g-cosse_poignard pn-g-cosse_poignard pn-g-douille_4mm_ci pn-f-rond_d6_itt pn-f-rond_d6_itt pn-l-trim_vert pn-l-res_01_4u_1/4W pn-l-res_01_4u_1/4W pn-l-res_01_4u_1/4W pn-l-res_01_4u_1/4W pn-l-res_01_4u_1/4W pn-c-lm35 pn-b-ds1620 pn-j-pic16f877 pn-i-quartz_2u pn-k-lcd2x16
GEOMETRY CK05 CK05 CK05 CK05 CK05 c_chim_1 LED_3X5.5MM cnk1x200 cnk1x200 cnk1x200 cnk1x200 cnk1x200 plk1x400 cnk1x200 cnk1x200 cnk1x200 cnk1x200 plk1x400 sw_bp12mm sw_bp12mm trim_v RC05 RC05 RC05 RC05 RC05 to920 DIP8_P DIP40_P hc18 lcd84x43mm
DESCRIPTION CAPACITOR, 0.1u CAPACITOR, 22p CAPACITOR, 22p CAPACITOR, 0.1u CAPACITOR, 0.1u POL_CAPACITOR, 1u LED, RBG1000 conn1 conn1 conn1 conn1 conn1 plot conn1 conn1 conn1 conn1 plot poussoir poussoir pot, POT RESISTOR, 1K RESISTOR, 100K RESISTOR, 10K RESISTOR, 10K RESISTOR, 470 LM35 DS1620 16F877 quartz, 4MHz LCD2x16