Probleme dans programme menu du LCD
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Probleme dans programme menu du LCD



  1. #1
    invited5a795fe

    Probleme dans programme menu du LCD


    ------

    Bonjour,

    je voudrais que vous me guidiez vers une fonction de type "boutton" pour le microcontrôleur de type PIC (16F722).

    J'ai utiliser ceci avec mikroélectronika, mais ça ne va pas en fait. C'est à dire que la variable "menu_principal" ne s'incrémente pas!

    Pouvez-vous m'aider?

    Merci à vous

    Code:
    
    // LCD module connections
    sbit LCD_RS at RB4_bit;
    sbit LCD_EN at RB5_bit;
    sbit LCD_D4 at RB0_bit;
    sbit LCD_D5 at RB1_bit;
    sbit LCD_D6 at RB2_bit;
    sbit LCD_D7 at RB3_bit;
    
    sbit LCD_RS_Direction at TRISB4_bit;
    sbit LCD_EN_Direction at TRISB5_bit;
    sbit LCD_D4_Direction at TRISB0_bit;
    sbit LCD_D5_Direction at TRISB1_bit;
    sbit LCD_D6_Direction at TRISB2_bit;
    sbit LCD_D7_Direction at TRISB3_bit;
    // End LCD module connections
    
    char txt1[] = "OPEN - FIRE";
    char txt2[] = "MSTK CORPORATION";
    
    char txt3[] = "MODE ON";
    char txt4[] = "MODE OFF";
    char txt5[] = "MODE TIMING";
    
    char txt6[] = "Allume";
    char txt7[] = "Eteind";
    char txt8[] = "Temporise";
    
    char txt9[] = "Arret";
    char txt10[]= "Tourne";
    
    char txt11[]= "OK -> demarrer";
    char txt12[]= "OK -> arreter";
    
    char menu_principal = 1;
    char nb_total_menu = 4;
    char oldstate_menu = 0;
    
    void main()
    {
        ANSELA = 0;
        ANSELB = 0;
        ANSELD = 0;                        // SET AN IND as difital
    
        TRISD0_bit = 0;                    // set RD0 pin as input
    
        Lcd_Init();                        // Initialize LCD
        Sound_Init(&PORTE, 2);             // Initialize Sound
        
        Lcd_Cmd(_LCD_CLEAR);               // Clear display
        Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
    
    
        Lcd_Out(1,4,txt1);                 // Write text in first row
        Lcd_Out(2,1,txt2);                 // Write text in second row
    
        Delay_ms(3000);
    
    
    
      
           if (Button(&PORTD, 0, 1, 1) && oldstate_menu == 0)         // Detect logical one
           {
               oldstate_menu = 1;               // Update flag
               
               if (oldstate_menu == 1 && Button(&PORTD, 0, 1, 0))
               {
                menu_principal += 1;
                if (menu_principal == nb_total_menu)
                    menu_principal = 1;
                oldstate_menu = 0;                              // Update flag
               }
           }
    
         
           switch(menu_principal)
             {
                 case 1 :                          // mode OFF
                          Lcd_Cmd(_LCD_CLEAR);     // Clear display
                          Lcd_Out(1,5,txt4);       // MODE OFF
                          Lcd_Out(2,3,txt12);      // OK pour arreter
                          break;
                 case 2 :
                          Lcd_Cmd(_LCD_CLEAR);     // Clear display
                          Lcd_Out(1,5,txt3);       // MODE ON
                          Lcd_Out(2,3,txt12);      // OK pour arreter
                         break;
                 case 3 :
                          Lcd_Cmd(_LCD_CLEAR);     // Clear display
                          Lcd_Out(1,4,txt5);       // MODE Timing
                          Lcd_Out(2,2,txt12);      // OK pour arreter
                         break;
             }
    
    } // fin du programme
    L'afficheur LCD fonctionne nikel! Sauf que le texte qui doit y être écrit ne se modifie pas.

    Merci de votre aide.

    -----

  2. #2
    umfred

    Re : Probleme dans programme menu du LCD

    Si tu utilises bien un 16F722, je crois que le problème vient tout simplement du fait qu'il n'y a pas de PortD sur sur ce PIC
    (cf la datasheet du PIC page 5)

  3. #3
    invited5a795fe

    Re : Probleme dans programme menu du LCD

    pardon, non, j'utilise le 16F727...sorry..

    Merci pour la remarque plus que pertinente

  4. #4
    sdec25

    Re : Probleme dans programme menu du LCD

    Bonjour,
    Code:
        TRISD0_bit = 0;                    // set RD0 pin as input
    Dans le registre TRIS, 0 c'est une sortie pas une entrée.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. gestion de menu et affichage sur un lcd
    Par insadelyon dans le forum Technologies
    Réponses: 0
    Dernier message: 23/04/2010, 17h39
  2. [Brun] lcd samsung mauvaise manip. service menu
    Par u_ns dans le forum Dépannage
    Réponses: 11
    Dernier message: 27/11/2009, 06h23
  3. Menu Demarrer programme rien aprés click Droit !
    Par glapietra dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 24/08/2007, 08h17
  4. Problème dans un programme de PIC
    Par invite67d96d45 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/06/2003, 23h14
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...