View
4
Download
0
Category
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