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)
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
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
Reprise de mes fichier asm et après quelques modifications, j'affiche 2 rectangle noir
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
Jean-Marc, trop content, comme la première led qui clignote
Nouvel écran reçu aujourd'hui. Modèle recommandé par notre ami Satinas (voir post précédent)
Emballage de bonne qualité, inscription ili9341
Reprise de mes fichier asm et après quelques modifications, j'affiche 2 rectangle noir
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
Jean-Marc, trop content, comme la première led qui clignote
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
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
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)
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
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
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)
Bonsoir JMarc, Satinas, et tous le forum,
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+
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+
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
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
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)
Bonjour Satinas et Temps-x
Bonnes et mauvaises nouvelles
la mauvaises, cela ne fonctionne toujours pas 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
Bonnes et mauvaises nouvelles
la mauvaises, cela ne fonctionne toujours pas 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
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
Bonjour Satinas
J'ai effectué la modif
mais toujours rien. merci pour le fichier asm, je me régale car j'apprends pleins de nouvelles choses
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
écran tactile 2.4 TFT LCD 240 x 320 (version ASM)
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.
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.
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)
Bonjour Satinas, Temps-x et tout le monde
Satinas.........Felicitations chapeau bas, bravo. Les larmes me tombent
Il y a bien aussi le rectangle vert mais il ne se voit pas sur la photo
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
Satinas.........Felicitations chapeau bas, bravo. Les larmes me tombent
Il y a bien aussi le rectangle vert mais il ne se voit pas sur la photo
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
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 : Aucun utilisateur enregistré et 64 invités