Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Envoyer un caractére d'un PIC vers un module LCD



  1. #1
    schneiderj

    Envoyer un caractére d'un PIC vers un module LCD


    ------

    Bonjour,

    pour la création des menus de mon application (basé sur un 18F2520) j'ai besoin d'envoyer quelques caractères qui me posent problème, tel que le "à" (affichage "alpha"), è, é....

    Je dois probablement envoyer à la place le code ascII, mais cela ne semble pas aller.
    NB : j'utilise MPLAB C

    Merci pour votre aide,
    Jean-Marie

    -----

  2. Publicité
  3. #2
    carcan

    Re : Envoyer un caractére d'un PIC vers un module LCD

    Bonjour,

    il faut vérifier dans le datasheet de votre écran LCD si ces caractères existent bien et sous quel code ils sont adressés (la table de votre LCD n'est pas forcément la vraie ASCII).

    A+
    Laurent

  4. #3
    sdec25

    Re : Envoyer un caractére d'un PIC vers un module LCD

    Bonjour,
    Si ton écran LCD n'intègre pas les caractères latins spéciaux il faut les ajouter dans la mémoire CGRAM avec des adresses spéciales (0 à 8 sur mon écran). Je te propose une solution que j'utilise sur mon PIC et qui permet d'utiliser les codes ASCII des caractères accentués et donc d'utiliser les chaînes de caractères telles quelles dans MPLAB (par exemple "caractères accentué") :
    Code:
    // ajout d'un caractère dans la mémoire
    void add_carac(unsigned char num, char l1, char l2, char l3,
    		char l4, char l5, char l6, char l7) {
    	// setCGRAMaddress(num*8) :
    	attente_LCD();
    	write_ins(0b01000000 | ((num*8) & 0x3F));
    
    	attente_LCD();
    	write_data(l1);
    
    	attente_LCD();
    	write_data(l2);
    
    	attente_LCD();
    	write_data(l3);
    
    	attente_LCD();
    	write_data(l4);
    
    	attente_LCD();
    	write_data(l5);
    
    	attente_LCD();
    	write_data(l6);
    
    	attente_LCD();
    	write_data(l7);
    	
    	attente_LCD();
    	write_data(0); // pas de curseur
    }
    attente_LCD attend que l'instruction soit terminée, write_ins envoie une instruction et write_date envoie des données.


    Exemple avec ajout du caractère "è" :
    Code:
    	// caractère é
    	#define CARAC_e_AIGU 0
    	#ifdef CARAC_e_AIGU
    		add_carac(CARAC_e_AIGU, 2, 4, 14, 17, 31, 16, 14);
    	#endif
    Pour les paramètres, voir ce site. Attention il faut soustraire 128.

    Conversion code ASCII -> code contrôleur avant l'écriture sur l'écran. En réalité les caractères spéciaux commencent à partir de A0 (avec les caractères accentués en majuscule) mais j'ai juste mis la fin (qui correspond aux caractères courants).
    Code:
    char convertAscii2Lcd(unsigned char x) {
    	static rom const char corresp[] =
    	{	// E0 : à   á   â   ã   ä   å   æ
    	 CARAC_a_GRAVE, // à
    	 'a', // á
    	 'a', // â
    	 'a', // ã
    	 0xE1, // ä
    	 'a', // å
    	 'a', // æ
    	 CARAC_c_CEDILLE, // ç
    	 CARAC_e_GRAVE,	// è
    	 CARAC_e_AIGU, // é
    	 CARAC_e_CIRCON, // ê
    	 'e', // ë
    	 'i', // ì
    	 'i', // í
    	 'i', // î
    	 'i'  // ï
    	 
    	// F0 -> FF
    	 ,'o' // ð
    	 ,0xEE // ñ
    	 ,'o' // ò
    	 ,CARAC_INFINI // ó (mais LCD = symbole infini)
    	 ,'o'
    	 ,'o'
    	 ,0xEF // ö
    	 ,0xFD // ÷
    	 ,CARAC_x_MOY // ø (mais x moyenne sur LCD)
    	 ,'u'
    	 ,'u'
    	 ,'u'
    	 ,0xF5 // ü
    	 ,'y' // ý
    	 ,'.' // þ
    	 ,'y' // ÿ
    	};
    	if (x>0xDF) {
    		#ifndef __DEBUG
    		x = corresp[x-0xE0];
    		#endif
    	}
    	return x;
    }
    
    // écriture d'un caractère sur écran LCD
    void write_char(char x) {
        x = convertAscii2Lcd(x);
        write_LCD(x);
    }
    Avec ces routines, pour écrire "caractère" il suffit d'appeler une fonction puts_LCD("caractère") qui utilise elle-même write_char.
    Dernière modification par sdec25 ; 13/12/2009 à 11h15.

  5. #4
    schneiderj

    Re : Envoyer un caractére d'un PIC vers un module LCD

    Superb tes informations !!

    Merci
    Jean-Marie

  6. A voir en vidéo sur Futura

Discussions similaires

  1. Envoyer un Email Par les commandes AT d'un module GSM
    Par ouakrim dans le forum Électronique
    Réponses: 8
    Dernier message: 12/05/2012, 22h48
  2. envoyer des caractere sur port serie avec gtk+
    Par megazed dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 14/03/2010, 18h29
  3. Utilisation du module ADC avec le module PWM du PIC
    Par heri91 dans le forum Électronique
    Réponses: 8
    Dernier message: 25/09/2009, 12h40
  4. envoyer des donnee de pic vers pc par port serie
    Par pikat dans le forum Électronique
    Réponses: 4
    Dernier message: 24/05/2009, 23h14
  5. Utilisation du module USB d'un PIC
    Par schneiderj dans le forum Électronique
    Réponses: 9
    Dernier message: 16/09/2008, 09h17
Découvrez nos comparatifs produits sur l'informatique et les technologies.