Vous êtes sur la page 1sur 12

Projet microcontrleur PIC 16F876A Horloge, calendrier et thermomtre numrique

Affichage sur un module LCD alphanumrique o de la date (format dd jj/mm/aaaa) o de l'heure (format hh:mm) o de la temprature (rsolution 0,5 C) Mise en oeuvre du bus I2C

Vido ralise par Marc Paradis : http://www.youtube.com/watch?v=3bMHjwgXglo

1- Prsentation 2- Schma lectrique de la carte 3- Prsentation de bus I2C 4- Prsentation du DS1307 (Real Time Clock) 5- Prsentation du DS1621 / DS1631 / DS1731 6- Principe de fonctionnement d'un afficheur LCD alphanumrique 7- Principe de fonctionnement de la carte 8- Le circuit imprim (ralis par Constant VEBOBE) 9- Liste du matriel 10- Code source du microcontrleur PIC 16F876A

1- Prsentation

Il s'agit d'une horloge / calendrier / thermomtre numrique, avec affichage sur un module LCD alphanumrique. Deux boutons poussoirs permettent le rglage de l'heure et de la date. Une pile de sauvegarde (en option) permet de conserver la date et l'heure en cas de coupure de l'alimentation principale. La date et l'heure sont ainsi restaures la reprise de fonctionnement de l'alimentation principale.

2- Schma lectrique de la carte

N.B. Si vous n'utilisez pas de pile de sauvegarde, il faut relier la broche 3 (VBAT) du DS1307 directement la masse.

3- Prsentation de bus I2C

4- Prsentation du DS1307 (Real Time Clock)

Le circuit Dallas DS1307 est une horloge temps rel (Real Time Clock), qui fournit secondes, minutes, heures, jours, dates, mois et annes. Le Dallas DS1307 est associ (entre les broches 1 et 2) un quartz d'horlogerie de frquence nominale 32,768 kHz. Les annes bissextiles sont prises en compte (jusqu'en 2100). Le DS1307 s'interface avec un bus I2C, en configuration esclave :

Le DS1307 travaille dans le mode standard (frquence d'horloge f SCL de 100 kHz) L'adresse I2C (7 bits) du DS1307 est : 1 1 0 1 0 0 0 Plus plus d'informations sur l'utilisation du DS1307 avec le bus I2C

En option, on peut brancher une pile de sauvegarde entre la broche 3 et la masse. Avec une pile au lithium 3 V / 48 mAh, la date et l'heure sont conserves pendant plus de 10 ans en l'absence de l'alimentation principale (interrupteur SW3 en position OFF).

5- Prsentation du DS1621 / DS1631 / DS1731 (thermomtre numrique)

Le capteur de temprature DS1631 (Dallas Semiconductor) fait parti de la famille des capteurs "intelligents" : sur la mme puce, il y a un capteur de temprature classique associ une lectronique d'interface (convertisseur analogique numrique, contrleur avec son jeu d'instructions, EEPROM, port srie synchrone : bus I2C). Le DS1631 est un thermomtre numrique : plage de mesure - 55,0 C + 125,0 C avec une rsolution que l'on peut choisir de 9 bits (0,5 C) 12 bits (0,0625 C). La temprature est fournie sous la forme d'un nombre binaire en complment deux. La dure de la conversion dpend de la rsolution : 93,75 ms avec 9 bits, 750 ms avec 12 bits. Le DS1631 s'interface avec un bus I2C (broches SDA et SCL), en configuration esclave :

Le DS1631 travaille en Fast mode (frquence d'horloge f SCL de 400 kHz) L'adresse I2C (7 bits) du DS1631 est : 1 0 0 1 A2 A1 A0 o A2, A1 et A0 correspondent aux niveaux logiques appliqus ces 3 entres o On peut donc connecter jusqu' 8 botiers DS1631 sur un bus I2C

La diffrence entre le DS1631 et le DS1731 se fait uniquement sur la prcision de la mesure ( ne pas confondre avec la rsolution !) :

0,5 C dans la plage 0 C +70 C pour le DS1631 1 C dans la plage -10 C +85 C pour le DS1731

6- Principe de fonctionnement d'un afficheur LCD alphanumrique

7- Principe de fonctionnement de la carte

7-1- Initialisation A la mise sous tension, le microcontrleur 16F876A configure :


son module MSSP en mode I2C matre, et la frquence d'horloge (f SCL) 100 kHz (mode standard du DS1307) l'horloge temps rel DS1307 : o en mode 24 heures (00 23 heures) o avec la frquence du signal de sortie SQW/OUT (broche 7) 1,000 000 Hz le thermomtre numrique DS1621 / DS1631 / DS1731 : o commande Access Config : rsolution 9 bits (0,5 C) conversion en continu o puis commande Start Convert T : lancement de la conversion en continu (avec priode d'chantillonnage de la temprature de 93,75 ms) le module LCD alphanumrique (instruction Set Function pour une utilisation en mode d'interface 4 bits)

Le module Timer1 (16 bits) du microcontrleur 16F876A est activ, ce qui donne lieu une interruption toutes les 105 ms environ (104,858 ms exactement).

La broche 7 (sortie SQW/OUT) du DS1307 est relie l'entre RB0/INT du PIC 16F876A. L'interruption RB0/INT est active, ce qui provoque une interruption toutes les 1000,000 ms.

7-2- Rglage de l'heure et de la date A la premire utilisation, l'affichage la mise sous tension est : Di 01/01/2000 00:00 +xxx,x C

Deux boutons poussoirs ont t prvus pour le rglage de l'heure et de la date. A chaque interruption du Timer1 (toutes les 105 ms environ), la routine de l'interruption du Timer1 teste l'tat du bouton poussoir SELECTION et du bouton poussoir REGLAGE. La routine de l'interruption du Timer1 gre galement toutes les tapes du rglage de l'heure et de la date : On entre dans le mode rglage en appuyant sur le bouton poussoir SELECTION. Les deux lettres Di se mettent alors clignoter. Il faut ensuite appuyer sur le bouton poussoir REGLAGE pour faire dfiler le jour (1re tape) : Lu -> Ma -> Me -> Je -> Ve -> Sa -> Di ... On valide en appuyant sur le bouton poussoir SELECTION, et on passe automatiquement au rglage du chiffre des dizaines du numro de jour (2me tape) : 0 -> 1 -> 2 -> 3 -> 0 ... On finit par le rglage du chiffre des units des minutes (11 me tape). On valide avec le bouton poussoir SELECTION, et on retourne alors au mode de fonctionnement normal.

7-3- Fonctionnement normal Toutes les 1000,000 ms la routine de l'interruption RB0/INT est appele : Le PIC 16F876A lit l'heure et la date courante dans le DS1307, la communication se fait par le bus I2C :

Dans cet exemple de chronogramme, il est 9 heures 56 minutes 6 secondes, le mardi 20 mai 2008.

Le PIC 16F876A lit la temprature dans le DS1621 / DS1631 / DS1731 (commande Read Temperature), la communication se fait par le bus I2C :

Dans cet exemple de chronogramme, il fait + 28,0 C : 00011100 0(0000000) = +56 <=> +28,0 C

Le PIC 16F876A met ensuite l'affichage du module LCD jour.

8- Le circuit imprim (ralis par Constant VEBOBE)

Tlcharger le typon Tlcharger le schma d'implantation

9- Liste du matriel
1 programmateur pour flasher le programme du microcontrleur PIC 16F876A

o o o o o o o

o o o o o o o o o o o

1 afficheur LCD alphanumrique 2 x 16 interface parallle 1 rsistance de 39 ohms (rtroclairage de l'afficheur LCD) 1 rsistance 8,2 k 2 rsistance 4,7 k 1 rsistance 10 k 1 potentiomtre 2,2 k (rglage du contraste de l'afficheur) 1 horloge temps rel RTC DS1307 (botier PDIP) Remarque : Vous pouvez demander des chantillons gratuits chez Dallas :-) 1 thermomtre numrique DS1621 ou DS1631 ou DS1731 (botier PDIP) Remarque : Vous pouvez demander des chantillons gratuits chez Dallas :-) 1 microcontrleur PIC 16F876A (botier PDIP) Remarque : Vous pouvez demander des chantillons gratuits chez Microchip :-) 1 quartz 20 MHz 1 quartz 32,768 kHz 1 condensateur lectrochimique de 100 F (filtrage) 1 condensateur lectrochimique de 10 F (filtrage) 6 condensateurs de 100 nF (filtrage) 2 condensateurs de 22 pF 1 source d'alimentation continue +12 V (ou une pile de 9 V) 1 rgulateur 7805 (botier TO220) 2 boutons poussoirs (ouverts au repos) 1 interrupteur marche / arrt 1 pile de sauvegarde (3 volts)

10- Code source du PIC 16F876A

Le code source a t crit en langage assembleur avec l'environnement de dveloppement gratuit MPLAB IDE de Microchip