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 l'Assembleur !

Modérateur : mazertoc

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
satinas
Expert
Expert
Messages : 1500
Enregistré en : novembre 2015

#81 Message par satinas » dim. 8 oct. 2017 08:37

Bonjour,
Le contrôleur est forcé en mode 8 bit parallèle 8080, avec ses commandes classiques /LCD_WR, /LCR_RD et le chip selekt /LCD_CS. Certaines pins sont partagées avec le tactile.

Avec Arduino, contrairement à MikroC, les sources des bibliothèques sont fournies, donc chacun y trouvera son compte. Ceux qui veulent l'utiliser en mode Shadok, le feront, et ceux qui comme moi, coincent sur un sujet particulier iront voir dans les sources comment font d'autres, merci à eux.
C'est un confort qui n'existait pas avant, pourquoi s'en priver aujourd'hui. Ce que je voulais dire, c'est que en chargeant la bibliothèque Mcufriend, en 10 minutes, on a le type de contrôleur, et un lcd qui marche (ou pas parce que j'ai eu des déboires avaec un lcd Ebay, mais c'est rare). Et pas besoin d'être un expert en AVR, ou en langage C-- Arduino
Après on est libre de repartir de zéro, et faire sa propre bibliothèque, d'autant plus si on change de cpu.

D'ailleurs mettons ça en pratique tout de suite.
La bibliothèque Mcufriend préconise pour le ILI9342 (MCUFRIEND_kbv.cpp cité plus haut)
Liste des commandes, suivies du nombres d'arguments, et des datas associées
Les commandes 0xE0 et 0xE01, c'est la correction gamma, on peut sans passer dans un premier temps.

Code : Tout sélectionner

  0xB9, 3, 0xFF, 0x93, 0x42,
  0xC0, 2, 0x1D, 0x0A,
  0xC1, 1, 0x01,
  0xC5, 2, 0x2C, 0x2C,
  0xC7, 1, 0xC6,
  0xB8, 1, 0x09,
  0xE0, 15, 0x0F, 0x26, 0x21, 0x07, 0x0A, 0x03, 0x4E, 0x62, 0x3E, 0x0B, 0x11, 0x00, 0x08, 0x02, 0x00,
  0xE1, 15, 0x00, 0x19, 0x1E, 0x03, 0x0E, 0x03, 0x30, 0x23, 0x41, 0x03, 0x0B, 0x07, 0x2F, 0x36, 0x0F,

  0x01, 0,             //Soft Reset
  TFTLCD_DELAY8, 150,  //tempo de 150ms ???  .kbv will power up with ONLY reset, sleep out, display on
  0x28, 0,             //Display Off
  0x3A, 1, 0x55,       //Pixel read=565, write=565.

  0x11, 0,             //Sleep Out
  TFTLCD_DELAY8, 150,
  0x29, 0,             //Display On


Il n'y a plus qu'à essayer, mais est-ce bien un ILI9342 ? :)

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2914
Enregistré en : juillet 2016
Localisation : Terre

#82 Message par Temps-x » dim. 8 oct. 2017 12:11

Bonjour satinas, JMarc, et tous le monde,
__________________________________________________________________________________________________________________
**************************************** Traduction de la page 10 ******************************************
__________________________________________________________________________________________________________________

Description de la fonction de bloc

Interface système MPU

ILI9342 fournit quatre types d'interface système MPU avec une interface parallèle série 8080/6800 et une ligne 3/4-line
interface série.

La sélection des interfaces données est effectuée par des broches IM [3: 0] externes et affichées ci-dessous.
MPU System interface.jpg


Dans l'interface parallèle de la série 8080/6800, les puces de données DB [7: 0] accèdent aux registres.
Page 10 - MPU System interface - 01.jpg


Parallel RGB Interface
ILI9342 prend également en charge l'interface RVB pour afficher une image animée.
Lorsque l'interface RGB est sélectionnée, l'opération d'affichage est synchronisée avec des signaux externes, VSYNC, HSYNC et DOTCLK
et l'affichage d'entrée des données sont écrites en synchronisation avec ces signaux en fonction de la polarité du signal de validation (DE).

Graphic RAM (GRAM)
GRAM est une RAM graphique pour stocker les données d'affichage.
La taille GRAM est de 172,800 octets avec 18 bits par pixel pour une affichage graphique maximum 320(RGB) x240 points

Circuit de génération de tension de niveaux de gris
Le circuit générateur de tension de niveaux de gris génère une tension de transmission du cristal liquide, qui correspond à l'échelle de gris
niveau réglé dans le registre de correction gamma. ILI9342 peut afficher au maximum 262.144 couleurs
__________________________________________________________________________________________________________________
**************************************** Traduction de la page 11 ******************************************
__________________________________________________________________________________________________________________

Circuit d'alimentation électrique
Le circuit d'alimentation du lecteur LCD génère les niveaux de tension comme VREG1OUT, VGH, VGL et VCOM pour
piloter le panneau LCD TFT.

Contrôleur de temporisation
Le régulateur de synchronisation génère tous les signaux de synchronisation pour l'affichage et l'accès GRAM.

Oscillateur
ILI9342 intègre un circuit d'oscillateur RC et produit une fréquence de sortie stable pour l'opération.

Circuit de pilote de panneau
Le circuit du pilote d'affichage à cristaux liquides se compose d'un pilote de source de sortie 960 (S1 ~ S960), et d'un pilote de porte de
240 sorties (G1 ~ G240) et le signal VCOM.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 8 oct. 2017 16:54, modifié 18 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
satinas
Expert
Expert
Messages : 1500
Enregistré en : novembre 2015

#83 Message par satinas » dim. 8 oct. 2017 12:48

Effectivement, Les IM0 à IM3 sélectionnent l'interface. Ce sont des pins du chip ILI93xx et elles sont câblées en dur dans le lcd.
Pour le soft, il faut partir de la bibliothèque Mcufriend, car c'est un lcd Mcufriend. Par contre, cette bibliothèque peut piloter des tas de contrôleurs, et donc il faut essayer de le trouver, tout en supposant à la lecture du net, que c'est un ILI9342. Mais rien n'empêche de tester d'autres bouts de programmes.

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2914
Enregistré en : juillet 2016
Localisation : Terre

#84 Message par Temps-x » dim. 8 oct. 2017 13:05

Bien sur que l'on peu tester d'autre bout de programme, du moment que cela nous renseigne sur le fonctionnalité de notre LCD.

Je traduit les pages et je les mets sur le forum, ça servira à d'autre, enfin les plus importante.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
satinas
Expert
Expert
Messages : 1500
Enregistré en : novembre 2015

#85 Message par satinas » dim. 8 oct. 2017 13:17

Ok pour donner des infos sur les parties accessibles de la programmation du contrôleur.

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2914
Enregistré en : juillet 2016
Localisation : Terre

#86 Message par Temps-x » dim. 8 oct. 2017 13:32

J'espère que je suis pas trop brutal dans mes propos ...


Non pas du tous, et c'est très bien de mon faire par, du moment quand reste correct pas de soucis avec moi, je suis très flexible, mais
extrêmement têtu, qualité ou défaut, je sais pas, parfois c'est un défaut, parfois une qualité pour arrivé à quelque chose.

Si je comprends pas je fais pas, alors pour toi du moment que sa fonction tes contents, et ben pas moi, si j'ai rien compris je suis pas content.

De toutes façon traduire quelque pages, c'est bénéfique pour tous le monde, parce que on peu on discuté autour de celle là.

Je trouve sympa , d'on discuter courtoisement.

humour!! Bon, et ce que la banque ta accordé ton prèt ?
Modifié en dernier par Temps-x le dim. 8 oct. 2017 13:44, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
satinas
Expert
Expert
Messages : 1500
Enregistré en : novembre 2015

#87 Message par satinas » dim. 8 oct. 2017 13:43

moment que sa fonction tes contents


Le fait de faire ses propres bibliothèques, et c'est mon cas, c'est forcément chercher à comprendre, mais dans le cas précis, on a peu de doc, et on est obligé de prendre le problème à l'envers. L'objectif est que cela fonctionne quel que soit le moyen employé, ensuite on prend sont temps et son pied à décomposer et comprendre, car on a une vue d'ensemble.

Eh oui quand je vois la difficulté que j'ai à vous faire admettre mes certitudes à peu-près certaines. Ces lcds j'en bouffe depuis 10 ans. D'ailleurs je suis passé des lcd 16 bits sur gros pic, aus lcd 8 bits et spi en raison du manque certain de pins sur Arduino et Esp (sauf bricolage de type immeuble à étages).
Pour le prêt ça vaut le coup, car Je n'ai qu'un lcd 8 bits, qui date de 2 ans 1/2, il en a vu, mais il est toujours là, et ça serait bien de lui trouver une petit frère. D'ailleurs je l'avais commandé à Banggood, avec la Uno, donc début d'aventure Arduino, et en fait sur la photo c'est le même, donc chez Banggood ç'est plus sérieux et constant.

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

#88 Message par JMarc » dim. 8 oct. 2017 18:34

Bonjour a tous et a toutes :-D

Bon..., non je n'ai pas sombré dans l’alcoolisme, je persévère toujours

J'ai rajouté une transmission uart histoire de savoir ou je suis dans le programme, c'est mieux que les leds :sifflotte:

Code : Tout sélectionner

;*****************************************************************
    
bsf     LCD_CS
    bsf     LCD_WR
    bsf     LCD_RD
    bsf     LCD_RST
    Tempo_10ms .20
    bcf     LCD_RST
    Tempo_10ms .1
    bsf     LCD_RST
    Tempo_10ms .20

    movlw   D
'216'
    
movwf   c1      boucle pour write graphic in ram
    movlw   D
'4'
    
movwf   c2

    movlw   D
'110'
    
movwf   c01

    bcf     LCD_CS

    movlw   0x01 
    rcall   Envoi_cmd 
    MESSAGE 
"R","e","s","e","t"," ","O","K"," "," "

    
movlw   0xB0
    rcall   Envoi_cmd
    movlw   
b'11000000'
    
rcall   Envoi_data

    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        
sleep out
    rcall   Envoi_cmd

    movlw   0x29        
ecran on
    rcall   Envoi_cmd
    MESSAGE 
"E","c","r","a","n"," ","O","N"," "," "

    
movlw   0x13        normal display 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 .20

;  0xB930xFF0x930x42,
    
movlw   0xB9        Backlight control 2
    rcall   Envoi_cmd
    movlw   0xFF        

    
rcall   Envoi_data
    movlw   0x93        

    
rcall   Envoi_data
    movlw   0x42        

    
rcall   Envoi_data
   MESSAGE 
"B","9"," "," "," "," "," "," "," "," "

;  0xC020x1D0x0A,
    
movlw   0xC0        Power control 1
    rcall   Envoi_cmd
    movlw   0x1D        

    
rcall   Envoi_data
    movlw   0x0A        

    
rcall   Envoi_data
   MESSAGE 
"C","0"," "," "," "," "," "," "," "," "

 
0xC110x01,
    
movlw   0xC1        Power control 2
    rcall   Envoi_cmd
    movlw   0x01        

    
rcall   Envoi_data
    MESSAGE 
"C","1"," "," "," "," "," "," "," "," "

 
0xC520x2C0x2C,
    
movlw   0xC5        VCOM control 1
    rcall   Envoi_cmd
    movlw   0x2C        

    
rcall   Envoi_data
    movlw   0x2C        

    
rcall   Envoi_data
    MESSAGE 
"C","5"," "," "," "," "," "," "," "," "

 
0xC710xC6,
    
movlw   0xC7        ;VCOM control 2
    rcall   Envoi_cmd
    movlw   0xC6        

    
rcall   Envoi_data
    MESSAGE 
"C","7"," "," "," "," "," "," "," "," "

;  0xB810x09,
    
movlw   0xB8        Backlight control 1
    rcall   Envoi_cmd
    movlw   0x09        

    
rcall   Envoi_data
    MESSAGE 
"B","8"," "," "," "," "," "," "," "," "
;********************************************************************
    
movlw   0x36        Memory access control
    rcall   Envoi_cmd
    movlw   0x88        
set orientation    '10001000'
    
rcall   Envoi_data

;    bcf     LCD_CS
    Tempo_10ms .10

 
;   bsf     LCD_CS
  
    movlw   0x2A        
set colonne adress
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'10'
    
rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'10'
    
rcall   Envoi_data      

    movlw   0x2B        
set page
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'20'
    
rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'20'
    
rcall   Envoi_data

    movlw   0x2C        
write graphic in ram
    rcall   Envoi_cmd
  
boucle2 
    movlw   0xF8        
1 pixel rouge
    rcall   Envoi_data
    movlw   0x0F
    rcall   Envoi_data
    decfsz  c01
,f
    bra     boucle2

;    bcf     LCD_CS
    Tempo_10ms .10
 
;   bsf     LCD_CS

    movlw   0x2A        
set colonne adress
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'20'
    
rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'40'
    
rcall   Envoi_data


    movlw   0x2B        
page adress
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'30'
    
rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data
    movlw   D
'70'
    
rcall   Envoi_data

    movlw   0x2C        
write graphic in ram
    rcall   Envoi_cmd

boucle
    movlw   0xF8        
1 pixel rouge
    rcall   Envoi_data
    movlw   0xF0
    rcall   Envoi_data
    decfsz  c1
,f
    bra     boucle 
    decfsz  c2
,f
    bra     saut
    bra     boucle_fin
saut
    movlw   D
'215'
    
movwf   c1
    bra     boucle
boucle_fin
    bcf     LCD_CS

    Tempo_10ms .100

    bsf     LCD_CS
    movlw   0x00
    rcall   Envoi_cmd
    bcf     LCD_CS

    Tempo_10ms .100

    movlw   0x28        
ecran off
    rcall   Envoi_cmd
    Tempo_10ms .200
    movlw   0x29        
ecran on
    rcall   Envoi_cmd
    Tempo_10ms .200

 
;0xE0150x0F0x260x210x070x0A0x030x4E0x620x3E0x0B0x110x000x080x020x00,
 
    
movlw   0xE0        Positive gama correction
    rcall   Envoi_cmd
    movlw   0x0F
    rcall   Envoi_data
    movlw   0x26
    rcall   Envoi_data
    movlw   0x21
    rcall   Envoi_data
    movlw   0x07
    rcall   Envoi_data
    movlw   0x0A
    rcall   Envoi_data
    movlw   0x03
    rcall   Envoi_data
    movlw   0x4E
    rcall   Envoi_data
    movlw   0x62
    rcall   Envoi_data
    movlw   0x3E
    rcall   Envoi_data
    movlw   0x0B
    rcall   Envoi_data
    movlw   0x11
    rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data
    movlw   0x08
    rcall   Envoi_data
    movlw   0x02
    rcall   Envoi_data
    movlw   0x00
    rcall   Envoi_data


;0xE1150x000x190x1E0x030x0E0x030x300x230x410x030x0B0x070x2F0x360x0F,
    
movlw   0xE1        Negative gama correction
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_data
    movlw   0x19
    rcall   Envoi_data
    movlw   0x1E
    rcall   Envoi_data
    movlw   0x03
    rcall   Envoi_data
    movlw   0x0E
    rcall   Envoi_data
    movlw   0x03
    rcall   Envoi_data
    movlw   0x30
    rcall   Envoi_data
    movlw   0x23
    rcall   Envoi_data
    movlw   0x41
    rcall   Envoi_data
    movlw   0x03
    rcall   Envoi_data
    movlw   0x0B
    rcall   Envoi_data
    movlw   0x07
    rcall   Envoi_data
    movlw   0x2F
    rcall   Envoi_data
    movlw   0x36
    rcall   Envoi_data
    movlw   0x0F
    rcall   Envoi_data



altern
    bcf     LCD_CS

    movlw   0x28        
ecran off
    rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_cmd
    MESSAGE 
"E","c","r","a","n"," ","O","F","F"," "
    
bsf     LCD_CS
    Tempo_10ms .100
    bcf     LCD_CS


    movlw   0x29        
ecran on  '00101001'
    
rcall   Envoi_cmd
    movlw   0x00
    rcall   Envoi_cmd
    bsf     LCD_CS
    MESSAGE 
"E","c","r","a","n"," ","O","N"," "," "
    
Tempo_10ms .100

    bsf     LATA
,1
    bcf     LCD_RD
    Tempo_10ms .100
    bsf     LCD_RD
    bcf     LATA
,1

    Tempo_10ms .100
    bra     altern

Envoi_cmd
    bcf     LCD_RS
    nop
    movwf   LATD

    nop
    bcf     LCD_WR
    nop
    nop
    nop
    nop
    bsf     LCD_WR
    nop 
    bsf     LCD_RS
    clrf    LATD
    nop
    nop
    
return

Envoi_data
    movwf   LATD
    nop
    bcf     LCD_WR
    nop    
    nop
    nop
    nop
    bsf     LCD_WR
    nop
    clrf    LATD
    nop
    nop
    
return 


toujours pareil, j'ai encore vérifié les branchements :roll:

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#89 Message par Jérémy » dim. 8 oct. 2017 19:00

Si je peux me permettre JMArc , reste aux plus simple, le led c'est très bien.

Tu te rajoutes des difficultés je trouve, avec un UART, en sachant pas si il fonctionne bien !

Fait ta routine d'initialisation, a la fin tu fais clignoter une led trois fois par exemple.
Si à la fin de l'initialisation tu n'as pas un écran noir avec un pixel d'allumé, c'est pas bon.

Courage les gars, j'ai été dans la même panade que vous, mais a force de tester j’ai carrément créma les branchements.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
satinas
Expert
Expert
Messages : 1500
Enregistré en : novembre 2015

#90 Message par satinas » dim. 8 oct. 2017 19:24

Tu as tendance à cumuler les essais dans ton programme. Un seul à la fois, c'est mieux.
Dans le cas McuFriend, après le reset, il faut commencer par 0xB9 et terminer par 0x29 en respectant l'ordre des commandes, ensuite cs low, 200ms, et un test d'écriture ou display on/off au choix.
Garde le moral, au pire ton programme sera fin prêt quand on recevra le 2ème lcd :)
Modifié en dernier par satinas le dim. 8 oct. 2017 19:33, modifié 1 fois.


Retourner vers « Langage ASM »

Qui est en ligne

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