IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

menu sur afficheur LCD


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 8
    Points
    8
    Par défaut menu sur afficheur LCD
    Bonjour,
    je dois programmer un afficheur LCD 4*20 relié à un PIC24FJ128GA010, parmi ce que va m'afficher l'écran il y a un menu défilant, je voudrais savoir où je dois stocker ses éléments (dans un tableau?), et aussi vu la taille de l'écran l'affichage des éléments du menu se fera 4 lignes par 4?

    merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par nikita_sophie Voir le message
    je dois programmer un afficheur LCD 4*20 relié à un PIC24FJ128GA010, parmi ce que va m'afficher l'écran il y a un menu défilant, je voudrais savoir où je dois stocker ses éléments (dans un tableau?), et aussi vu la taille de l'écran l'affichage des éléments du menu se fera 4 lignes par 4?
    La conception d'une application 'menu' avec clavier/ecran nécessite par mal de réflexion préalable. On doit savoir quel sont les commandes exactes et quels sont les écrans attendus.

    Il faut déjà que tu écrives une couche d'abstraction simple de bas qui implémente :

    lcd_clrscr() : effacement de l'écran
    lcd_gotoxy(x, y) : positionner le curseur à une position donnée
    lcd_putch (car) : affichage d'un caractère à la position courante du curseur
    au-dessus :
    lcd_puts(chaine) : affichage d'une chaine à la position courante du curseur (spécifier ce qui se passe en cas de dépassement du nombre de colonne).

    Avec ça, on peut faire beaucoup de choses.

    Ensuite, si tu as des données qui tiennent sur plus de lignes que ne peut l'afficher l'écran, il faut prévoir un mécanisme de défilement, soit par ligne, soit par page (ici, 4 lignes), avec une commande par des touches (haut/bas, par exemple, je ne sais pas de quel clavier tu disposes).

    Oui il faut mettre les données dans un tableau et créer les ecrans à la volée en fonction de la pression sur les touches...

    C'est un gros travail mais c'est intéressant (enfin, chacun ses goût, moi, j'aimais bien).
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 8
    Points
    8
    Par défaut
    ça me rassure dans ce que j'ai fait jusque là pcq j'ai défini toutes les routines et les Bp nécessaires. Et pour l'affichage 4 lignes par 4 j'avais pensé aussi à des Bp comme ">" ou "^"..

    merci bcp

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Tu aurais du rester sur ton premier post, ça concerne le même problème.

    http://www.developpez.net/forums/d59...etation-macro/

    Ensuite, il n'y a pas de manière particulière de faire un menu défilant en C, d'autant plus que ton afficheur est particulier lui-aussi. Ce qu'il faut faire, c'est envoyer à intervalle régulier un morceau de ton texte dont la largeur est celle de ton afficheur, en décalant à chaque tour d'un caractère.

    Après, ton texte, tu peux le stocker n'importe où. Dans un tableau, en effet. Mais tu peux utiliser pour çà une zone mémoire allouée par malloc(), ou une simple chaîne déclarée par des guillemets, ce sera toujours exploité de la même façon.

    Question bête : as-tu déjà réussi à envoyer un caractère depuis la dernière fois ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Ce qu'il faut faire, c'est envoyer à intervalle régulier un morceau de ton texte dont la largeur est celle de ton afficheur, en décalant à chaque tour d'un caractère.
    Pourquoi faut-il décaler à chaque fois d'un caractère?


    Citation Envoyé par Obsidian Voir le message
    Question bête : as-tu déjà réussi à envoyer un caractère depuis la dernière fois ?
    je me suis rendu compte en fait que leurs macros ne sont pas toutes utilisées, mais j'ai réussi à remonter à l'endroit où les caractères sont envoyés pour l'affichage, c'était dans un tt autre fichier que celui du LCD!! donc là j'adapte ces routines à mon programme. Sauf qu'à la suite de qlq tests, lorsque je fais des modifications sur l'adresse de la ligne où je veux afficher ma chaîne, et bien ce n'est pas pris en compte!

    en effet au début, sur la carte achetée, l'afficheur était un 2*16, je les désoudé et j'ai mis celui de 4*20, après avoir remarqué que le brochage est le même, et ça marche (mais l'affichage se fait biensur sur 2 lignes puisque leur programme est adapté pour). j'ai alors repéré l'endroit où on fournit l'adresse de la ligne où on veut afficher le texte, donc j'ai essayé de donner par exemple l'adresse de la 3ème ligne de l'écran, mais ça ne change rien!!

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 8
    Points
    8
    Par défaut
    c'est bon le changement de ligne marche!!

    Pour revenir à si j'ai réussi à envoyer des caractères, ben comme j'ai dit plus haut j'essaie encore, mais je veux créer mes propres fonctions et n'utiliser de leur programme que vraiment ce que je ne réussirai pas à faire tte seule..

Discussions similaires

  1. programmer un afficheur LCD sur PIC
    Par ziko132 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 25/11/2012, 10h15
  2. [68HC11F1] ecriture d'un texte sur afficheur LCD
    Par Need you dans le forum Autres architectures
    Réponses: 4
    Dernier message: 15/05/2012, 22h10
  3. []Menu sur plusieurs lignes
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/09/2005, 15h55
  4. [Debutant] Menu sur clic de souris
    Par chabannou dans le forum Windows
    Réponses: 8
    Dernier message: 02/04/2005, 01h52
  5. Est t il possible d'avoir un menu sur un clic droit ???
    Par almisuifre dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/12/2004, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo