Posez votre question Signaler

Comment programmer des LCD Graphiques?

Aurélien - Dernière réponse le 4 sept. 2013 à 20:41
Bonjour,
*
Je cherche a faire fonctionner Un ecran LCD graphique a l'aide d'un PIC, comment fonctionne un ecran comme ca? que faut il faire pour avoir une lettre ou des trait la ou on le veut?
Auriez vous un cours sur les Ecrans LCD graphique?
Y a il des électroniciens ici?
Pouvez vous m'aidez s'il vous plait?
Merci d'avance
Lire la suite 
Réponse
+5
moins plus
Bonjour à tous !

Pour un projet où il y avait bon nombre de pictogrammes à afficher sur un afficheur graphique monochrome de 128 x 64 pixels, j'ai développé avec Delphi, un utilitaire qui permet d’importer des fichiers au format bitmap (.bmp) , qui permet de faire des modifications rudimentaires sur une grille de canvas à l'écran et qui convertit le résultat (les pixels) en code de langage C ( header ) pour simplifier la programmation et obtenir un gain de temps non négligeable sur la tâche de programmation.

( La mise en oeuvre de ces afficheurs n'étant pas aussi simple et rapide qu'on pourrait le penser de prime abord)

Mon programme permet également d'isoler un pictogramme de taille réduite sans perdre sa position d’origine X,Y, qui sera incluse dans le header C (.h) généré pour économiser de la mémoire Flash du microcontrôleur dans les cas de modifications partielles de l'affichage.

La fonction C définie librement par l'utilisateur est automatiquement recopiée dans chaque tableau de constantes généré.

L'application sauvegarde également en bitmap les écrans de pictogrammes modifiés et les informations nécessaires à la documentation du projet.

Depuis que le projet est terminé, j'ai continué de développer ce programme en lui ajoutant des fonctionnalités à la "Paint" permettant de dessiner des formes géométriques et d'écrire sur l'afficheur et la possibilité de faire du design de GLCD jusqu'à 240 x128 pixels, en incluant les diverses combinaisons de conversion en tableau, dépendantes du contrôleur LCD. ( Pages horizontales, verticales, miroir etc...) ( Il y a encore du pain sur la planche, je pense que ce sera prêt et documenté, librement téléchargeable en février-mars 2008. )

Le site réservé, mais pour l'heure pas encore construit s'appelle bitmap2LCD.com.( Le web design est en cours )

Je ne pense pas t'avoir totalement répondu Aurélien, mais si ton problème est encore d'actualité, nous pouvons sans autre prolonger la discussion ici.
Ajouter un commentaire
Réponse
+2
moins plus
Oups, j'ai juste oublié d'inclure mon email pour recevoir les mises à jour du topic...
Ajouter un commentaire
Réponse
+1
moins plus
Salut Aurélien,

Je n'ai jamais réalisé de traçés dynamiques de courbes sur un afficheur graphique, genre oscilloscope, mais je vais certainement m'y atteler dans le futur, une fois mon outil logiciel "terminé".
A mon avis pour commencer, il te faut chercher sur internet une bibliothèque en langage C qui comprend des routines toutes faites pour afficher.

J'en ai vu quelques unes en tout cas pour le contrôleur Toshiba T6963 ou AX6963. Ce contrôleur très populaire présente l'avantage d'avoir une table de caratères prédéfinie de deux tailles différentes (CGROM). Pour la partie graphique, les pixels en mémoire sont disposés de manière horizontale.

Pour ma part j'ai pour l'heure quelques routines pour des contrôleurs SEDxxx d'Epson, sans caractères prédéfinis et une ram à disposition verticale des pixels.

Quel est ton choix de contrôleur LCD, celui embarqué dans ton module afficheur graphique ?

L'outil bitmap2lcd permet les deux combinaisons (verticale,horizontale) y compris leurs images miroir. J'ai enfin décidé de geler une version rudimentaire beta que je vais mettre à disposition au téléchargement sur bitmap2.lcd.com, ceci d'ici deux ou trois semaines.
Pour l'heure, je teste et chasse le bug, et j'ai de la doc en suspend ;-)

J'ai ajouté quelques possibilités entre autres l'importation de fichiers JPG, la conversion en niveau de gris, puis la sélection de la balance noir/blanc... Les idées de fonctionalités ne manquent pas, mais leur implémentation prend du temps.

Voilà pour le moment...

Meilleures salutations
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Je pense que je vais choisir le controleur T6963 pour controler mon LCD, mais maintenant il faut aussi que je connaisse le language C, c'est compliquer d'aprendre le C?
Je ne le connait pas du tout...
Snif!!
Existe t'il un code binaire pour initialiser l'ecran et ensuite par exemple envoyer un autre code binaire pour aller a une adresse et un autre code pour allumer ce pixel se trouvant a cette adresse?C'est possible?
Merci encore
Sa me parait compliquer quand meme...
Ajouter un commentaire
Réponse
+1
moins plus
Salut Aurélien,

Pour le T6963 niveau branchement, il faut savoir qu'il faut en plus du +5V une tension négative, que tu peux au besoin générer à partir du +5V avec par exemple un circuit intégré spécialisé de Maxim (charge pump) ou autre inverseur et doubleur de tension standard... ( Je n'ai malheureusement pas les types en tête juste là, mais je peux au besoin les retrouver et tu peux aussi trouver des shémas d'exemples sur la grand'toile... D'autres contrôleurs LCD ou modules fabriquent la tension négative d'eux-mêmes et n'ont besoin que de quelques condensateurs externes pour la pompe de charge embarquée )

La comparaison de datasheet de modules et leurs contrôleurs me semble un point important, surtout si tu n'as pas besoin du mode texte du T6963c !

Ensuite il te faut lire par exemple la documentation d'application suivante : ( T6963 dans google te fournit pas mal d'infos )

http://www.tianma.com/...

Pour ce qui est du langage C, voici une librairie pour le T6963 comme point de départ :

http://www.picant.com/c2c/examples/t6963/t6963.c.html

Je n'ai pas regardé s'il comprend une simple fonction directe de basculement de pixel, mais en étudiant ces deux documents tu pourras déjà te faire une idée de ce que ton projet d'oscilloscope nécessitera en efforts.

Pour ma part, j'ai commencé par la mise en oeuvre d'un 240 x 64 autour d'un 80C552, le tout en assembleur et conçu les tables des écrans au crayon et papier quadrillé. Je ne te cache pas que j'en ai bavé des ronds de chapeau, mais cette époque est bel et bien révolue heureusement...

Bonne chance pour ton projet !
Bien entendu, les progrès de ton application m'intéressent vivement...

Meilleures salutations à tous ici !

Bernard
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour à tous,

Je suis retombé sur ce sujet déjà ancien...

Entre temps des m3 d'eau ont coulé sur les ponts : Mon outil Bitmap2lcd en est à la version 2.6d et le projet est toujours actif.

Il existe en plusieurs versions et fait les animations GLCD, les polices de caractères (fonts), supporte les dalles tactiles etc...

A+
Ajouter un commentaire
Réponse
+0
moins plus
Re!
Je suis revenu par hasard en esperant que quelqun mais répondu est la, je mapercois que oui...Génial est merci!
Oui mon probleme est toujours d'actualité, c'est d'ailleur pourquoi je suis retombé sur ma propre discution alors que je recherchai sur google"Cours sur LCD graphique"...
Je vais alé voir l'adresse que tu m'a donné voir si je peut en faire quelque chose!!
en fait, je cherche a réalisé un oscilloscope,je sais, c'est tres compliqué mais je ne veut pas n'on plus qu'il soit tres tres performant!
Si tu veut toujours m'aider pour savoir quel code envoyé pour avoir une lettre ou plutot un pixel pour mon oscilloscope, je suis preneur!!
A bientot j'espere et merci!!
Ajouter un commentaire
Réponse
+0
moins plus
Salut !

Bien alors voilà encore une adresse utile chez un fabricant de modules LCD graphiques (Hantronix) dont j'ai tiré pas mal d'informations intéressantes.

Dans la section <engineering reports> il y a nombre de notes d'application, dont une en particulier portant sur la génération par pompe de charge de la seconde tension d'alimentation souvent négative et le réglage éventuel du contraste de l'afficheur. ( LCD BIAS Voltage, VEE ou autre appellation ) On peut utiliser à choix un potentiomètre de réglage de contraste ou le régler par régime d'impulsions PWM selon le type de circuit mis en oeuvre. Je me rappelle avoir été piégé à l'époque sur une application de commande de machine qui comprenant un poste séchage de pièces à air chaud pulsé. L'écart de température était tel qu'après quelques cycles, on ne pouvait plus lire l'afficheur ! J'ai alors du coupler la tension de contraste à un capteur de mesure de la températur situé près du "Frame" métallique du module afficheur, qui était de plus en contact avec le boîtier en tôle de la console de la machine donc du chassis... Note qu'il y a des modules dits "extended temperature range" disponibles.

Une autre note d'application concerne le rétroéclairage à LEDs pouvant être commandé par impulsions (PWM), permettant une meilleure gestion de la luminosité efficace (par soft) et donc une durée de vie accrue pour une application fonctionnant sur batteries ou accumulateurs...
L'oeil ne pouvant pas détecter les clignotements du rétroéclairage, seule l'énergie nécessaire est absorbée par les leds pour une luminosité optimale...

http://www.hantronix.com/3_1.html

Voilà, j'espère que ce petit embryon de tutoriel à propos des afficheurs LCD graphiques saura attirer d'autres intervenants pour qu'ils partagent leurs expériences et surtout que ce fil de discussion rende service au plus grand nombre ;-)

Amicalement,
Bernaco
Ajouter un commentaire
Réponse
+0
moins plus
Salut à tous !

L'outil Bitmap2LCD en version Basic V1.2 BETA est maintenant disponible gratuitement au téléchargement sur le site bitmap2LCD.com

Il s'agit de la version n'offrant que les fonctionnalités rudimentaires de dessin, une autre version commerciale celle-ci, documentée avec bibliothèque de composants graphiques est pour l'heure en cours de développement.
Utilisé en conjonction avec Paint, Coreldraw, Gimp ou Photoshop pour les manipulations graphiques plus complexes, l'outil Bitmap2LCD devrait permettre de concevoir et réaliser des applications avec affichage LCD graphique confortablement.

Amicalement,
Bernaco
Ajouter un commentaire
Réponse
+0
moins plus
Salut tout le monde!

Pour commencer je tient a remercier bernaco pour l'aide qu'il ma fourni et aussi a tout les autres qui m'ont aidé a commencer avec les écran LCD graphiques!
Je tient a vous informer que par le manque de choix j'ai commencer a apprendre le language assembleur pour PICs qui pour finir est tres interessant a apprendre et a developer!!! Je pense bientot me réacroché au écran LCD tres bientot quand jorai bien tout compris l'assembleur, ( 1 mois je pense sa ira )
Je vais tous de suite allez prendre en main le logiciel Bitmap2LCD pour voir a quoi m'attendre, c'est presque mon seul espoir pour l'instant.

Merci encore, en attendant je vais continuer mes recherches...
Ajouter un commentaire
Réponse
+0
moins plus
Salut Aurélien,

Je te souhaite plein succès avec l'assembleur, langage que j'affectionne également.
Il me semble néanmoins que si tu veux tracer des courbes sur un afficheur LCD graphique, donc convertir un signal de mesure, tu devras probablement effectuer des opérations mathématiques. Pour faire cela, le langage C ou tout autre langage structuré se révèle nettement plus confortable, et tu ne devras pas manipuler des registres à tord et à travers avec toutes les erreurs involontaires qui peuvent en découler.
J'avais fait ça en assembleur avec mon 80C552 (de la famille 80C51). J'avais toutes les librairies mathématiques à disposition, mais pour réaliser par exemple une multiplication avec décimales, c'était assez délicat au niveau de la mise en place.
A toi de voir, mais il est certain que connaître l'assembleur peut s'avérer très utile par la suite...

En ce qui concerne le format de sortie de bitmap2LCD, il est destiné au langage C.
Bien entendu, je souhaite faire évoluer cet outil pour qu'il sorte également des tables directement pour l'assembleur.

Dans ce sens, tu peux poster ici le format syntaxique de la table que tu désirerais générer et j'ajouterai cette option dans le programme.

Par exemple

DB 01H,0A5H,0FFH, etc...
( Le format de la table dépend fortement de l'assembleur et je ne les maîtrise de loin pas tous...)

Au final, je pense rendre la table de constantes générée totalement configurable.

Voilà pour le moment !

A plus

Bernaco
Ajouter un commentaire
Réponse
+0
moins plus
Ah j'oubliais un "petit" détail qui a son importance dans le message précédant :

Le langage C est portable, c'est à dire que tu peux réutiliser des fonctions de ton programme sur d'autres microcontrôleurs cible, dans d'autres projets sans avoir à tout réécrire comme dans le cas d'un assembleur, la syntaxe et les mnémoniques varient énormément d'un fabricant à l'autre...

Avec le C dans l'idéal, quelques retouches et ça tourne sur "n'importe" quelle plateforme matérielle.
Panzani- 19 févr. 2009 à 12:28
Bonjour, je suis nouveau sur le forum...

J'ai lu votre discussion car je suis moi aussi entrain d'apprendre a utiliser les écrans LCD graphiques. En me rendant sur le site http://bitmap2lcd.com, et en parcourant le forum interne j'ai pu constater que Bernie utilise un LCD DOGM 128-6 d'ELECTRONIC ASSEMBLY. J'ai moi aussi acquis un écran de ce type avec le kit d'évaluation USB.

Mon problème, ou plutôt ma question, est que je souhaite savoir comment envoyer un fichier bmp à l'écran sachant qu'il sera stocké dans un automate. Le fait d'envoyer le fichier vers le microcontroleur ne me pose pas de soucis par contre comment le microcontroleur devra interpréter ce fichier afin de l'afficher sur mon écran?

Ce fichier BMP me servirai de masque pour mon affichage, il faudra ensuite que j'envoi des caractères dans les emplacements prévus à cet effet. Est-ce possible d'envoyer des caractères à l'endroit précis où je désire ?

Configuration :
Microcontroleur PIC 18F452
Contrôleur graphique ST7565
LCD DOGM 128-6

Merci beaucoup pour votre éventuelle aide et surtout bonne continuation.

A bientôt
Répondre
Aurélien- 19 févr. 2009 à 22:34
Bonjour panzani,

Pour dire que vous tombez bien, vous tombez bien! Je viens de finir juste aujourd'hui un projet d'université, j'ai meme eu la soutenance cet apres midi meme. On peut pas tombez mieux!!!
Je vais enfin pouvoir retrouvé du temps pour ma passion, l'électronique...

A vrai dire, je n'ai pas fait grand chose par rapport à avant, les écrans graphiques restent encore un grand mystère pour moi. Je ne peut pas vous aidez et j'en suis désolé. maintenant que j'ai le temps je vais pouvoir m'y remetre mais dici que je le fasse!

A la base je voulais faire un oscilloscope avec un LCD graphique, mon seul probleme etait le LCD ( tout le reste du programme etait prèt) Tout compte fait j'ai acheté un oscilloscope, c'est moins compliqué et la précision y est.

Je vais quand meme repondre a votre question, je pense (ceci n'est qu'une pensé!) que le programme du PIC aura une parti avec votre code de votre "masque ecran" puis quand il en a besoin il appelle ce masque pour qu'il l'affiche, il s'agit d'une suite d'instruction en assembleur qui envoi le bon code pour chaque zone de pixel. apres je ne suis sur de rien, mais le principe doit resté le même, le logiciel transforme l'image en assembleur, ensuite le PIC fait son travaille, il envoie les données dans le LCD, et le LCD affiche l'image.

Interessant votre projet, je regarde votre avancement :)

Bonne continuation a vous
Répondre
Panzani- 20 févr. 2009 à 07:39
Bonjour Aurélien,

Je ne me doutais pas avoir une réponse aussi rapidement et je vous en remercie grandement... J'espère que votre soutenance de projet s'est bien déroulée.

Je comprend que par manque de temps ou puisse choisir la facilité à priori l'achat d'un oscilloscope tout fait :-), mais mon budget est très sérré (comme tout le monde en cette période de crise) et je souhaite réellement réaliser ces fonctions moi-même.

A ce que j'ai pu comprendre en feuilletant les docs, c'est que comme vous me l'avez dit, il s'agit d'une gestion de pixels (sachant que mon écran est monochrome, un "masque" est constitué de 128*64 bits c-a-d 1koctets). Une fonction me permet de glisser / déposer une image BMP depuis le kit d'évaluation. Le problème sera de reproduire cette foction (sans le glisser / déposer mais par le stockage dans une mémoire externe à mon système avec laquelle je pourrait dialoguer en MODBUS RTU)

Je vous tiendrai au courant des avancements...

Bonne journée à vous
Répondre
bartman- 23 mars 2009 à 16:01
bonjour,

j'ai suivi tout au long de ce thread les discussions car je suis confronté à un problème pourtant répandu :
j'ai récupéré 2 afficheurs graphique 128*64 à base de t6963 et les quelques montages que l'on peut trouver sont ceux que l'on pilote depuis le port parallèle ou avec un Pic.

Mon but est de piloter ce genre d'afficheur et ensuite porter cela sur ceux qui sont pilotable directement en USB (type CrystalFontz) mais plus chers.

En résumé, ma question est : comment piloter un afficheur graphique T6963 depuis un PC actuel qui n'a pas de port parallèle ni série quitte à passer par un convertisseur USB-Série.

Merci d'avance.
Répondre
Simox- 26 déc. 2009 à 05:36
Bonjour,
je suis en train de réaliser un projet d'electronique dans lequel je doit utiliser un afficheur LCD graphique (controleur T6963C ),.J'aimerai afficher une image image BMP ;mais le probleme est que apres la conversion avec btmp2LCD ou autres logiciels, j'obtient un tableau qui contient des mots 8 bits n'ayant aucun sens, ya -t-il une methode pour avoir les coordonées (x,y) des pixels NOIRS puis les afficher TOUT SIMPLEMENT ?

for(i=0;i<NpixelsNoir;i++){ GLCD_SetDot( x[i] , y[i] ) }
Merci
Répondre
Ajouter un commentaire
Ce document intitulé «  Comment programmer des LCD Graphiques?  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.