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 ---
- 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 ---
Modérateur : Jérémy
Ecran Easy TFT
Ecran Easy TFT
ç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
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- Messages : 2752
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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
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
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=1 ; // 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
Ecran Easy TFT
Ecran Easy TFT
essai cela
PS redonne moi tout ton code avec cette modif merci
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- Messages : 2752
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je viens d'essayer dans tous les sens rien de chez rien.
Le programme tourne bien , mais l’écran reste blanc .
Le voici :
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=0 ; // 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 = 1 ;
delay_us(1);
TFT_WR = 0 ;
delay_us(1);
PORTD = cmd ; // Met la valeur de la donnée sur le PORT
TFT_WR = 1 ;
delay_us(1);
TFT_WR = 0 ;
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=1;
PORTD = 0x00 ; // Met la valeur de la donnée sur le PORTD
TFT_WR = 1 ;
delay_us(1);
TFT_WR = 0 ;
delay_us(1);
PORTD = Data ; // Met la valeur de la donnée sur le PORT
TFT_WR = 1 ;
delay_us(1);
TFT_WR = 0 ;
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 = 0 ; // 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
} Ecran Easy TFT
-
Jérémy

Administrateur du site- Messages : 2752
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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 .
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 .
Ecran Easy TFT
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
Ecran Easy TFT
-
Jérémy

Administrateur du site- Messages : 2752
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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
La preuve en vidéo
http://www.dailymotion.com/video/x3culb8
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités


