68HC11

 
 
 
Application 68HC11 sur le système LC11

 

Affichage alterné sur 4 afficheurs 7 segments de l’heure et de la température

 

      

 

Cette application met en oeuvre l’horloge temps réel HTR DS12887, le bus I2C et le capteur de température DS 1621 .

Le micro ira dans un premier temps, lire à travers le bus I2C , l’information delivrée par le capteur de température puis  fera la conversion et affichera sur les 4 afficheurs 7 segments la témpérature, 37°C par exemple.

Les 2 premiers afficheurs affichent les dizaines et unités . Le 3eme et 4eme affichent en permanance °C.

L’affichage de la température dure 10 secondes puis laissera place à l’affichage de l’heure qui restera également affiché pendant une dizaine de secondes. On utilisera les 4 afficheurs 7 segments pour indiquer les heures et les minutes . Il est également possible d’afficher les minutes et les secondes ainsi que les dates puisque toutes informations sont fournies par l’horloge temps réel .

Le processus est donc le suivant : utiliser les 4 afficheurs 7 segments pour

  • Afficher heures et minutes pendant 10 secondes
  • Puis afficher la température ambiante pendant 10 secondes  puis renouveler le cycle

 

 
 
Interêt pédagogique
   

En réalisant cette application simple, l’éleve découvrira rapidement comment gérer plusieurs composants péripheriques du microcontrôleur : capteur DS1621, horloge temps réel DS 12887 , gestionnaire du bus I2C PCF 8584 …
Il saura gérer les interruptions générées par l’horloge ou d’autres peripheriques .

Ce TP peut être réalisé en 2 séances de 4 heures si les fonctionnements des circuits capteur de température et horloge temps réel ont  été préalablement étudiés .

Autres TP mettant en œuvre HTR et Capteur

On pourra imaginer d’autre TP mettant en œuvre  relai , clavier  , LCD ….

  • Reglage de l’horloge par le clavier.
  • Affichage sur le LCD de l’heure , minute et seconde sur la premiere ligne et date sur le deuxieme ligne jour , mois et année.
  • Enclencher un relais lorsque la temperature depasse un seuil . On suppose que ce relai est relié a une electrovanne ou un moteur.
    …...
 
     
 

Liaison RTC <=>   68HC11 :

 

 Plan de l’espace mémoire interne au RTC:

Dans le programme qui suit, on s’intéresse uniquement à l’heure et aux minutes mais il faut tout de même initialiser les autres valeurs. Les registres A, B, C et D permettent la configuration du RTC.

Pour initialiser le RTC, il faut suivre un protocole donné se divisant en trois étapes:

ETAPE 1:
            La 1er etape consiste à empecher le RTC à faire des mises à jour toutes les secondes pour pouvoir le configurer; on le fige grâce au bit 7 SET . Ensuite on met le bit 24/12 à 1 pour indiquer au RTC que l’on veut un format d’heure 24h. Puis on met le bit  DSE à 1 pour autoriser le changement d’heure été/hiver.
Le bit DM doit être mis à 0 pour avoir un format de donnée de type BCD, cela simplifie le traitement des données pour l’affichage.

ETAPE 2:
            On doit écrire les valeurs de l’heure et de la date actuelle pour l’initialisation du RTC. C’est à dire que lorsqu’on initialise le RTC, il faut entrer l’heure et la date en cours pour que le RTC commence à compter dés son initialisation.

ETAPE 3:
            Cette dernière étape consiste à remettre le bit SET à 0 pour autoriser les interruptions automatiques du RTC toutes les secondes pour une mise à jour de l’heure et de la date.

Avant d’utiliser le RTC, il faut s’assurer de son bon fonctionement. Pour cela, il faut lire le registre D.

Le bit VRT est un indiquateur de disfonctionement matériel.  Si VRT=0 alors le RTC est défaillant.

Il faut maintenant écrire dans le registre A pour ordonner le déclenchement de l’oscillateur interne.

La commande #$A0 permet de faire cela.

A chaque interruption de mise à jour des données (chaque seconde), une interruption IRQ est généré par le composant. Le traitement de cette interruption consiste en l’affichage des données du composant.

Affichage des heures, minutes et secondes ces 3 données de type BCD sont respectivement situées aux adresses $1604, $1602 et $1600.

En fin de routine d’interruption, il faut replacer le bit  UF du registre C à ‘0’ pour pouvoir redétecter une interruption de mise à jour des données.    
Pour remettre à ‘0’ ce bit, il faut effectuer une lecture du registre C.

 

Liaison Capteur de Température Dallas 1621 <=> 68HC11 :

        

Le 68HC11 communique avec le capteur de température par l’intermédiaire du bus i2c, ce bus doit être configuré avant sont utilisation. Plusieurs registres permettent de le configurer et de connaître sont état.

Le circuit 8584 est composé de 5 registres:

                            S0 (registre tampon de donnée et de décalage)
                            S0’(adresse propre du 8584)  
                            S1 (registre de commande et de status)
                            S2 (registre de configuration des horloges)
                            S3 (vecteur d’interruption)

La sélection des différents registres du 8584 se fait par les bits 4 et 5 (Es1 Es2) du registre de contrôle S1.

  • Configuration de la liaison I2C (fonction init_i2c)

1.Sélectionner le registre d’adresse propre S0’(registre S1=$00)

2.Ecrire l’adresse du composant I2C esclave (registre S0)

3.Sélectionner le registre S2 (registre S1=$20)

4.Configuration des horloges du système I2C (registre S2)

S24=‘1’et S23=S22=‘0’  -> fréquence d’horloge de 8 MHz

S22=S20=‘0’ et S21=‘0’ -> fréquence SCL de 90KHz

 

  • Utilisation du bus I2c (fonction start_i2c)

1.Vérifier que le bus est libre (bit BB=‘1’ dans le registre S1 en lecture)

2. Indiquer l’adresse du boîtier esclave (registre tampon S0)

3. Acquérir le bus (Envoi d’une condition de START par la mise à ‘1’ du bit STA dans le registre S1 en écriture)

4. Attendre une réponse du boîtier esclave (réception d’un acquittement  ACK). Test du bit Lrb du registre S1. Si la réception de l’acknowledge est validée Lrb=‘1’

5.Envoyer l’adresse du composant interlocuteur et le type d’action à effectuer lire ou écrire.

Ecriture (bit Lsb de l’adresse - > signal R/W=‘0’)
L’écriture d’un octet est suivie d’un test vérifiant la réception d’un acquittement (ACK)

Lecture (bit Lsb de l’adresse - > signal R/W=‘1’)
La lecture d’un octet est suivi de l’envoi d’un acquittement (ACK) sauf si c’est le dernier (ou le seul) octet à lire. 

  • Fin d’utilisation du bus I2C (fonction STOP_I2C)

Le tableau tab_cmd contient les ordres à envoyer au capteur de température

tab_cmd             fcb       $EE,$AA,$AC,$09        octet de commande du DS1621
                                      EE Start conversion
                                      AA read température
                                      AC accès aux registre de configuration

Configuration du DS1621

Ecriture dans le registre de configuration

Une conversion est effectuée à chaque fois qu’un ordre Start Convert est reçu. Le bit DONE passe à ‘1’ à chaque fin de conversion.

Lecture du registre de status (fonction Conv_done )

La valeur de la température ambiante est contenue sur 2 octets. Le bit 7 des 8 bits de LSB représentent la partie décimale de la température. Les 8 bits de MSB représentent la partie entière. La valeur de la température ne peut être lu directement. Il faut effectuer une conversion de cette valeur:

Type d’affichage :

On effectue une division entière par 10 pour séparer les dizaines et les unités. Le quotient de cette division correspond aux dizaines et le reste de la division correspond aux unités.

Exemple : le chiffre complet est 24, on divise 24 par 10 : le quotient est 2 et le reste est 4. Donc on affiche 2 et 4 ensuite le ‘°’ et le ‘C’.

Télécharger le source du programme, cliquer ici. 

 

 

 
SERIElectronique - 115, Rue de l'Abbé Groult - 75015 PARIS
Tél: 01 45 79 55 55 - Fax : 01 45 57 82 21 - eMail: contact@serielectronique.com
Tous droits réservés - © 1986-2008 Serielectronique.com