afficheur LCD

Embed Size (px)

Citation preview

  • 5/13/2018 'afficheur LCD

    1/5

    04/02/12 Fribotte : Base de donnees technique - I\\ \\ \\ \'aff icheur LCD

    Un club de passionnes en robotique participant a la coupe de France E=M6.[Accueil] [Qui sonnnes-nollS ?] [R obo ts] [C oype e=m6] [BD T echn ig,ue] [F onn n] [R epo rtages] [L iens] [WiKiFnl

    Introduction: Les afficheurs LCDLes afficheurs LCD Iilog iqu e in tegree son t un m oyen p ratiqu e et efficace pou r afficher d esin fo rma tio ns s ur v otr e r ob ot.B ien m ieu x q u'u ne serie d e LED , il VO llSserv ira Iia ffic he r d es mes sa ge s lo rs d e l'in itia lis atio n, d esm essag es d 'erreurs, des valeurs de variables ... o u to ut sim plem ent un petit co uco u pou r en m ettre plein1 a vue.L 'afficheur LCD perm et d 'afficher des caracteres ASCII, sur 16, 20 ou 40 colonnes, et de 1 Ii4 lign es .E n gros il existe 2 rmdeles d 'interfaces norm alisees : U ne version "parallele " (pas au sens PC duterm e) et u ne versio n serie (R S23 2).L es versions paralleles sont m oins cheres (dans les 50Fr au minimum). Com ptez dans les 150Fr unever sion s er ie .L es v ersio n series u tilisen t b ien su r m o in s d 'E /S , m ais elles m on op olisen t u ne liaiso n serie,N ous ne parlerons ici que des versions paralleles,

    C omment commander l'afficheurL a c on ne xio n

  • 5/13/2018 'afficheur LCD

    2/5

    04/02/12 Fribotte : Base de donnees technique - I\\ \\ \\ \'aff icheur LCD 2+5V 3 references pour I e c on tr as te (mette z i t la m asse, ca m arche, ou alors un potard avec I e +5V) 4 RS (Choix donnee ou inst ruc tion) 5 RIW (Choix read ou write) 6 E (Enable - validation) 7 Data 0 (DO) 8 Data 1 (D1) 9 Data 2 (D2) 10 Data 3 (D3) 11 Data 4 (D4) 12 Data 5 (D5) 13 Data 6 (D6) 14 Data 7 (D7) 15 LED A (non utilise, en tout cas dans la version que j'ai) 16 LED K (idem)

    P ou r u tiliser le LCD , ilfa ut b ien sflr l'alimenter (+ 5V , mas se , c on tr as te ).Ensuite ilva falloir relier les ports R S, R IW et E (qui sont obligato ires) au J . I C .Puis les ports D4, DS, D6 et D7 au J . I C aussiLes ports de D O a D3 sont facultatifs ! Et on va s'en passer pour economiser des ports sur le J . I C .En re sume ily a besoin de 7 ports sur le J . I C (ev en tu ellem en t u n ON/O FF su pp lerrentaire si v ou s v ou 1ez,m ais verifiez bien la consom ation de votre L CD si vous voulez l'alim enter directem ent par I e J . I C - u n p ortdu PIC ne peut delivrer que 25mA max).

    Utilisation des ports pour envoyer one instructionPou r e nv oy er u ne in str uctio n i t l'afficheur,ilfa ut reg le r le b it R ea dIWrite (g en er aleme nt i t Wri te ), spec if ie r I e bit RS (si c'est une connnande ou unedonne e), m ettre les bits de poids fort de la corrnnande ou la donnee en question sur les bits D7 D6 D5D 4, et enfin valider p ou r q ue l'affich eu r en tien ne comp te.L a v alidatio n se fait en m ettan t I e bit E it 1. Puis on I e remet it O.Rebelotte ensuite avec les bits de poids faibles sur D7 D 6 D5 D4. N ouvelle validation.Ca y est, la cormnande est enregistree par le LCD, en 2 coups pour eviter d'utiliser D3 D2 D1 DO.II y a tout de m em e des contraintes de tem ps i t respecter (ilfaut un certain tem ps au LCD pourcomp ren dre et ex ecu ter u ne req uete),C es contraintes sont des tem ps minimnrns. O n peut prevoir large et les depasser,

    Les commandesA pres avoir alim ente le L CD , ilv ou s fau dra en v oy er u ne serie d e co nn nan de p ou r l'in itialiser.V ous allez pouvoir regler le m ode 4 bits, l'aspect du curseur, le defilem ent, le nom bre de pixels parcaracteres, etc ...C ette phase d'initialisation term inee, vous pouvez en voyer directem ent des codes ascii pour que Ie L CDles aff iche.V ous pouvez aussi envoyer d'autre corm nandes, connne effacer l'ecran, placer le curseur it tel ou telen dro it, et m em e relire les in fo rm atio ns co nten ues d an s sa m emoire,Je ne vais pas tout re-detailler, certaines pages tres bien m ites expliquent tout ca en detailEn voici une en anglais Ou en local ici

  • 5/13/2018 'afficheur LCD

    3/5

    04/02/12 Fribotte : Base de donnees technique - I\\ \\ \\ \'aff icheur LCDUn exemple de gestion du LCD sur PICO n a realise un ensem ble de fonctions en ass emble ur PIC pour gerer un LCD .Il y a en plus quelques fonctions de tim er qui sont utiles.Ce program me tourne sur un 16F877 cadence a 20M hz m ais peut etre adapte tres facilem ent sur un 16F84(dont il va tout de m em e utiliser 7 E/S) saufla fonction LCD _ P RINTF. Pensez quand m em e a re vo ir le s tim ers !Mais au pire en les laissant tels quels tout va m archer. L 'affichage sera juste un poil plus lent.L e progrannne n'est ni trop gourm and en taille m em oire (m oins de 270 instructions, en com ptant les tim ers), ni enRAM (4 octets pour le LCD, 3 pour les timers).IMPORTANT: C e p ro gran nn e u tilise d es tempo fixe entre 2 in str uctio ns , co nrr es po nd an t a u temp s maxnorm alise. nne va pas tester periodiquem ent l'etat du LC D pour savoir si il p eut enchainer une nouvellein stru ctio n o u n onIn co nv en ien t, l'execu tio n est p ro bab lem en t p lu s lo ng ue. M ais d u co up l'affich ag e se fait a tem ps constant, etsurtout le bit R /W n'est plus utile. O n peut l'affecter a 0 et recuperer ainsi une E/S sur le PIC.(ce n'est pas represente sur le schem a ou la liaison RD 1 -> 5 peut donc etre supprirree, et rerrplacee par uneliaison a l a masse) .

    1~1D1.-I-----1-1141~1OO;.11a:1~[t5. 1 1 . 2I~m. 11111 r-r~IRilDtQ_..I [r~IR!mIIR!ID.2cI -:L = = = = = = = = = = = = = = 1 = 4= - . " ~ ' I ' SV--------------~L~I-~

    nIl l1

    Le cablage1 1 " " " " " . .. . . _ .. . . . - . ,

    LCD

    ! . . . . ! . . . . ca , u; < : 0 . " C : " ' "

    Les fonctions LCD _INIT : In itialisatio n d u LCD en mod e 4 b its. D 'au tres p aram etres so nt definissables par des defines

    o LCD_SET_MATRIX 1 -> Matrices de 5*11, 0 -> Matrices de 5*8 (defaut O . C'est le cas p ou rles LCD bas de gamme)o LCD_SET_DISPLAY 1 -> Display LCD On, 0 -> D isp la y LCD Off'(defaut 1. Et oui, sinon onvo it r ien :P

    o LCD_SET_CURSOR 1 -> Cursor O n, 0 -> C ursor O ff (defaut 1, mais vo us p ouv ez ledesactiver)

    o LCD_SET_BLINK 1 -> b lin k: ch aracter at cu rso r p ositio n O n, 0 -> Off'(defaut O . 1 fait clignotterle caractere so us le cu rseu r)

    o LCD_SET_DIRECT 1 -> to th e rig ht, 0 -> to the left (defaut 1)o LCD_SET_SCROLL 1 -> Scroll display, 0 -> do not scroll (defaut 0.1 fait se deplacer toutl 'a ff ichage s i le cu rseu r d ep asse d e l'ecran )

    LCD SEND CHAR: Affi ch e le caractere dont Ie code ascii est dans W

  • 5/13/2018 'afficheur LCD

    4/5

    04/02/12 Fribotte : Base de donnees technique - I\\ \\ \\ \'aff icheur LCDCALL LCD SEND CHAR- -

    LCD_SEND _HEXA :A ffiche W en hexa (sur 2 caracteres),E xem ple qui affiche FF sur l'afficheur :

    MOVLW 0'255'CALL LCD SEND HEXA

    LCD_SEND_DECI: A ffich e W en d ecim al (su r 3 caracteres),E xemple q ui affich e 0 50 su r 1 'affich eu r :

    MOVLW 0'50'CALL LCD SEND DECI

    LCD_SEND _BIN :A ffich e W en b in aire (su r 8 caracteres),E xem ple qui affiche 11111110 sur l'a ff ic he ur :

    MOVLW 0'254'CALL LCD SEND BIN

    LCD CLEAR: Effilc e l'e cr an LCD LCD_SCROLL: S cro lle l'e cra n LCD (d ep lac e to ut 1 'affic ha ge d 'u ncr an ) LCD_LOCATE :Place le curseur sur la position definie par W LCD_LOCATE _LINEO :Place le curseur au debut de la 1ere ligne LCD_LOCATE _LINEl :Place le curseur au debut de la 2em e ligne LCD_LOCATE _LINE2 :Place le curseur au debut de la 3em e ligne LCD_LOCATE _LINE3 :Place le curseur au debut de la 4em e ligne LCD_PRINT_SPACE: A ffich e u n e sp ac e LCD_PRINTF :F o nctio n la p lu s co rrp liq uee, elle est u tilisee p ou r affich er u ne ch ain e d e caracteres p re-definie dans la m em oire du P IC .II faut d'abord definir les chaines de la sorte (nornbre quelconque lim ite a 255 chaines) :

    Printf STARTVARIABLE PRINTF CMP = 1 ; Variable MPLAB(pas d'existence en assembleur) pour trouver Ie bon printf.

    Printf FribottePRINTF CMP++

    EQU PRINTF CMP

  • 5/13/2018 'afficheur LCD

    5/5

    04/02/12 Fribotte : Base de donnees technique - I\\ \\ \\ \'aff icheur LCDPRINTF CMP++

    DT "* Coucou ! *" 0Printf Fribotte Made EQU PRINTF CMPPRINTF CMP++

    DT "Made by Fribotte",O

    Printf OkPRINTF CMP++

    DT

    EQU PRINTF CMP"OK",D

    Printf ErrorPRINTF CMP++

    DT

    EQU PRINTF CMP

    "ERROR", 0Printf STOP

    E nsuite o n appe1le l'affichage d'une chaine en m ettant son identifiant dans W.Ic i a ffic ha ge d e Ia chaine "* Coucou ! *" et de Ia chaine ''M ade by Fribotte" :

    MOVLWCALL

    Printf CoucouLCD PRINTF

    MOVLWCALL

    Printf Fribotte MadeLCD PRINTF

    Les boucles: Waitls, W ait15tm , W aitlO tm , W ait1.5tm , W aitlOOIJS , W ait50 1JS , W aitllJS

    Le programmeVou s tr ou ve re z le programme couplet ic iII affiche des chaines de caracteres et ensuite, en boucle, les valeurs analogiques sur le port AO c on ve rtie s e nnumerique,

    Completez cette page, posez vos questions et remarques ici: WIKiFriPage btto://fribotte.free.fr/bdtecb/lcdllcdbtml modifiee le 14/10/[email protected], libre de droitpour touteutilisationon comrnerciale.Reproductionautoriseear simplemail.

    mailto:[email protected],mailto:[email protected],