Vous êtes sur la page 1sur 2

Microcontrôleur MCS-51

TP 1 Clavier matrice

Le clavier se présente sous l’aspect de 12 touches, chacune correspondant à une connexion


entre une ligne et une colonne. Les lignes (bits P0.3 à P0.0 du port P0) seront numérotées de
0 à 3. Les colonnes (bits P0.6 à P0.4) seront numérotées de 0 à 2. (voir figure page suivante).

Ecrire un programme permettant d’afficher sur l’afficheur 7 segments de droite la valeur de


la touche du clavier sur laquelle on a appuyé (on ne considérera que le cas des touches : 1, 2,
3, 4, 5, 6, 7, 8, 9)

L’algorithme de ce programme est le suivant :


1) Test : Touche frappée ?
Si oui aller en 2) ; si non revenir en 1)
2) Appel sous- programme d’Identification de la touche frappée
3) Détermination de la valeur de la touche frappée
4) Affichage de la valeur de la touche frappée

• Touche frappée ?: On envoie des ‘0’ sur toutes les lignes du clavier puis on teste les
colonnes du clavier (par test du bit P3.3) . Si aucune touche n’est frappée, toutes les
colonnes seront à ‘1’

• Sous- programme d’Identification de la touche frappée : Ce sous-programme identifie


d’abord le numéro de la ligne de la touche frappée (par test du bit P3.3), puis ensuite
celui de la colonne. Il range le numéro de la ligne dans le registre R2 et le numéro de la
colonne dans le registre R3.

• Détermination de la valeur de la touche frappée : la valeur de la touche frappée est


une fonction de R2 et R3
• Affichage de la valeur de la touche frappée : les codes 7 segments des caractères 1, 2,
3, 4, 5, 6, 7, 8 et 9 seront supposés préalablement rangés en Ram interne à partir de
l’adresse 50h
TP2 UART externe
Faire la réception série d’une suite de 12 octets (code ASCII de chiffres) en provenance de
l’UART externe et les ranger en ram interne à partir de l’adresse 40h. Ensuite, faire
l’émission du plus petit chiffre de cette série et afficher également ce chiffre sur le 7
segments de droite.
Format de réception et d’émission: 1 bit start, 8 bits données, 1 bit stop, fréquence du
quartz: 11,0592 Mhz, vitesse 19200 bauds (à régler sur l’UART)
Remarque 1 : en simulation, mettre update fréq à 100
Remarque 2 : codes ASCII des chiffres
Caractère code ASCII (en hexadécimal)
0 30
1 31
2 32
3 33
4 34
5 35
6 36
7 37
8 38
9 39

Vous aimerez peut-être aussi