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

Lcd !!



  1. #1
    mmm999

    Lcd !!


    ------

    Bonjour les tous
    je cherche une solution autour une astuce sur l'écran LCD. j'ai un clavier relier à mon pic
    je veu lorsque je appui sur le boutton BACKSPACE, j'efface un caractère LCD.
    ce qui j'avais fai comme algo. je transforme le mode d'ecriture de lcd vers la gauche. j'ecri un espace.je transforme le mode d'écriture vers droite j'ecri un espace. je transforme le mode d'ecriture de lcd vers la gauche et k'ecrit un autre espace.
    c'est comme ca j'ai eu un caractere effacé

    il ya pas une methode plus optimisé en terme d'algo?

    -----

  2. Publicité
  3. #2
    Franck-026

    Re : Lcd !!

    Ben non, apparemment pas. Tu memorise ton emplacement, tu decale a gauche, tu fais un espace et tu redacale a gauche. Il semble n'y avoir que cela. Mais le backspace est un des seuls a devoir bricoler comme ca pour l'emuler...
    Dernière modification par Franck-026 ; 16/05/2012 à 17h23.

  4. #3
    mmm999

    Re : Lcd !!

    j'avais fait cette méthode avant.
    mais je doit mémorisé ma position et je vois que c'est un gaspillage en terme de mémoire

  5. #4
    Franck-026

    Re : Lcd !!

    bah, pas tant que ca, tu utilises 2 octets pour memoriser la position XY si necessaire... Deux variables reutilisables.

  6. A voir en vidéo sur Futura
  7. #5
    mmm999

    Re : Lcd !!

    sayer j'ai trouvé la solution
    il y'a une commande interne à LCD qui permet de reculer d'un pas dans le LCD. et ça marcher parfaitement

  8. #6
    gabuzo

    Re : Lcd !!

    Si tu peux nous faire part de la solution c'est bien, le but d'un forum c'est pas seulement de touver de l'aide, c'est aussi de partager ses résultats.

  9. Publicité
  10. #7
    mmm999

    Re : Lcd !!

    ok je join mon fichier lcd.c et lcd.h dont j'ai modifié
    fonction backspace qui efface un caractere et fonction pour afficher ou nn le curseur
    idéal pour écriture

  11. #8
    gienas
    Modérateur

    Re : Lcd !!

    Bonjour mmm999 et tout le groupe

    Citation Envoyé par mmm999 Voir le message
    ... je join mon fichier lcd.c et lcd.h ...
    Les extension c et h ne sont pas acceptées par le serveur. Mais, s'agissant de programmes, généralement courts, tu peux les insérer dans le corps de tes messages, entre les balises code (symbole # de la boîte à outils).

  12. #9
    mmm999

    Re : Lcd !!

    ok c bon je passe le code :


    Code:
    /*
     *	bibéothèque LCD
     *	utilisation de mode 4 bits
     *
     *	
     *	PORTD bits 0-3 are connected to the LCD data bits 4-7 (high nibble)
     *	PORTD bit 5 is connected to the LCD RS input (register select)
     *	PORTA bit 7 is connected to the LCD EN bit (enable)
     *	
     *	To use these routines, set up the port I/O  TRISD then
     *	call lcd_init(), then other routines as required.
     *	
     */
    
    #ifndef _XTAL_FREQ
     // Unless specified elsewhere, 4MHz system frequency is assumed
     #define _XTAL_FREQ 1000000
    #endif
    
    
    #include	<htc.h>
    #include	"lcd.h"
    
    #define	LCD_RS PORTDbits.RD5
    #define	LCD_RW PORTDbits.RD6
    #define LCD_EN PORTDbits.RD7
    
    #define LCD_DATA	PORTD
    
    #define	LCD_STROBE()	((LCD_EN = 1),(LCD_EN=0))
    
    /* write a byte to the LCD in 4 bit mode */
    
    void lcd_write(unsigned char c)
    {
    	__delay_us(40);
    
    	LCD_DATA = (LCD_DATA & 0xF0) | ( ( c >> 4 ) & 0x0F );
    	LCD_STROBE();
    	LCD_DATA = (LCD_DATA & 0xF0) | ( c & 0x0F );
    	LCD_STROBE();
    }
    
    /*
     * 	Clear and home the LCD
     */
    
    void lcd_clear(void)
    {
    	LCD_RS = 0;
    	lcd_write(0x1);
    	__delay_ms(2);
    }
    
    /* write a string of chars to the LCD */
    
    void lcd_puts(const char * s)
    {
    	LCD_RS = 1;	// write characters
    	while(*s)
    		lcd_write(*s++);
    }
    
    /* write one character to the LCD */
    
    void lcd_putch(char c)
    {
    	LCD_RS = 1;	// write characters
    	lcd_write( c );
    }
    
    
    /*
     * Go to the specified position
     */
    
    void lcd_goto(unsigned char pos)
    {
    	LCD_RS = 0;
    	lcd_write(0x80+pos);
    }
    
    void lcd_backspace()
    {
    LCD_RS = 0;
    lcd_write(0x10);
    
    lcd_puts(" ");
    LCD_RS = 0;
    lcd_write(0x10);
    }
    	
    void affiche_curseur(char affichage)
    {
    LCD_RS = 0;
    if (affichage) lcd_write(0x0F);
    else lcd_write(0x0C);
    
    }
    /* initialise the LCD - put into 4 bit mode */
    void lcd_init()
    {
    	char init_value;
    
    	ADCON1 = 0x06;	// Disable analog pins on PORTA
    
    	init_value = 0x3;
    	TRISD=0;
    	TRISC=0;
    	LCD_RS = 0;
    	LCD_EN = 0;
    	LCD_RW = 0;
    	
    	__delay_ms(15);	// wait 15mSec after power applied,
    	LCD_DATA	 = init_value;
    	LCD_STROBE();
    	__delay_ms(5);
    	LCD_STROBE();
    	__delay_us(200);
    	LCD_STROBE();
    	__delay_us(200);
    	LCD_DATA = 2;	// Four bit mode
    	LCD_STROBE();
    
    	lcd_write(0x28); // Set interface length
    	lcd_write(0xF); // Display On, Cursor On, Cursor Blink
    	lcd_clear();	// Clear screen
    	lcd_write(0x6); // Set entry Mode
    }

    et pour lcd.h

    Code:
    /*
     *	LCD interface header file
     *	See lcd.c for more info
     */
    
    /* write a byte to the LCD in 4 bit mode */
    
    extern void lcd_write(unsigned char);
    
    /* Clear and home the LCD */
    
    extern void lcd_clear(void);
    
    /* write a string of characters to the LCD */
    
    extern void lcd_puts(const char * s);
    
    /* Go to the specified position */
    
    extern void lcd_goto(unsigned char pos);
    	
    /* intialize the LCD - call before anything else */
    
    extern void lcd_init(void);
    
    extern void lcd_putch(char);
    
    extern void lcd_backspace();
    
    /*	Set the cursor position */
    
    #define	lcd_cursor(x)	lcd_write(((x)&0x7F)|0x80)
    
    void affiche_curseur(char affichage);

  13. #10
    mmm999

    Re : Lcd !!

    dsl la derniere fonction manque le mot reservé externe

Discussions similaires

  1. [Brun] TV LCD Seeltech lcd 26" st 2606 GCI : démarre sans image ?
    Par STEPHANIE DANI dans le forum Dépannage
    Réponses: 30
    Dernier message: 21/02/2011, 15h05
  2. [LCD] info sur LCD graphique LM6300 ?
    Par c_est_den dans le forum Électronique
    Réponses: 2
    Dernier message: 02/12/2010, 22h01
  3. [Brun] TV LCD Samsung LE32A336J1N : activé par erreur LCD Fac mode !
    Par u_ns dans le forum Dépannage
    Réponses: 1
    Dernier message: 21/11/2009, 13h50
  4. Afficher sur un LCD des données séries, RS232 vers LCD
    Par crocu dans le forum Électronique
    Réponses: 0
    Dernier message: 27/03/2009, 12h32
  5. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par acidburn62 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 14h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.