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 : mazertoc
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonjour JMarc, et tous le monde,
Le lien que tu viens de donnée explique très bien comment mettre en fonction l'écran, j'attends le miens avec impatience pour
commencer, j'ai bien peur qu'il n'arrive jamais, avec la poste de chez moi
pour le lien
A+
Le lien que tu viens de donnée explique très bien comment mettre en fonction l'écran, j'attends le miens avec impatience pour
commencer, j'ai bien peur qu'il n'arrive jamais, avec la poste de chez moi
pour le lien
A+
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonjour,
https://www.youtube.com/watch?v=Js4wykWY6zg
Je penche pour un ILI9342. A mon avis tous les ILI démarrent avec les mêmes commandes simples de base. Après il y a toute une batterie de commandes secondaires de réglage, gamma, scroll, ...
La commande de lecture de l'ID code permet avec un peu de chances d'identifier le contrôleur, mais ce n'est pas garanti, quand on voit les sources Arduino où cela tâtonne sur. Effectivement Arduino, cela a un côté Shadok
La bibliothèque Arduino Mcufriend est là, avec sa commande readID() dans MCUFRIEND_kbv.cpp
https://github.com/prenticedavid/MCUFRIEND_kbv
https://www.youtube.com/watch?v=Js4wykWY6zg
Je penche pour un ILI9342. A mon avis tous les ILI démarrent avec les mêmes commandes simples de base. Après il y a toute une batterie de commandes secondaires de réglage, gamma, scroll, ...
La commande de lecture de l'ID code permet avec un peu de chances d'identifier le contrôleur, mais ce n'est pas garanti, quand on voit les sources Arduino où cela tâtonne sur. Effectivement Arduino, cela a un côté Shadok
La bibliothèque Arduino Mcufriend est là, avec sa commande readID() dans MCUFRIEND_kbv.cpp
https://github.com/prenticedavid/MCUFRIEND_kbv
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonjour satinas, et bonjour a tous,
Ouais, ben je crois que tu as raison, ça doit être un ILI9342, datasheet mis en début de poste : viewtopic.php?p=6793#p6793
Mais actuellement j'attends toujours mon écran (enfin je peux toujours rêvé avec la poste de chez moi)
Pour l'instant je m'informe, en examinant soigneusement le schéma éléctronique, le schéma que je possède corresponds à un SPFD5408A
mais sa me permets de comprendre plein de chose.
J'ai fait pas mal de découverte, là dessus, surtout sur le touché de contrôl de l'écran, qui est piloté par un ADS7843.
datasheet mis en début de poste : viewtopic.php?p=6793#p6793
Très instructif de regarder un schéma, car on peu prendre élément par élément pour on comprendre leur fonctionnement.
A savoir que l'écran, et un écran résistif, mais pas capacitif.
L'explication d'un écrans tactiles résistifs :
Les écrans tactiles résistifs sont relativement moins chers que les écrans tactiles capactifis.
Ils sont construits avec deux feuilles flexibles revêtues d'un matériau résistif et séparées par des micro-pointes.
lorsqu'on effectue une pression, les feuilles viennent en contact et enregistre le point de contact.
Merci de participé
A+
Ouais, ben je crois que tu as raison, ça doit être un ILI9342, datasheet mis en début de poste : viewtopic.php?p=6793#p6793
Mais actuellement j'attends toujours mon écran (enfin je peux toujours rêvé avec la poste de chez moi)
Pour l'instant je m'informe, en examinant soigneusement le schéma éléctronique, le schéma que je possède corresponds à un SPFD5408A
mais sa me permets de comprendre plein de chose.
J'ai fait pas mal de découverte, là dessus, surtout sur le touché de contrôl de l'écran, qui est piloté par un ADS7843.
datasheet mis en début de poste : viewtopic.php?p=6793#p6793
Très instructif de regarder un schéma, car on peu prendre élément par élément pour on comprendre leur fonctionnement.
A savoir que l'écran, et un écran résistif, mais pas capacitif.
L'explication d'un écrans tactiles résistifs :
Les écrans tactiles résistifs sont relativement moins chers que les écrans tactiles capactifis.
Ils sont construits avec deux feuilles flexibles revêtues d'un matériau résistif et séparées par des micro-pointes.
lorsqu'on effectue une pression, les feuilles viennent en contact et enregistre le point de contact.
Merci de participé
A+
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
:( non, il n'y a pas d'ADS7843, contrôleur qui gère avec son adc un tactile résistif, et qui sort les mesures sur une interface sérielle spi. C'est aussi le cas du lcd dont je t'avais parlé, qui a lui un XPT2046.
Le lcd dont on parle n'a aucun contrôleur, il faut se taper les mesures avec l'adc du pic, et c'est pas simple. J'ai fait mes propres fonctions, en m'inspirant fortement des librairies Arduino existantes, merci à leurs concepteurs au passage. Je trouve dommage de s'embêter avec tout cela, mais bon, quand on aime on compte pas :)
Avec l'ADS7843, il suffit de lire 2 ou 3 octets sur le port spi et on a la mesure, sans lui voila ce que cela donne ...
Le lcd dont on parle n'a aucun contrôleur, il faut se taper les mesures avec l'adc du pic, et c'est pas simple. J'ai fait mes propres fonctions, en m'inspirant fortement des librairies Arduino existantes, merci à leurs concepteurs au passage. Je trouve dommage de s'embêter avec tout cela, mais bon, quand on aime on compte pas :)
Avec l'ADS7843, il suffit de lire 2 ou 3 octets sur le port spi et on a la mesure, sans lui voila ce que cela donne ...
Code : Tout sélectionner
//-----------------------------------------------------------------------------
bool Lcd_pm8_240x320::tsPressed()
//-----------------------------------------------------------------------------
// ts adc uno, retourne booleen en cours d'appui, renseigne _tsPress
// appui avec un stylet -> 500 a 600
// appui avec le doigt -> 500 a 900
{
pinMode(TS_XMA, INPUT); digitalWrite(TS_XMA, 0); // x- input analogique, no pullup (lcd_rs hi)
pinMode(TS_YPA, INPUT); digitalWrite(TS_YPA, 0); // y+ input analogique, no pullup (lcd_cs hi)
digitalWrite(TS_XP, 0); // x+ output numerique, low (lcd_d0 0)
digitalWrite(TS_YM, 1); // y- output numerique, high (lcd_d1 1)
_tsPress = 1023-(analogRead(TS_YPA)-analogRead(TS_XMA));
pinMode(TS_XMA, OUTPUT); // x- output numerique, low (lcd_rs 0)
digitalWrite(TS_YPA, 1); pinMode(TS_YPA, OUTPUT); // y+ output numerique, high (lcd_cs off)
return _tsPress >= TOUCH_PRESSURE; // x+ output numerique, low (lcd_d0 0)
} // y- output numerique, high (lcd_d1 1)
//-----------------------------------------------------------------------------
void Lcd_pm8_240x320::tsRead() // dure 1ms environ
//-----------------------------------------------------------------------------
// ts adc uno, acquisition, renseigne _tsCpt,_tsMs,_tsX,_tsY
//
// si _tsCpt = 0 -> pas d'appui en cours
// _tsMs -> duree en ms dernier appui
// _tsX,_tsY -> coordonnees ts du dernier appui
//
// si _tsCpt != 0 -> appui en cours, nb d'appels a tsRead() ayant retourne des coordonnees valides
// _tsMs -> top depart millis() de l'appui
// _tsX,_tsY -> coordonnees de l'appui en cours
{
if (tsPressed()) { // appui ts, read _tsX
pinMode(TS_YM, INPUT); digitalWrite(TS_YM, 0); // y- input numerique, no pullup (lcd_d1 hi)
pinMode(TS_YPA, INPUT); digitalWrite(TS_YPA, 0); // y+ input analogique, no pullup (lcd_cs hi)
digitalWrite(TS_XMA, 0); // x- output numerique, low (lcd_rs 0)
digitalWrite(TS_XP, 1); // x+ output numerique, high (lcd_d0 1)
int xval = analogRead(TS_YPA);
int val = analogRead(TS_YPA);
val -= xval; if (val < 0) val = -val;
if (val < 2) { // _tsX ok, read _tsY
pinMode(TS_XMA, INPUT); // x- input analogique, no pullup (lcd_rs hi)
pinMode(TS_XP, INPUT); digitalWrite(TS_XP, 0); // x+ input numerique, no pullup (lcd_d0 hi)
pinMode(TS_YM, OUTPUT); // y- output numerique, low (lcd_d1 0)
digitalWrite(TS_YPA, 1);pinMode(TS_YPA, OUTPUT);// y+ output numerique, high (lcd_cs off)
int yval = analogRead(TS_XMA);
val = analogRead(TS_XMA);
val -= yval; if (val < 0) val = -val;
if (val < 2) { // _tsX et _tsY ok
_tsX = xval; _tsY = yval;
if (!_tsCpt) _tsMs = millis(); // appui ts, demarrer chronometre
_tsCpt++;
}
}
digitalWrite(TS_YPA, 1); pinMode(TS_YPA, OUTPUT); // y+ output numerique, high (lcd_cs off)
pinMode(TS_XMA, OUTPUT); // x- output numerique, low (lcd_rs 0)
pinMode(TS_YM, OUTPUT); // y- output numerique, low (lcd_d1 0)
pinMode(TS_XP, OUTPUT); // x+ output numerique, low (lcd_d0 0 ou 1)
}
else if (_tsCpt) {
_tsCpt = 0; _tsMs = millis()-_tsMs; // relachement ts, sauver duree de l'appui
}
}
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
écrit par satina :
:( non, il n'y a pas d'ADS7843, contrôleur
J'ai pas la platine sous la main, comme explique j'ai pas encore l'écran alors je travaille avec un plans d'écran SPFD5408A,
Ce que je voulais, c'est comprendre le principe, pour le programmer c'est plus simple, quand j'ai bien compris.
En tous cas un grand merci à toi, avec ça on peu déjà créer un petit programme
y- = lcd_d1
y+ = lcd_cs
x- = lcd_rs
x+ = lcd_cs
Je me demande si c'est détectable avec un multimètre, j'ai hâte de passé à la programmation.
A+
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Le principe est simple, pour avoir la coordonnée en x, on polarise les pins X et on fait une mesure analogique sur les pins Y. Ensuite on fait l'inverse pour avoir la coordonnée en y. Le programme ci-dessus fonctionne sur mon premier écran, le 2ème écran ne voulant rien savoir, j'en suis resté là, car entre-temps le lcd full spi était sorti. Le premier reçu n'avait pas de XPT2046 câblé, sacré chinois ! Depuis ils sont vendus complets et opérationnels. De toute façon, vu leurs prix, faut pas hésiter à en tester plusieurs et faire le tri. Le contrôleur a aussi l'avantage de fournir une pin irq qui indique s'il y a appui.
Pour le multimètre j'ai pas le souvenir d'avoir essayé, j'avais juste constaté que la résistance des plaques était très différente entre les 2 lcds.
Pour le multimètre j'ai pas le souvenir d'avoir essayé, j'avais juste constaté que la résistance des plaques était très différente entre les 2 lcds.
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
bonjour a tous
quand pensez vous ?
Comme cela chacun choisi son port
et pour l'envoi des données
quand pensez vous ?
Code : Tout sélectionner
PORT_DONNEES EQU LATD
#DEFINE LCD_RD LATC,0
#DEFINE LCD_WR LATC,1
#DEFINE LCD_RS LATC,2
#DEFINE LCD_CS LATC,3
#DEFINE LCD_RST LATC,4
Comme cela chacun choisi son port
et pour l'envoi des données
Code : Tout sélectionner
bsf LCD_RST
debut
movf adresse,w
movwf PORT_DONNEES
bcf LCD_CS
bcf LCD_RS
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
bsf LCD_RS
nop
nop
nop
nop
movf donnees,w
movwf PORT_DONNEES
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
nop
nop
nop
bsf LCD_CS
incf adresse
decfsz c1
bra debut
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonjour JMarc, satinas,et tous le monde,
Bien sur qu'il faut procéder comme cela, par contre pour les tempo, utiliser des variables de bank communes.
il faut éviter les macros(quand on peux), les sous programmes réduise la taille du fichier ASM, et son préconisé.
Des que je reçois mon écran (je peux toujours rêver ) je me mets dessus, j'ai déjà compris comment programmer le touché tactile.
A+
#DEFINIE PORT_DONNEES LATD
#DEFINE LCD_RD LATC,0
#DEFINE LCD_WR LATC,1
#DEFINE LCD_RS LATC,2
#DEFINE LCD_CS LATC,3
#DEFINE LCD_RST LATC,4
JMarc à écrit :
quand pensez vous ?
Bien sur qu'il faut procéder comme cela, par contre pour les tempo, utiliser des variables de bank communes.
il faut éviter les macros(quand on peux), les sous programmes réduise la taille du fichier ASM, et son préconisé.
Des que je reçois mon écran (je peux toujours rêver ) je me mets dessus, j'ai déjà compris comment programmer le touché tactile.
A+
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonsoir Temps-x et satinas et ceux qui veulent participer bien sur
suite au renseignement de Satinas dans la partie "C", voici mon premier jet
http://www.fantaspic.fr/viewtopic.php?f=10&t=117&start=130
pour les sous routines, j'ai essayé avec 1 envoi par wr et aussi par 2 envois par wr pour simuler les bits 15:8 et 7:0
et la partie programme
mais pour l'instant cela ne fonctionne pas
suite au renseignement de Satinas dans la partie "C", voici mon premier jet
http://www.fantaspic.fr/viewtopic.php?f=10&t=117&start=130
pour les sous routines, j'ai essayé avec 1 envoi par wr et aussi par 2 envois par wr pour simuler les bits 15:8 et 7:0
Code : Tout sélectionner
Envoi_cmd
movwf PORT_DONNEES
bcf LCD_RS
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
nop
nop
nop
nop
nop
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
nop
nop
nop
nop
nop
return
Envoi_data
movwf PORT_DONNEES
bsf LCD_RS
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
nop
nop
nop
bcf LCD_WR
nop
nop
nop
nop
bsf LCD_WR
nop
nop
nop
nop
return
et la partie programme
Code : Tout sélectionner
movlw D'81'
movwf c1 ; boucle pour write graphic in ram
bsf LCD_WR
bsf LCD_RD
bsf LCD_RST
Tempo_10ms .20
debut
bcf LCD_CS
movlw 0x00
rcall Envoi_cmd
movlw 0x01 ; reset
rcall Envoi_cmd
bsf LCD_CS
Tempo_10ms .100
bcf LCD_CS
movlw 0x3A ; colmod
rcall Envoi_cmd
movlw 0x55 ; 16 bits/pixel 65K couleurs rgb 565 '1010101'
rcall Envoi_data
movlw 0x20 ; inverse vidéo off
rcall Envoi_cmd
movlw 0x11 ; ecran off
rcall Envoi_cmd
bsf LCD_CS
Tempo_10ms .100
bcf LCD_CS
movlw 0x29 ; ecran on
rcall Envoi_cmd
movlw 0x36 ; Memory access control
rcall Envoi_cmd
movlw 0x88 ; set orientation '10001000'
rcall Envoi_data
bsf LCD_CS
Tempo_10ms .100
bcf LCD_CS
movlw 0x2A ; set colonne adress
rcall Envoi_cmd
movlw 0x00
rcall Envoi_data
movlw 0x10
rcall Envoi_data
movlw 0x00
rcall Envoi_data
movlw 0x10
rcall Envoi_data
movlw 0x2B ; set page
rcall Envoi_cmd
movlw 0x00
rcall Envoi_data
movlw 0x20
rcall Envoi_data
movlw 0x00
rcall Envoi_data
movlw 0x20
rcall Envoi_data
movlw 0x2C ; write graphic in ram
rcall Envoi_cmd
movlw 0xF8 ; 1 pixel rouge
rcall Envoi_data
movlw 0x00
rcall Envoi_data
bsf LCD_CS
Tempo_10ms .100
bcf LCD_CS
movlw 0x2A ; set colonne adress
rcall Envoi_cmd
movlw 0x00
rcall Envoi_data
movlw 0x20
rcall Envoi_data
movlw 0x00
rcall Envoi_data
movlw 0x40
rcall Envoi_data
movlw 0x2B ; page adress
rcall Envoi_cmd
movlw 0x00
rcall Envoi_data
movlw 0x30
rcall Envoi_data
movlw 0x00
rcall Envoi_data
movlw 0x70
rcall Envoi_data
movlw 0x2C ; write graphic in ram
rcall Envoi_cmd
boucle
movlw 0xF8 ; 1 pixel rouge
rcall Envoi_data
decfsz c1,f
bra boucle
bsf LCD_CS
fin
bra fin
mais pour l'instant cela ne fonctionne pas
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Google [Bot], Roger et 4 invités