Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#51 Message par Guest » sam. 7 nov. 2015 09:56

Un dernier essai ne passe pas, par le reset au point ou on en est. fait jute la tempo puis display on, et inversion on off, ou alors faire une tentative de lecture de la situation

après bien je ne sais plus

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#52 Message par Guest » sam. 7 nov. 2015 15:24

ça tourne, je cherche, je vais finir part en commander un pour noël lol

Il me vient cette idée, je ne sais pas ce que tu en penses.
le contrôleur est un 16 bits il peut passer sous 8bits à condition de passer la partie haute puis la partie basse comme pour les write_data le tuto du datasheet est pour un 16bits.
pour D17:D8=XX et X = Don’t care.

Alors pourquoi on ne le fait pas, pour les commandes .Regarde de faire avec par exemple pour le reset 0x0001.Je sais tu es découragé et je suis désolé de ne pouvoir faire mieux, allez courage on va l'avoir :-)

ps utilise seulement les commandes reset display et inversion cela devrait suffire

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#53 Message par Jérémy » sam. 7 nov. 2015 15:59

Re maï,

Dire que je suis découragé est un faible mot . L’écran à failli traversé la pièce sans touché le sol ! et pas au sens figuré .

Surtout que je ne post , que ce ceux qui me parait utile . Entre deux posts je te passe le nombre de tests que j'effectue dans tous les sens. en inversant les bits en faisant toutes les combinaisons possible etc ......

J'ai essayé cette méthode , on la retrouve en page 4 sur un code en commentaires . le voici .

Pour faire exactement comme dans l'exemple. Mais d’après le schéma les broches IMOx sont câblées en 1,0,0,1 , soit en mode 8080 MCU 8-bit bus interface
II


Code : Tout sélectionner

//  Fonction Envoi de Données  2 octets pour 16bits  -------------------------------
void Envoi_data ( unsigned char Data){

  TFT_RS=;      // Register Select, 1=Data, 0=Command
  TFT_RD=1;
/*
  PORTD = 0x00 ;  //  Met la valeur de la donnée sur le PORTD
    delay_ms(1);

  TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
*/
  PORTD = Data ;  //  Met la valeur de la donnée sur le PORTD
    delay_ms(1);

  TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
}
//---------------------------------------------------------------------------------
 


Il se passerait la moindre petite chose se serait déjà plus motivant, mais la , il reste blanc blanc blanc . Impossible de savoir si on lui parle ou non
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
JEJE89000
Avatar de l’utilisateur
Débutant
Débutant
Messages : 45
Âge : 46
Enregistré en : octobre 2015
Localisation : dans le centre

#54 Message par JEJE89000 » sam. 7 nov. 2015 16:21

Bonjour je pense que tout m a l air bien au niveau des port donc pour moi il devrai au moin quelque chose je voix pas ton problème .
J aurai une car easy pic je t aurai aider mieux que sa. Bon courage ne d espère pas :idea:

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#55 Message par Guest » sam. 7 nov. 2015 16:25

essai cela

Code : Tout sélectionner

//  Fonction Envoi de Données  2 octets pour 16bits  -------------------------------
void Envoi_data ( unsigned char Data){

  TFT_RS=1 ;      // Register Select, 1=Data, 0=Command
  TFT_RD=1;
 
  //  Fonction Envoi de Données  2 octets pour 16bits  -------------------------------

  TFT_RS=1 ;      // Register Select, 1=Data, 0=Command
  TFT_RD=1;
   TFT_CS=0;   void Envoi_data ( unsigned char Data)
  PORTD = 0x00 ;  //  Met la valeur de la donnée sur le PORTD;
 
  TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
     
  PORTD = Data ;  //  Met la valeur de la donnée sur le PORTD

   TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
  TFT_CS=1;   
}


PS redonne moi tout ton code avec cette modif merci
Modifié en dernier par Anonymous le sam. 7 nov. 2015 16:42, modifié 1 fois.

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#56 Message par Jérémy » sam. 7 nov. 2015 16:42

Je viens d'essayer dans tous les sens rien de chez rien.

Le programme tourne bien , mais l’écran reste blanc .

Le voici :

Code : Tout sélectionner

#define TFT_RD PORTB.B0
#define TFT_WR PORTB.B1
#define TFT_RS PORTB.B2
#define TFT_CS PORTB.B4
#define TFT_RST PORTB.B5

//------- PROTOTYPES--------------------------
void Init_ecran();
void Envoi_cmd unsigned char cmd);
void Envoi_data unsigned char Data);

//  Fonction Envoi de commandes   ----------------------------------------------
void Envoi_cmd unsigned char cmd){


  
TFT_RS=;      // Register Select, 1=Data, 0=Command
  
TFT_RD=0;
  
TFT_CS=1;
  
PORTD 0x00 ;  //  Met la valeur de la donnée sur le PORTD

   
TFT_WR ;
     
delay_us(1);
  
TFT_WR ;
     
delay_us(1);

  
PORTD cmd ;  //  Met la valeur de la donnée sur le PORT

  
TFT_WR ;
     
delay_us(1);
  
TFT_WR ;
     
delay_us(1);
  
TFT_CS=1;

}
//---------------------------------------------------------------------------------

//  Fonction Envoi de Données    -------------------------------
void Envoi_data unsigned char Data){
  

  
TFT_RS=;      // Register Select, 1=Data, 0=Command
  
TFT_RD=0;
  
TFT_CS=1;
  
PORTD 0x00 ;  //  Met la valeur de la donnée sur le PORTD

   
TFT_WR ;
     
delay_us(1);
  
TFT_WR ;
     
delay_us(1);

  
PORTD Data ;  //  Met la valeur de la donnée sur le PORT

  
TFT_WR ;
     
delay_us(1);
  
TFT_WR ;
     
delay_us(1);
  
TFT_CS=1;
}
//---------------------------------------------------------------------------------

/*##################################################################################
############################     PROGRAMME PRINCIPAL       #########################
##################################################################################*/
void main() {

  
ANSELB 0;     // Configure le PORTB en digital
  
ANSELD 0;     // Configure le PORTD en digital
  
ANSELE 0;     // Configure le PORTD en digital

  
TRISB 0;      // Port B en sortie
  
TRISD 0;      // Port B en sortie
  
TRISE 0;      // Port en sortie pour test

  
TFT_CS ;      // Chip select broche RB4 du PIC
  
TFT_RD 1;       // Broche Read broche RB0 du PIC

  //Init_ecran ();  // Initialisation de l'écran

 //#################     BOUCLE PRINCIPALE       ###########################
  
while(1) {

     
Envoi_cmd (0x21); // Inversion ON

      
PORTE 0x01;    // allume une led test
      
delay_ms(1000);  // pause

     
Envoi_cmd 0x20);// Inversion OFF

      
PORTE 0x00;    // Eteint une led test
      
delay_ms(1000);  // pause

     
Envoi_cmd (0x28); // Display OFF

      
PORTE 0x01;    // allume une led test
      
delay_ms(1000);  // pause

     
Envoi_cmd 0x29);// Display ON

      
PORTE 0x00;    // Eteint une led test
      
delay_ms(1000);  // pause
  
}
}


//  Fonction d'initialisation de l'écran   -----------------------------------------
void Init_ecran(){

  
Envoi_cmd (0x01); // Effectue un RESET
  
delay_ms(10);
  
Envoi_cmd(0x11); // sleep out
  
delay_ms(10);

  
Envoi_cmd (0x28); // Display off

//---------------------------------------------------------
   
Envoi_cmd(0xcf);
   
Envoi_data(0x00);
   
Envoi_data(0x83);
   
Envoi_data(0x30);

   
Envoi_cmd(0xed);
   
Envoi_data(0x64);
   
Envoi_data(0x03);
   
Envoi_data(0x12);
   
Envoi_data(0x81);

   
Envoi_cmd(0xe8);
   
Envoi_data(0x85);
   
Envoi_data(0x01);
   
Envoi_data(0x79);

   
Envoi_cmd(0xcb);
   
Envoi_data(0x39);
   
Envoi_data(0x2c);
   
Envoi_data(0x00);
   
Envoi_data(0x34);
   
Envoi_data(0x02);

   
Envoi_cmd(0xf7);
   
Envoi_data(0x20);

   
Envoi_cmd(0xea);
   
Envoi_data(0x00);
   
Envoi_data(0x00);
//------------power control------------------------------
   
Envoi_cmd(0xc0);  //power control
   
Envoi_data(0x26);

   
Envoi_cmd(0xc1);  //power control
   
Envoi_data(0x11);
//--------------VCOM
   
Envoi_cmd(0xc5);  //vcom control
   
Envoi_data(0x35);//35
   
Envoi_data(0x3e);//3E

   
Envoi_cmd(0xc7);  //vcom control
   
Envoi_data(0xbe); //    0x94
//------------memory access control------------------------
   
Envoi_cmd(0x36);   // memory access control
   
Envoi_data(0x48); //0048    my,mx,mv,ml,BGR,mh,0.0

   
Envoi_cmd(0x3a);   // pixel format set
   
Envoi_data(0x55);//16bit /pixel
//----------------- frame rate------------------------------
   
Envoi_cmd(0xb1);   //  frame rate
   
Envoi_data(0x00);
   
Envoi_data(0x1B);  //70
//----------------Gamma---------------------------------
   
Envoi_cmd(0xf2);  // 3Gamma Function Disable
   
Envoi_data(0x08);

   
Envoi_cmd(0x26);
   
Envoi_data(0x01); //  gamma set 4 gamma curve 01/02/04/08

   
Envoi_cmd(0xE0);  //positive gamma correction
   
Envoi_data(0x1f);
   
Envoi_data(0x1a);
   
Envoi_data(0x18);
   
Envoi_data(0x0a);
   
Envoi_data(0x0f);
   
Envoi_data(0x06);
   
Envoi_data(0x45);
   
Envoi_data(0x87);
   
Envoi_data(0x32);
   
Envoi_data(0x0a);
   
Envoi_data(0x07);
   
Envoi_data(0x02);
   
Envoi_data(0x07);
   
Envoi_data(0x05);
   
Envoi_data(0x00);

   
Envoi_cmd(0xE1);      //negamma correction
   
Envoi_data(0x00);
   
Envoi_data(0x25);
   
Envoi_data(0x27);
   
Envoi_data(0x05);
   
Envoi_data(0x10);
   
Envoi_data(0x09);
   
Envoi_data(0x3a);
   
Envoi_data(0x78);
   
Envoi_data(0x4d);
   
Envoi_data(0x05);
   
Envoi_data(0x18);
   
Envoi_data(0x0d);
   
Envoi_data(0x38);
   
Envoi_data(0x3a);
   
Envoi_data(0x1f);
//--------------ddram ---------------------
   
Envoi_cmd(0x2a);    // column set
   
Envoi_data(0x00);
   
Envoi_data(0x00);
   
Envoi_data(0x00);
   
Envoi_data(0xEF);
   
Envoi_cmd(0x2b);   // page address set
   
Envoi_data(0x00);
   
Envoi_data(0x00);
   
Envoi_data(0x01);
   
Envoi_data(0x3F);

   
Envoi_cmd(0xb7);  // entry mode set
   
Envoi_data(0x07);
//-----------------display---------------------
   
Envoi_cmd(0xb6); // display function control
   
Envoi_data(0x0a);
   
Envoi_data(0x82);
   
Envoi_data(0x27);
   
Envoi_data(0x00);



   
Envoi_cmd(0x29); // display on
   
delay_ms(100);

  
Envoi_cmd(0x2c);  // memory write

C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#57 Message par Jérémy » sam. 7 nov. 2015 16:54

Je pense que le code est inutilement compliqué !.

A force d'essayer d'essayer et d'essayer .

Comme le faite d'initialiser au départ pour être certain d'avoir un front montant ;
Ou même la config , en sachant qu'un reset mais les paramètres par défauts . on devrait quand même pouvoir éteindre ou inverser les pixels .
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#58 Message par Guest » sam. 7 nov. 2015 17:10

bon déjà tu as init en commentaire i et repris un peu les bits

Code : Tout sélectionner


#define TFT_RD PORTB.B0
#define TFT_WR PORTB.B1
#define TFT_RS PORTB.B2
#define TFT_CS PORTB.B4
#define TFT_RST PORTB.B5

//------- PROTOTYPES--------------------------
void Init_ecran();
void Envoi_cmd ( unsigned char cmd);
void Envoi_data ( unsigned char Data);

//  Fonction Envoi de commandes   ----------------------------------------------
void Envoi_cmd ( unsigned char cmd){


  TFT_RS=0 ;      // Register Select, 1=Data, 0=Command
  TFT_RD=1;
  TFT_CS=0;
  PORTD = 0x00 ;  //  Met la valeur de la donnée sur le PORTD

   TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);

  PORTD = cmd ;  //  Met la valeur de la donnée sur le PORT

  TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
  TFT_CS=1;

}//---------------------------------------------------------------------------------

//  Fonction Envoi de Données    -------------------------------
void Envoi_data ( unsigned char Data){
 

  TFT_RS=1 ;      // Register Select, 1=Data, 0=Command
  TFT_RD=0;
  TFT_CS=0;
  PORTD = 0x00 ;  //  Met la valeur de la donnée sur le PORTD

   TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);

  PORTD = Data ;  //  Met la valeur de la donnée sur le PORT

  TFT_WR = 0 ;
     delay_us(1);
  TFT_WR = 1 ;
     delay_us(1);
  TFT_CS=1;
}

//  Fonction d'initialisation de l'écran   -----------------------------------------
   void Init_ecran(){

  Envoi_cmd (0x01); // Effectue un RESET
  delay_ms(10);
  Envoi_cmd (0x29); // Display on
}
/*##################################################################################
############################     PROGRAMME PRINCIPAL       #########################
##################################################################################*/
void main() {

  ANSELB = 0;     // Configure le PORTB en digital
  ANSELD = 0;     // Configure le PORTD en digital
  ANSELE = 0;     // Configure le PORTD en digital

  TRISB = 0;      // Port B en sortie
  TRISD = 0;      // Port B en sortie
  TRISE = 0;      // Port en sortie pour test
 
  TFT_WR=1;
  Init_ecran ();  // Initialisation de l'écran

 //#################     BOUCLE PRINCIPALE       ###########################
  while(1) {

     Envoi_cmd (0x21); // Inversion ON

      PORTE = 0x01;    // allume une led test
      delay_ms(1000);  // pause

     Envoi_cmd ( 0x20);// Inversion OFF

      PORTE = 0x00;    // Eteint une led test
      delay_ms(1000);  // pause
  }
}




Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#59 Message par Guest » sam. 7 nov. 2015 17:21

bon la je pense que c'est bon fait un copie/coller

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#60 Message par Jérémy » sam. 7 nov. 2015 17:29

Le Programme tourne, la led clignote et les valeurs du PORT changent bien . Mais toujours tout blanc

La preuve en vidéo
http://www.dailymotion.com/video/x3culb8
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités