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)
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#151 Message par JMarc » lun. 23 oct. 2017 05:58

Bon courage temps-x :bravo:

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

#152 Message par JMarc » lun. 23 oct. 2017 22:58

Bonjour Satinas, Temps-x, jérémY et à tous

Nouvel écran reçu aujourd'hui. Modèle recommandé par notre ami Satinas (voir post précédent)

Emballage de bonne qualité, inscription ili9341 :-D :-D :-D

Reprise de mes fichier asm et après quelques modifications, j'affiche 2 rectangle noir :langue:
Laissez moi un peut de temps pour mettre tout cela au propre et j'ouvre un post pour lui

Mais la guerre n'est pas fini pour le 5408, je ne lâche pas le morceau dehors!!


Jean-Marc, trop content, comme la première led qui clignote :razz:

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

#153 Message par satinas » mar. 24 oct. 2017 07:19

Bonjour à tous,

voilà enfin une nouvelle qu'elle est bonne, félicitations, JMarc :)

Dans l'ordre je recommandais ce lcd spi, avec son tactile spi, qui est passé de 2,4 à 2,8 pouces entre-temps.
https://www.banggood.com/fr/2_8-Inch-IL ... mds=search
On le trouve moins cher sur Ebay, mais attention, sur certains le contrôleur tactile n'est pas présent.

D'ailleurs, y a du nouveau, Microchip a sorti des 18F avec DMA, 18F24J11, 18F24J50, .... Leur DMA est réservé au spi seulement, c'est à dire que l'on peut envoyer directement au lcd spi des tracés ou bitmaps en ram, pendant que la cpu fait autre chose, calcule des figures géométriques ou exécute d'autres parties du programme.

Ensuite tant qu'à avoir un lcd parallèle, vaut mieux se faire livrer par un vendeur sérieux, et c'est le cas de Banggood.
De toute façon le SPFD5408, il va marcher dans pas longtemps ...
Je n'ai pas trouvé de pic 18F avec DMA sur port PMP, donc pas de DMA sur port parallèle, sauf erreur.
Le gros morceau qui reste c'est le tactile analogique, et je suis demandeur du résultat, car chez moi, ça marche que sur Arduino (je parle d'Arduino juste pour vous énerver :) ).

Bonne journée

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

#154 Message par satinas » lun. 6 nov. 2017 16:29

Bonjour,

J'ai reçu le lcd ce matin, même boutique que vous. Mal emballé, un peu rayé, aucune indication de contrôleur.
Il fonctionne sur Arduino avec la bibliothèque Mcufriend. Celle-ci retourne une id 0x7783, donc il dispose d'un ST7783.
Perdu :)

JMarc, peux-tu tester ce programme sur ton lcd SPFD5408, pour voir ce que cela donne. On peut sélectionner le contrôleur parmi ILI9341, ST7783 et SPFD5408. Chez moi cela marche sur les 2 premiers, reste à tester sur le SPDF5408.
A mon avis, la broche 5V n'est pas raccordée, il faut donc l'alimenter en 3,3V sur sa broche 3,3V.
Merci
18F4525 - Lcd Uno.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

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

#155 Message par Temps-x » mar. 7 nov. 2017 01:52

Bonsoir JMarc, Satinas, et tous le forum,

satinas à écrit :Celle-ci retourne une id 0x7783, donc il dispose d'un ST7783.


Encore un nouveau datasheet à trouver ST7783, as tu l'autocollant 5408 de collé sur ta platine, comme nous ?

Si j'ai le temps, je le teste, si ça fonctionne un problème en moins, car on peut travailler dessus, est construire les bibliothèques.

Merci satinas

A+
: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 : 1225
Enregistré en : novembre 2015

#156 Message par satinas » mar. 7 nov. 2017 07:22

Bonjour Temps-x et à tous

Non, il sont arrivés à l'étape ultime, aucune indication du contrôleur. Ce n'est pas grave pour les Arduinistes, car la bibliothèque Mcufriend est très complète. Elle détecte l'id des ILI9341,ST7783 et sans doute du SPFD5408.
Par contre le code de cette bibliothèque est vraiment pas beau. J'ai juste modifié les fonctions SendCmd() et SendData() pour qu'elles affichent sur le terminal série ce qu'elles envoient au lcd. Pour le SPFD5408 il suffit de modifier l'id juste après le readID().
Les SPFD5408 et ST7783 ont l'air très proches. Les commandes de tracés semblent identiques, mais pas l'init.

Dans le projet ci-dessus, Il y a une ligne en trop dans la macro "c8_d16", Enlever une des 2 lignes "d16 val".
Bonne journée

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

#157 Message par JMarc » mer. 8 nov. 2017 18:37

Bonjour Satinas et Temps-x


Bonnes et mauvaises nouvelles

la mauvaises, cela ne fonctionne toujours pas :furieux: avec ton fichier hex ni sur l’écran concerné 5408 ni sur le ILI9341

la bonne, j'ai édité le fichier asm pour mettre en mode ILI9341 et avec l’écran ILI9341 j'ai 2 rectangle qui s'affiche. cela confirme que j'arrive a charger tes programmes.

bon c'est vrai que le 5408 ne fonctionne toujours pas du coup mais 3 écrans hs je n'y crois pas donc nous allons y arriver. des que je fini mes test sur le touch et les entrées analogiques puis je m'y penche :langue:


exit

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

#158 Message par JMarc » dim. 26 nov. 2017 21:00

Bonjour Satinas

satinas a écrit :Dans le projet ci-dessus, Il y a une ligne en trop dans la macro "c8_d16", Enlever une des 2 lignes "d16 val".
Bonne journée


J'ai effectué la modif

Code : Tout sélectionner

c8_d16    macro     cmd,val   send lcd commande 8 bits et data 16 bits
          c8        cmd
;          d16       val
          d16       val
          endm


mais toujours rien. merci pour le fichier asm, je me régale car j'apprends pleins de nouvelles choses


Merci !

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

#159 Message par satinas » dim. 26 nov. 2017 21:28

Bonsoir JMarc

Je te joins une version un peu améliorée, j'ai passé les commandes du SPFD5408 en 16 bits, car pas sur qu'il les accepte en 8 bits. Le dessin de test est plus complet avec des carrés de couleurs différentes.
lcd_uno.asm.txt
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

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

#160 Message par JMarc » lun. 27 nov. 2017 08:28

Bonjour Satinas, Temps-x et tout le monde

Satinas.........Felicitations chapeau bas, bravo. Les larmes me tombent

:bravo: :bravo: :bravo:

Il y a bien aussi le rectangle vert mais il ne se voit pas sur la photo

image.jpg


J'ai modifier ma config , les commandes sont sur PortA, J'ai vu que l'init a réduit, je vais maintenant décortiquer tout cela

Temps-x va être content

Merci ! Merci ! Merci ! :+1:




Code : Tout sélectionner

;-------------------------------------------------------
;
 lcd uno ILI9341/SPFD5408/ST7783             20/10/2017
;-------------------------------------------------------

;
 #define ILI9341     ; décommenter 1 seule des 3 lignes
  #define SPFD5408
; #define ST7783

;-------------------------------------------------------

;
          list          p=18F4685
;#include  <p18f4685.inc>
            list    p=18F4525
#include <p18f4525.inc>

;          config    OSC   = IRCIO67   ; intosc 8MHz
         config    OSC   
= INTIO67   ; intosc 8MHz
          config    WDT   
= OFF
          config    MCLRE 
= ON
          config    LVP   
= OFF

#define   LCD_RD    LATA,0
#define   LCD_WR    LATA,1
#define   LCD_RS    LATA,2
#define   LCD_CS    LATA,3
#define   LCD_RST   LATA,4
#define   LED       LATA,5

mloop1      equ          0x10
mloop2      equ          0x11
mloop3      equ          0x12
ploop1      equ          0x13
wloop1      equ          0x14
wloop2    equ          0x15
wloop3    equ          0x16

;-------------------------------------------------------
;
 macros
;-------------------------------------------------------
movlf     macro     arg,val   ; pseudo-instruction
          movlw     val
          movwf     arg
          endm

wait_ms   macro     n         
; tempo en ms
          local     m33
          movlf     mloop3
,n
m33       call      wait_1ms
          decfsz    mloop3
,f
          goto      m33
          endm

c8        macro     cmd       
; send lcd commande 8 bits
          movlw     cmd
          call      send_cmd
          endm

c16       macro     cmd       
; send lcd commande 8 bits en 16 bits
          c8        0x00
          c8        cmd
          endm

d8        macro     val       
; send lcd data 8 bits
          movlw     val
          call      send_data
          endm

d16       macro     val       
; send lcd data 16 bits
          d8        
(val)/0x100
          d8        
(val)%0x100
          endm

c8_d8     macro     cmd
,val   ; send lcd commande 8 bits et data 8 bits
          c8        cmd
          d8        val
          endm

c8_d16    macro     cmd
,val   ; send lcd commande 8 bits et data 16 bits
          c8        cmd
          d16       val
          endm

c8_2d16   macro     cmd
,v1,v2 ; send lcd commande 8 bits et 2 datas 16 bits
          c8        cmd
          d16       v1
          d16       v2
          endm

c16_d16   macro     cmd
,val   ; send lcd commande 16 bits et data 16 bits
          c16       cmd
          d16       val
          endm

;-------------------------------------------------------
#ifdef    ILI9341                     ; macros ILI9341
;-------------------------------------------------------
point     macro     x,y,clr           ; afficher point
          c8_2d16   0x2a
,x,x
          c8_2d16   0x2b
,y,y
          c8        0x2c
          d16       clr
          endm

rect      macro     x1
,y1,x2,y2,clr   ; afficher rectangle
          local     m31
,m32
          c8_2d16   0x2a
,x1,x2
          c8_2d16   0x2b
,y1,y2
          c8        0x2c
          movlf     mloop1
,(x2)-(x1)+1
m31       movlf     mloop2
,(y2)-(y1)+1
m32       d16       clr
          decfsz    mloop2
,f
          goto      m32
          decfsz    mloop1
,f
          goto      m31
          endm
#endif

;-------------------------------------------------------
#ifdef    SPFD5408                    ; macros SPFD5408
;-------------------------------------------------------
point     macro     x,y,clr           ; afficher point
          c16_d16   0x20
,x
          c16_d16   0x21
,y
          c16       0x22
          d16       clr
          endm

rect      macro     x1
,y1,x2,y2,clr   ; afficher rectangle
          local     m31
,m32
          c16_d16   0x20
,x1
          c16_d16   0x21
,y1
          c16_d16   0x50
,x1
          c16_d16   0x51
,x2
          c16_d16   0x52
,y1
          c16_d16   0x53
,y2
          c16       0x22
          movlf     mloop1
,(x2)-(x1)+1
m31       movlf     mloop2
,(y2)-(y1)+1
m32       d16       clr
          decfsz    mloop2
,f
          goto      m32
          decfsz    mloop1
,f
          goto      m31
          endm
#endif

;-------------------------------------------------------
#ifdef    ST7783                      ; macros ST7783
;-------------------------------------------------------
point     macro     x,y,clr           ; afficher point
          c16_d16   0x20
,x
          c16_d16   0x21
,y
          c16       0x22
          d16       clr
          endm

rect      macro     x1
,y1,x2,y2,clr   ; afficher rectangle
          local     m31
,m32
          c16_d16   0x20
,x1
          c16_d16   0x21
,y1
          c16_d16   0x50
,x1
          c16_d16   0x51
,x2
          c16_d16   0x52
,y1
          c16_d16   0x53
,y2
          c16       0x22
          movlf     mloop1
,(x2)-(x1)+1
m31       movlf     mloop2
,(y2)-(y1)+1
m32       d16       clr
          decfsz    mloop2
,f
          goto      m32
          decfsz    mloop1
,f
          goto      m31
          endm
#endif

;-------------------------------------------------------
;
 code
;-------------------------------------------------------
                org        0

          movlf   OSCCON
,0x73   ; 8MHz, Tcy=500ns
          movlf   ADCON1
,0x0f
          clrf    TRISA
          clrf    TRISD
          clrf    LATA

          bsf     LCD_CS        
; set commandes lcd
          bsf     LCD_WR
          bsf     LCD_RD
          bsf     LCD_RST

          movlf   ploop1
,6      ; led clignote 3 fois
p10       wait_ms d
'200'
          btg     LED
          decfsz  ploop1
,f
          goto    p10

          wait_ms d
'100'
          bcf     LCD_RST       ; reset lcd
          wait_ms 2
          bsf     LCD_RST
          wait_ms d
'100'

          #ifdef  ILI9341       ; init lcd
          call    init_9341
          
#endif
          #ifdef  SPFD5408
          call    init_5408
          
#endif
          #ifdef  ST7783
          call    init_7783
          
#endif

          bcf     LCD_CS
          rect    0
,      0,      d'239', d'239', 0xffff  ; rectangle blanc rrrrrggggggbbbbb
          rect    d
'10',  d'10',  d'50',  d'50',  0xf800  ; rectangle rouge 1111100000000000
          point   d
'55',  d'55',                  0x0000  ; point noir      0000000000000000
          rect    d
'60',  d'60',  d'130', d'130', 0x07e0  ; rectangle vert  0000011111100000
          point   d
'135', d'135',                 0x0000  ; point noir      0000000000000000
          rect    d
'140', d'140', d'230', d'230', 0x001f  ; rectangle bleu  0000000000011111
          bsf     LCD_CS

forever   bra     forever

;-------------------------------------------------------
;
 sous-programmes
;-------------------------------------------------------
send_cmd  movwf   LATD
          bcf     LCD_RS
          bcf     LCD_WR
          bsf     LCD_WR
          bsf     LCD_RS
          return

send_data movwf   LATD
          bcf     LCD_WR
          bsf     LCD_WR
          return

wait_1s   movlf   wloop1
,d'10'
w91       wait_ms d'100'
          decfsz  wloop1,f
          goto    w91
          return

wait_1ms  movlf   wloop2
,3      ; 2001*500ns -> 1ms
          movlf   wloop3
,d'148'
          goto    w93
w92       clrf    wloop3
w93       decfsz  wloop3
,f
          goto    w93
          decfsz  wloop2
,f
          goto    w92
          return

#ifdef    ILI9341
;-------------------------------------------------------
;
 init ILI9341
;-------------------------------------------------------
init_9341 bcf     LCD_CS
          c8_d8   0x3A
,0x55     ; set clr 16 bits/pixel rgb565, 65k clr
          c8_d8   0x36
,0x88     ; set orientation
          c8      0x29          
; display on
          c8      0x11          
; sleep off
          bsf     LCD_CS
          wait_ms d
'120'
          return
#endif

#ifdef    SPFD5408
;-------------------------------------------------------
;
 init SPFD5408
;-------------------------------------------------------
init_5408 bcf     LCD_CS
          c16_d16 0xb0
, 0x0000
          c16_d16 0xe5
, 0x8000
          c16_d16 0x00
, 0x0001
          c16_d16 0x01
, 0x0100
          c16_d16 0x02
, 0x0700
          c16_d16 0x03
, 0x1030
          c16_d16 0x04
, 0x0000
          c16_d16 0x08
, 0x0202
          c16_d16 0x09
, 0x0000
          c16_d16 0x0A
, 0x0000
          c16_d16 0x0C
, 0x0000
          c16_d16 0x0D
, 0x0000
          c16_d16 0x0F
, 0x0000

          c16_d16 0x10
, 0x0000  ; Power On sequence
          c16_d16 0x11
, 0x0007
          c16_d16 0x12
, 0x0000
          c16_d16 0x13
, 0x0000
          wait_ms d
'50'
          c16_d16 0x10, 0x17B0  ; SAP=1, BT=7, APE=1, AP=3
          c16_d16 0x11
, 0x0007  ; DC1=0, DC0=0, VC=7
          wait_ms d
'10'
          c16_d16 0x12, 0x013A  ; VCMR=1, PON=3, VRH=10
          wait_ms d
'10'
          c16_d16 0x13, 0x1A00  ; VDV=26
          c16_d16 0x29
, 0x000c  ; VCM=12
          wait_ms d
'10'

          c16_d16 0x30, 0x0000  ; Gamma control
          c16_d16 0x31
, 0x0505
          c16_d16 0x32
, 0x0004
          c16_d16 0x35
, 0x0006
          c16_d16 0x36
, 0x0707
          c16_d16 0x37
, 0x0105
          c16_d16 0x38
, 0x0002
          c16_d16 0x39
, 0x0707
          c16_d16 0x3C
, 0x0704
          c16_d16 0x3D
, 0x0807

          c16_d16 0x60
, 0xA700  ; Set RAM area, GS=1
          c16_d16 0x61
, 0x0001
          c16_d16 0x6A
, 0x0000
          c16_d16 0x21
, 0x0000
          c16_d16 0x20
, 0x0000

          c16_d16 0x80
, 0x0000  ; Partial Display Control
          c16_d16 0x81
, 0x0000
          c16_d16 0x82
, 0x0000
          c16_d16 0x83
, 0x0000
          c16_d16 0x84
, 0x0000
          c16_d16 0x85
, 0x0000

          c16_d16 0x90
, 0x0010  ; Panel Control
          c16_d16 0x92
, 0x0000
          c16_d16 0x93
, 0x0003
          c16_d16 0x95
, 0x0110
          c16_d16 0x97
, 0x0000
          c16_d16 0x98
, 0x0000

          c16_d16 0x07
, 0x0173  ; Display on
          bsf     LCD_CS
          wait_ms d
'100'
          return
#endif

#ifdef    ST7783
;-------------------------------------------------------
;
 init ST7783
;-------------------------------------------------------
init_7783 bcf     LCD_CS
;         c16_d16 0xb0, 0x0000
;         c16_d16 0xff, 0x0001
;         c16_d16 0xf3, 0x0008
;         c16_d16 0x00, 0x0001
;         c16_d16 0x01, 0x0100
;         c16_d16 0x02, 0x0700
;         c16_d16 0x03, 0x1030
;         c16_d16 0x08, 0x0302
;         c16_d16 0x09, 0x0000
;         c16_d16 0x10, 0x0000
;         c16_d16 0x11, 0x0007
;         c16_d16 0x12, 0x0000
;         c16_d16 0x13, 0x0000
;         wait_ms d'50'
;         c16_d16 0x10, 0x14b0
;         wait_ms d'10'
;         c16_d16 0x11, 0x0007
;         wait_ms d'10'
;         c16_d16 0x12, 0x008e
;         c16_d16 0x13, 0x0c00
;         c16_d16 0x29, 0x0015
;         wait_ms d'10'
;         c16_d16 0x30, 0x0000
;         c16_d16 0x31, 0x0107
;         c16_d16 0x32, 0x0000
;         c16_d16 0x35, 0x0203
;         c16_d16 0x36, 0x0402
;         c16_d16 0x37, 0x0000
;         c16_d16 0x38, 0x0207
;         c16_d16 0x39, 0x0000
;         c16_d16 0x3c, 0x0203
;         c16_d16 0x3d, 0x0403
;         c16_d16 0x60, 0xa700
;         c16_d16 0x61, 0x0001
;         c16_d16 0x90, 0x0029
;         c16_d16 0x07, 0x0133

          c16_d16 0x10
, 0x14b0
          wait_ms d
'10'
          c16_d16 0x07, 0x0133
          c16_d16 0x61
, 0x0001
          wait_ms d
'120'
          c16_d16 0x03, 0x1030
          c16_d16 0x60
, 0x2700
          c16_d16 0x01
, 0x0000

          bsf     LCD_CS
          wait_ms d
'100'
          return
#endif

;-------------------------------------------------------
          end
;-------------------------------------------------------
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par JMarc le lun. 27 nov. 2017 08:57, modifié 2 fois.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 51 invités