You are on page 1of 11

INFO064

SYSTEMES
PROGRAMMES
ENFOUIS:
La Dactylette.
Prof. BOIGELOT

Raphael RANDAXHE (2ELINF) - Nicolas DUMONT (3ELEN)


Avril 2004.

`
TABLE DES MATIERES

Table des mati`


eres

DU PROJET.
1 PRESENTATION

2 SCHEMA
DU CIRCUIT.

3 CONTRAINTES TEMPS-REEL.

4 PROGRAMMATION DU PIC.
4.1 Phase I: Entree des donnees . . . . . . . . . . . . . . . . . . . . .
4.2 Phase II: Calculs . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Phase III: Affichage des resultats . . . . . . . . . . . . . . . . . .

8
9
10
10

5 CONCLUSIONS.

10

TABLE DES FIGURES

Table des figures


1
2
3
4
5

Schema du circuit. . . . . . . . . . . . . . . . . . . . . . . . . . .
Schema de linterface clavier-Pic. . . . . . . . . . . . . . . . . . .
Schema de la commande dun afficheur 7 segments `a cathode
commune. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Timing du scanning du clavier et de selection dun afficheur. . . .
Schema general du programme. . . . . . . . . . . . . . . . . . . .

5
6
7
7
8

PRESENTATION
DU PROJET.

PRESENTATION
DU PROJET.

Notre projet consiste en une calculatrice programmee pour effectuer le calcul


de la cote finale dun exercice de dactylographie. Les grilles de cotation officielles
sont jointes en annexe. Nos contraintes temps reel resident dans la gestion multiplexee dun pave numerique matriciel 12 touches et de 4 afficheurs 7 segments
[1].
Apr`es un exercice de dactylographie, le correcteur dispose de quatre donnees:
le nombre de frappes, le nombre de fautes, le temps imparti pour la dictee, ainsi
que le niveau de difficulte. Deux informations utiles pour le professeur sont la
vitesse (ponderee par le nombre de fautes), et le nombre de frappes par fautes.
La vitesse ponderee par le nombre de fautes est calculee grace `a la formule
suivante, en considerant que le nombre moyen de frappes par mot est 6, et que
une faute co
ute un mot:
brut 6 f tes
vpond =
[mots/min]
6 temps
pctge =

brut
[f rappes/f aute]
f tes

Pour obtenir la cote finale, nous avons effectue une interpolation lineraire
des deux tableaux joints en annexe. Nous avons renomme le seuil de tolerance
en niveau de difficulte, sur une echelle de 1 `a 8, 1 etant le niveau le plus difficile.
Nous avons observe quune cote de 10/10 sobtient quand on fait 0 fautes, et
quune cote de 0/10 sobtient quand on fait deux fois plus de fautes que le
nombre de fautes permises par le seuil de tolerance (celui etant le nombre de
frappes divise par 100 pour le niveau 4). On obtient donc la formule:
score =

10

brut
100

score = 10

niv
4

f tes + 10

2000 f tes
[./10]
brut niv

Notre projet consiste donc en trois phases:


[Phase I] Lecture, affichage, et enregistrement des quatre donnees.
[Phase II] Calculs
[Phase III] Affichage des trois resultats
A la base du projet, on utilise le microcontroleur PIC16F877 de microchip[2],
que nous avons programme en assembleur[3][4]. Nous avons utilise la technique
du bootloader pour programmer notre PIC par linterface serie.
Dans le cadre de ce rapport, nous allons tout dabord detailler la partie
hardware du circuit, ensuite nos contraintes temps-reel, et enfin la partie programmation.

SCHEMA
DU CIRCUIT.

SCHEMA
DU CIRCUIT.

Nous avons concu une interface entre le microcontroleur PIC16F877 de microchip, cadence par une horloge externe de 20Mhz et
4 afficheurs LED 7 segments `a cathode commune permettant de visualiser
les donnees entrees au clavier et les resultats.
4 transistors npn pour la commande des 4 afficheurs
un clavier organise en matrice 3x4 qui nous permet de rentrer les donnees,
passer `
a letape suivante avec la touche carre, ou recommencer le processus
au debut avec la touche etoile.
7 LED de sortie. Quand il faut rentrer une donnee ou lire un resultat, la
LED correspondante sallume.

Fig. 1 Schema du circuit.

SCHEMA
DU CIRCUIT.

Nous utilisons les 8 pins du PORTB pour gerer laffichage et le clavier par
un balayage sur chaque afficheur et sur chaque colonne du clavier. Notre PIC
nous permet en effet de changer dynamiquement le statut du PORTB. Pendant
les phases daffichage, les 8 bit sont configures en sortie, et pendant les phases
de lecture clavier les bits 0, 1, 2 en sortie et 4, 5, 6, 7 en entree
Les sorties sont pour envoyer 5V en permanence, sauf quand on effectue
un balayage sur une colonne, signifiant quon envoye une tension 0V sur cette
colonne. Quand on appuie pas sur une touche on a 5V sur les entrees (naturellement hautes `
a cause des resistances Pull-Up). On lira donc un 0 (0.5V par
division potentiometrique 100k/10k) sur une des pins dentrees seulement
quand on appuie sur une touche et quon envoie un 0 sur la sortie correspondante.

Fig. 2 Schema de linterface clavier-Pic.

Pour laffichage, les 8 bits du PORTB, configures en sorties, commandes


laffichage des 7 segments sur un des quatres afficheurs. On allume donc les 4
afficheurs, chacun `
a leur tour avec une frequence suffisament elevee pour avoir
limpression que les 4 sont allume. La commande dallumage des afficheurs se fait
par lintermediaire de 4 transistors npn (se comporte comme un circuit ouvert
quand on envoie 5V sur la gachette, comme un circuit ferme quand on envoie
0V) sur 4 pins configures en sortie: PORTD, bits 4, 5, 6, 7.
Le PORTC, bits 0 `
a 6 est utilise pour allumer un des 7 LEDs de sortie.
Nous aurions pu diminuer le nombre de pins utilises pour le PIC mais nous
avons essaye de reduire au minimum la partie hardware de notre circuit pour
privilegier les implementations softwares dans le PIC.

CONTRAINTES TEMPS-REEL.

Fig. 3 Schema de la commande dun afficheur 7 segments `


a cathode commune.

CONTRAINTES TEMPS-REEL.

Nous avons du tenir compte des contraintes temps-reels inherentes `a la


gestion multiplexee du pave numerique et de laffichage. La figure suivante
represente levolution temporelle dun cycle de lecture clavier et affichage de
notre projet. Ce graphique va nous permettre de verifier et dexpliciter nos
contraintes temps-reel.

Fig. 4 Timing du scanning du clavier et de selection dun afficheur.

[contrainte 1] La frequence de rafrachissement de chacun des afficheurs


doit etre plus grande que 25hz, pour eviter le scintillement. On doit avoir limpression que les 4 afficheurs sont tous allumes. Chaque afficheur est allume tous
les 20ms, ce qui nous donne une frequence de rafrachissement de 50hz.

PROGRAMMATION DU PIC.

[contrainte 2] En considerant que le temps minimum dappui sur une


touche est de un dixi`eme de seconde, il faut que le temps le plus long entre
deux scanning dune touche soit plus petit que 100ms. Dans notre cas, ce temps
est de 20 ms.
[contrainte 3] Pour eviter quun appui sur une touche soit detecte plusieurs
fois (probl`eme du rebond), d`es quun appui sur une touche est detecte, il faut
laisser secouler un temps dinaction plus long que la duree de rebondissement.
Nous avons choisi un temps dinaction de 5ms.
Ces differents temps ont ete calcule par comptage du nombre dinstruction,
sachant que une instruction dure 0.2s (5 millions dinstructions par seconde
car on utilise une clock externe cadencee `a 20Mhz).

PROGRAMMATION DU PIC.

Fig. 5 Schema general du programme.

PROGRAMMATION DU PIC.

4.1

Phase I: Entr
ee des donn
ees

Pour chacune des 4 etapes, on rep`ete la meme methodologie dentree, affichage et enregistrement de donnees.

Algorithme: Etapes
1-1 `
a 1-4
Effacer f lagT ouche]
Af f ich4 = Af f ich3 = Af f ich2 = Af f ich1 =0 0011111110
chif f reM = chif f reC = chif f reD = chif f reU = 0
Allumer la LED de sortie adequate
etape1x
configurer PORTB en entree/sortie
ScanCol1
ScanCol2
ScanCol3
configurer PORTB en sortie
Afficheur1 et tempo5ms
Afficheur2 et tempo5ms
Afficheur3 et tempo5ms
Afficheur4 et tempo5ms
Si f lagT ouche] = 0
goto etape1x
Retenir 1000chif f reM + 100chif f reC + 10chif f reD + chif f reU
Passer `
a letape suivante

Lorsque quon detecte un appui sur une touche lors dun ScanCol, on retient
la valeur de cette touche dans la variable chiffreU et les segments `a allumer
dans Affich1 et on effectue une rotation des variables (lancien chiffreU devient
le nouveau chiffreD, et ainsi de suite). La touche ] provoque toujours un passage
a letape suivante et la touche un retour `a letape 1-1.
`
AfficheurX commande lallumage de lafficheur X avec la valeur contenue
dans la variable affichX. On reste ensuite 5ms dans cette etat par lintermediaire
dune boucle de 25 255 4 instructions (une instruction dure 0.2sec).

CONCLUSIONS.

4.2

10

Phase II: Calculs

Nous avons donc implemente les trois formules suivantes:


vpond =
pctge =

brut 6 f tes
[mots/min]
6 temps
brut
[f rappes/f aute]
f tes

2000 f tes
[./10]
brut niv
Pour cela nous avons utilise les routines de multiplication, division, addition,
soustraction 16 bits fournies par microchip. En effet, la variable brut (le nombre
de frappes) peut monter jusque 6000, donc nous lavons stockee comme deux
variables de 8bits: brutH et brutL.
score = 10

Une fois quon obtient nos reponses finales vpond, pctge et score, on les
transforme en une representation Milliers,Centaines,Dizaines,Unites, pour les
afficher `a la phase suivante. Par exemple, on effectue la division enti`ere de vpond
par 1000, puis on regarde dans la table de reference pour obtenir la forme utile
pour les afficheurs 7 segments et on la stocke dans la variable Mvpond.

4.3

Phase III: Affichage des r


esultats

La methodologie est exactement la meme que pour la phase I: on effectue alternativement un allumage de chaque afficheur et un scanning de chaque touche
du clavier dans lattente de la touche ] pour passer `a letape suivante.
La seule difference est que les valeurs affichees sont toujours Mvpond - Cvpond
- Dvpond - Uvpond, Mpctge - Cpctge - Dpctge - Upctge, Mscore - Cscore - Dscore
- Uscore selon letape.

CONCLUSIONS.

Ce travail sest revele etre extremement interessant. Il nous a permis de


concevoir notre propre circuit electronique du debut `a la fin et de mettre en
pratique de nombreux cours theoriques que nous avons suivi aux cours de nos
annees detude. Il nous a permit dapprofondir nos connaissances en language assembleur, apprendre `
a souder des composants electronique, et consulter des datasheet avec moins dapprehension. Nous nous sommes egalement rendus compte
des nombreuses fonctionnalites dun microcontroleur.
Notre projet pourrait etre ameliore de nombreuses facons. Malheureusement
nous avons ete limite par le temps et par le fait que nous soyons un groupe de
seulement deux etudiants. Nous aurions pu simplifier la partie hardware en utilisant un seul module de 4 afficheurs 7 segments (et donc supprimer les transistors
de commande). Nous aurions pu utiliser une ou deux decimale pour ameliorer
la precision de nos calculs et diminuer lerreur sur les differents resultats.

ERENCES

REF

11

R
ef
erences
ENFOUIS, Notes de
[1] Bernard BOIGELOT: SYSTEMES PROGRAMMES
cours.
[2] Microchip: PIC16F87x DATASHEET.
[3] Bigonoff: LA PROGRAMMATION DES PICs : Demarrer avec le 16F84.
[4] Bigonoff: LA PROGRAMMATION DES PICs : La gamme mid-range par
letude des 16F87x.
[5] Microchip: Multiplexing LED drive and a 4x4 keypad sampling AN529.

You might also like