TD 196 2010 -

Preview:

Citation preview

TD Microcontrôleur

F. Pépin

Description du spectrocolorimètre

Documentation

Sous-programmes de gestion de l'afficheurAfficheur LCD

Mémoire FLASH

Mémoire SRAM

Convertisseur analogique numériqueGestion du codeur incrémental

EEPROM

Spectrocolorimètre

Il s'agit de concevoir un spectro-colorimètre, dont l'objectif est de mesurer la réflectance ou la

transmittance spectrale de matériaux colorés. Un spectrocolorimètre est constitué d'une source

lumineuse, d'un filtre interférentiel et d'un détecteur :

Corps

coloré

détecteur

Filtre

Moteur et

codeur incrémental

Voici les différents éléments de ce système :

• un afficheur LCD. Les sous-programmes de gestion de cet afficheur sont disponibles sous

forme d'une biblothèque de programmes qu'il suffira de joindre au programme principal.

• un clavier matriciel. Chaque pression sur une touche provoque la fermeture de

l'interrupteur correspondant

• plus de 32 Ko de FLASH

• entre 8 et 16 Ko de RAM

• Un convertisseur analogique-numérique 16 bits

• 1 Ko d'EEPROM

• Quelques entrées-sorties logiques

Réaliser un avant-projet de ce système.

TD Microcontrôleur

Sous-programmes de gestion de l'afficheur

$TITLE('SSPG-LCD');;;------------------------------------------------------------------------;;; Sous Programmes de gestion de l'afficheur L.C.D. pour le 80196KR;; modele 2 a 4 lignes de 8 a 20 caracteres; interface intelligent (type Philips, Samsung, ...); brochage 14 points; utilisation en mode dialogue de donnees sur 4 bits; pas de lecture de l'afficheur, donc pas de Handshake hard;;------------------------------------------------------------------------;; utilise le cablage suivant : port P1.0 a P1.7;; P1.7 = D7; P1.6 = D6; P1.5 = D5; P1.4 = D4; P1.3; P1.2 = E : validation sur front descendant; P1.1 = R/W : a 0 en ecriture; P1.0 = RS : a 0 pour une commande, a 1 pour affichage;;------------------------------------------------------------------------;n_colons equ 20 ;nombre de colonnes afficheur;RSEG ; segment de registres

EXTRN char,AL;; variables locales a ces procedures;out: dsb 1verz: dsw 1;;------------------------------------------------------------------------;CSEG ; segment de code

P1 EQU 1FD4H

PUBLIC init_lcd,print,com,attend

init_lcd:;;procedure d'initialisation de l'afficheur;

ldb AL,#00110100B ;init rs=0,r/w=0,e=1ldb AL,P1nopldb AL,P1andb AL,#11111011B ;E = 0stb AL,P1call attendldb AL,#00110100B ;init e=1stb AL,P1nopldb AL,P1

TD Microcontrôleur

andb AL,#11111011B ; E = 0stb AL,P1call attendldb AL,#00110100B ;init ,e=1stb AL,P1noplsb AL,P1andb AL,#11111011B ; E = 0stb AL,P1call attendldb AL,#00100100B ; fonctionnement 4 bitstb AL,P1nop ; modif P1.3=0lsb AL,p1andb AL,#11111011B ; e=0stb AL,P1call attendldb char,#00101100Bcall com ; function set 2 lignesldb char,#00001000B ; display offcall comldb char,#00000001B ; clear displaycall comldb char,#00001100B ; display on cursor offcall comldb char,#00000110B ; no shiftcall comret

;;------------------------------------------------------------------------;attend:;; Temporisation reglable;

clr verz ; boucle d'attente ...attend_encore: inc verz

cmp verz,#3500jne attend_encoreret

;;------------------------------------------------------------------------;print:;; sous programme d'affichage du code ASCII contenu dans char; out est une variable locale;

lsb AL,#00000101B ; E=1stb AL,P1ldb out,charandb out,#0F0H ; prends les poids fortsorb out,#00000101B ; E=1,R/W=0,RS=1call afficher ; envoi vers l'afficheurldb out,charshlb out,#4 ; prends les poids faiblesorb out,#00000101B ; E=1,R/W=0,RS=1call afficher ; envoi vers l'afficheurlsb AL,#11111000Bstb AL,P1ret

;;------------------------------------------------------------------------;

TD Microcontrôleur

com:;; sous-programme d'envoi d'une commande contenue dans char (8bits); out est une variable locale;

lsb AL,#00000100B ; E=1stb AL,P1ldb out,charandb out,#0F0Horb out,#00000100B ; E=1,R/W=0,RS=0call afficherldb out,charshlb out,#4orb out,#00000100Bcall afficherret

;;------------------------------------------------------------------------;afficher:;; sous-programme d'envoi sur le port p1 avec les tempo; verz est un compteur local;

clr verzbouc: inc verz

cmp verz,#2000jne boucldb AL,out ; met la donnee sur le portstb AL,P1nopnoplsb AL,P1andb AL,#11111011B ; E=0 pour validationstb AL,P1ret

END

TD Microcontrôleur

Afficheur LCD

TD Microcontrôleur

TD Microcontrôleur

Mémoire FLASH

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

Mémoire SRAM

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

Convertisseur analogique numérique

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

Gestion du codeur incremental

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

EEPROM I2C

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

TD Microcontrôleur

Recommended