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

Embarqué Discussion :

Fonctionnement LCD ILI9341 (allocation mémoire) [Électronique]


Sujet :

Embarqué

  1. #1
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut Fonctionnement LCD ILI9341 (allocation mémoire)
    Bonjour,

    je vois a peu près ce que fait cette fonction mais je souhaiterais comprendre exactement ce qu'il se passe:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /*******************************************************************************
    * Set draw window region                                                       *
    *   Parameter:      x:        horizontal position                              *
    *                   y:        vertical position                                *
    *                   w:        window width in pixel                            *
    *                   h:        window height in pixels                          *
    *   Return:                                                                    *
    *******************************************************************************/
     
    void GLCD_SetWindow (unsigned int x, unsigned int y, unsigned int w, unsigned int h) {
     
      wr_cmd (0x2A); // Column Address Set (2Ah)
      wr_dat(((x    ) >> 8) & 0xFF);
      wr_dat(((x    )     ) & 0xFF);
      wr_dat(((x+w-1) >> 8) & 0xFF);
      wr_dat(((x+w-1)     ) & 0xFF);
     
      wr_cmd (0x2B); // Page Address Set (2Bh)
      wr_dat(((y    ) >> 8) & 0xFF);
      wr_dat(((y    )     ) & 0xFF);
      wr_dat(((y+h-1) >> 8) & 0xFF);
      wr_dat(((y+h-1)     ) & 0xFF);
     
      wr_cmd (0x2C); // Memory Write (2Ch)
    }

    Voici les paramètres entrant ==> GLCD_DrawChar(col * 6, ln * 8, 6, 8, (unsigned char *)&Font_6x8_h [c * 8]); ( col * 6 = x / ln * 8 = y / 6 = w et 8 = h)
    Ci-joint également la doc du lcd (colonne adresse & page adresse).

    Je crois comprendre qu'avec cette fonction on exécute une routine pour allouer de la mémoire qui correspondra a l'encadrement de mon caractère ( on prédéfinis un cadre ou mon caractère sera écris puis affiché)

    Après il me semble que SC et EC correspondent a Start column et End column idem pour SP et EP, Start page et End page ?

    Si ligne et colonne = 0 soit le premier caractère je trouve comme delimitation en colonne Sc11 = 1 et Ec4 = 1et pour page Sp11 = 1 et Ec0,1,2,3 = 1

    Du coup je ne comprends pas comment exploiter ces bits mis a 1 si ca quelqu'un peut m’éclairer

    Merci
    Images attachées Images attachées   
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

  2. #2
    Membre actif
    Homme Profil pro
    Technicien Layout
    Inscrit en
    Août 2015
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Layout

    Informations forums :
    Inscription : Août 2015
    Messages : 275
    Points : 292
    Points
    292
    Par défaut
    Je m'auto réponds,

    J'ai modifié ma façon de calculer:

    Avec ligne = 1 et colonne = 1 cwidth = 6 et cheight = 8

    Sc = 0b 0000 0000 0000 0110 soit 0d 6
    Ec = 0b 0000 0000 0000 1011 soit 0d 11

    Sp = 0b 0000 0000 0000 1000 soit 0d 8
    Ep = 0b 0000 0000 0000 1111 soit 0d 15

    Donc on obtient un espace de 6 colonnes (6,7,8,9,10,11) par 8 lignes (8,9,10,11,12,13,14,15) le compte est bon.

    Caractère suivant:

    Avec ligne = 1 et colonne = 2 cwidth = 6 et cheight = 8

    Sc = 0b 0000 0000 0000 1100 soit 0d 12
    Ec = 0b 0000 0000 0001 0001 soit 0d 17

    Sp = 0b 0000 0000 0000 1000 soit 0d 8
    Ep = 0b 0000 0000 0000 1111 soit 0d 15

    Donc on obtient un espace de 6 colonnes (12,13,14,15,16,17) par 8 lignes (8,9,10,11,12,13,14,15) le compte est tjrs bon.

    etc....

    Et ca marche avec ligne =1-10 et colonne = 1-45 cwidth = 7 et cheight = 10 par exemple...
    L’art est une activité humaine, le produit de cette activité ou l'idée que l'on s'en fait s'adressant délibérément aux sens, aux émotions, aux intuitions et à l'intellect. www.elise-galerie.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb d'allocation mémoire malloc
    Par oz80 dans le forum C++
    Réponses: 5
    Dernier message: 18/11/2005, 17h23
  2. Limite Allocation Mémoire d'un tableau d'entier
    Par l9ft b9hind dans le forum C++
    Réponses: 5
    Dernier message: 27/10/2005, 19h29
  3. Allocation mémoire
    Par DestyNov@ dans le forum C++
    Réponses: 9
    Dernier message: 23/08/2005, 08h09
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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