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 1.8 TFT SPI 128x160 V1.1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » lun. 26 janv. 2026 22:28

Bonjour tout le forum,

J'ai acheté dernièrement un Écran 1.8 TFT SPI 128x160 au prix de 2.20 euros port compris (commande groupée), voici la datasheet de c'est écran datasheet

Voici en image
Écran 1.8 spi 160x128.jpg

Je souhaite le mettre en fonction en langage ASM :-D, je sais que sylvain54 avait fait un tutoriel sur cette écran ICI en MicroC

Mais pour moi le MicroC ou l'arduino qui sont très similaires puisque le driver utilisé est quasiment le même à quelque chose près, et je n'y comprends pas grand-chose,

C'est pour cela que je vous demanderai de vous abstenir de me donner des exemples dans ces langages, il y en a bien trop sur internet, par contre
j'ai trouvé aucun exemple en langage ASM.

Sur cet écran, je crois avoir compris que la logique fonctionne en 3.3 volts, ainsi que le rétroéclairage, mais l'écran fonctionne en 5 volts, on y reviendra car sur la carte du circuit imprimé il y a une soudure qu'on peut faire sur J1, sûrement pour changer la tension d'alimentation
de l'écran.

Mise en fonction de l'écran 1.8 TFT SPI 128x160

Pour la mise en fonction de l'écran, je vais me servi d'un microcontrôleur Pic18F26K22, voici son datasheet

j'ai opté pour le mode SPI bit bang, ce qui permets de choisir les pattes quand veut sur le microcontrôleur, de plus ça le rends compatible
pour les microcontrôleurs ne possèdent pas du SPI

Voici mon branchement pour mode SPI

Code : Tout sélectionner

#DEFINE dc      LATA,2                 ; RA2 ==> sélection du mode : commande = 0 , donnée = 1
#DEFINE cs      LATA,1                 ; RA1 ==> activer ou désactiver la transmission
#DEFINE rst     LATA,0                 ; RA0 ==> reset de l'écran

#DEFINE sck     LATC,3                 ; RC3 ==> horloge de synchronisation 
#DEFINE sda     LATC,5                 ; RC5 ==> envoyer les commandes et données sur écran 128x160


Le code ASM a été écrit avec jens file Editor 3.95


J'ai commencé le code mais pas grand-chose pour l'instant, quand ça sera ok je mets le code ici avec le programme compilé pour que vous puissiez
programmer cet exemple dans le Pic18F26K22 si vous le possédez, je ferai également un schéma.

Je rappelle que le compilateur pour ASM 8 bits est entièrement gratuit, vous pouvez le trouver dans MPLAB téléchargeable
sur le site de Microchip voici un lien ou vous pourrez choisir celui qui vous convient ICI


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le mar. 27 janv. 2026 13:14, modifié 10 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran 1.8 TFT SPI 128x160 V1.1
venom
Avatar de l’utilisateur
Expert
Expert
Messages : 1614
Âge : 40
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#2 Message par venom » lun. 26 janv. 2026 22:36

Salut Temps-X

Génial content que tu ouvre un nouveau sujet sur l'asm 8-) ça fait plaisir. Je n'y connais rien en asm je ne vais donc pas être d'une grande utilité, néanmoins je vais suivre ça :razz:

A bientôt :roll:






@++
Mon site web
Mon discord : venom#4888

Écran 1.8 TFT SPI 128x160 V1.1
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#3 Message par satinas » lun. 26 janv. 2026 23:11

Bonsoir à tous,
Salut Temps-X, ça me rappelle le bon vieux temps des lcds avec JMarc.
Comme tu ne veux pas de C, je te fais un résumé du pilotage de ce lcd, le fonctionnement est très proche des lcds ILI9341. Je l'avais testé sur Arduino et en C sur pic, pas d'ASM pic.

Code : Tout sélectionner

// registres st7735s

// system function command

#define ST7735_MODE_SLEEP_ON        0x10  // sleep on
#define ST7735_MODE_SLEEP_OFF       0x11  // sleep out and booster on
#define ST7735_MODE_INVERSE_OFF     0x20  // display inversion off
#define ST7735_MODE_INVERSE_ON      0x21  // display inversion on
#define ST7735_MODE_DISPLAY_OFF     0x28  // display off
#define ST7735_MODE_DISPLAY_ON      0x29  // display on
#define ST7735_SET_COL              0x2a  // column address set
#define ST7735_SET_ROW              0x2b  // row address set
#define ST7735_WR_GRAM              0x2c  // memory write (enable writing of image data)
#define ST7735_SET_MA_CTL           0x36  // memory data access control
#define ST7735_SET_DISP_PX_FRM      0x3a  // interface pixel format

// panel function command

#define ST7735_SET_PW_CTL1          0xc0  // power control 1
#define ST7735_SET_PW_CTL2          0xc1  // power control 2
#define ST7735_SET_PW_CTL3          0xc2  // power control 3 (normal  mode/full colors)
#define ST7735_SET_PW_CTL4          0xc3  // power control 4 (idle    mode/8    colors)
#define ST7735_SET_PW_CTL5          0xc4  // power control 5 (partial mode/full colors)
#define ST7735_SET_VC_CTL1          0xc5  // vcom control 1


// pilotage du lcd

Init  commande 8 bits         datas 8 bits

      ST7735_SET_PW_CTL1      0xa2 0x02 0x84  ; set power control params
      ST7735_SET_PW_CTL2      0xc5
      ST7735_SET_PW_CTL3      0x0a 0x00
      ST7735_SET_PW_CTL4      0x8a 0x2a
      ST7735_SET_PW_CTL5      0x8a 0xee
      ST7735_SET_VC_CTL1      0x0e            ; set vcom control param
      ST7735_SET_DISP_PX_FRM  0x05            ; 16 bit/pixel, 65k colors rgb565
      ST7735_MODE_INVERSE_OFF                 ; inverse video off
      ST7735_MODE_SLEEP_OFF                   ; sleep off
      ST7735_MODE_DISPLAY_ON                  ; display on

Zone  commande 8 bits         datas 16 bits   ; envoi octet haut en premier

      ST7735_SET_COL          x1 x2           ; set gram rect
      ST7735_SET_ROW          y1 y2
      ST7735_WR_GRAM                          ; write gram

Fill  envoi de (x2-x1+1)*(y2-y1+1) couleurs 16 bits, envoi octet haut en premier


Pour l'orientation on envoie la commande ST7735_SET_MA_CTL suivie d'un de ces octets :
0x00, 0xa0, 0xc0, 0x60, 0x80, 0xe0, 0x40, 0x20

Écran 1.8 TFT SPI 128x160 V1.1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#4 Message par Temps-x » mar. 27 janv. 2026 02:59

Bonjour satinas,

Je suis en mode SPI bit bang, voici ma configuration,

Définition des pattes

Code : Tout sélectionner

#DEFINE dc      LATA,2                 ; RA2 ==> sélection du mode : commande = 0 , donnée = 1
#DEFINE cs      LATA,1                 ; RA1 ==> activer ou désactiver la transmission
#DEFINE rst     LATA,0                 ; RA0 ==> reset de l'écran

#DEFINE sck     LATC,3                 ; RC3 ==> horloge de synchronisation 
#DEFINE sda     LATC,5                 ; RC5 ==> envoyer les données sur écran 128x160


Initialisation de l'écran

Code : Tout sélectionner

initialiser
      bsf cs                              
; transmission arrêté 
      tempo 1                             
; macro : temps(10 ms)

      bcf rst                             ;
      tempo 1                             ; macro : temps(10 ms)
      bsf rst                             ;
      tempo 1                             ; macro : temps(10 ms)
 


Mode commands et données

Code : Tout sélectionner

;----------------- "fonction pour mettre l'écran 128x160 en mode commande" -----------------

command_tft7735
      bcf dc                              
; DC = 0  en mode commande
      bra spi                          

;------------------ "fonction pour mettre l'écran 128x160 en mode donnée" ------------------ 
donner_tft7735
      bsf dc                              
; DC = 1 en mode donnée
      bra spi                             
;     

;************************************* "mode SPI bit bang" ************************************* 
spi
      movwf envoyer 

      movlw D
'8'                          ; envoies de 8 bits 
      movwf bits

      bcf cs                              
; marche            

ev1_tft7735
      btfss envoyer
,7                     ; 1 lecture sur le bit 7
      bcf sda                             
; envoie 0
      btfsc envoyer
,7                     ; 1 lecture sur le bit 7
      bsf sda                             
; envoie 1
      bsf sck                             
; 
      nop
      bcf sck                             
;
      rlncf envoyer,F                     ; rotation des bits à gauche sans carry
      decfsz bits
,F
      bra ev1_tft7735

      bsf cs                              
; arrêt

      return


L'écran c'est pour continuer mon oscilloscope, mais en version couleur, et en plus grande dimension, je vais le monter sur mon générateur de fonction MAX038 qui peut me fournir des fréquences sinusoïdales, fréquence carrée, fréquence en dent de scie, jusqu'à 10 MHz, de plus on peut faire de la distorsion sur les 3 games, le MAX038 possède aussi un PWM jusqu'à 10 Mhz


==> A+
Modifié en dernier par Temps-x le mar. 27 janv. 2026 13:35, modifié 4 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran 1.8 TFT SPI 128x160 V1.1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » mar. 27 janv. 2026 03:26

Re

:roll: ça affiche des parasites, :sifflotte: bon c'est déjà pas mal hein ..... Si on continu comme ça on va faire revenir JMarc.

IMG_20260127_031653.jpg


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le mar. 27 janv. 2026 17:07, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran 1.8 TFT SPI 128x160 V1.1
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#6 Message par satinas » mar. 27 janv. 2026 16:09

Bonjour,
Le SPI bit-bang n'est pas très rapide. Il n'y a pas de module SPI sur ton pic ?
Autre chose, pourquoi pilotes-tu le CS à chaque octet envoyé, autant le faire une seule fois au début et à la fin d'une séquence d'envoi de données au lcd. Je ne pense pas que cela soit un problème, mais tu gagneras du temps.

Écran 1.8 TFT SPI 128x160 V1.1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » mar. 27 janv. 2026 16:48

Bonjour satinas, et tout le forum,

satinas a écrit :Source du message Le SPI bit-bang n'est pas très rapide.

C'est pour que tout le monde puisse utiliser le code, même avec un Pic16F84 qui ne possède pas de SPI

satinas a écrit :Source du message Il n'y a pas de module SPI sur ton pic ?

Bien sûr que si, et je sais le mettre en oeuvre

Voici un résultat

Drapeau Fr.jpg


:sifflotte: c'est pas du chauviniste le drapeau......


Autre chose, je voudrais savoir si on peut lire la couleur du pixel sur cet écran :?:, car mettre 61440 octets en sram, j'aurais un gros problème vu que ce PIc18F26K22 ne possède que 3896 octets

Merci ! satinas

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le mar. 27 janv. 2026 19:25, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran 1.8 TFT SPI 128x160 V1.1
venom
Avatar de l’utilisateur
Expert
Expert
Messages : 1614
Âge : 40
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#8 Message par venom » mar. 27 janv. 2026 18:09

Temps-x a écrit :Autre chose, je voudrais savoir si on peut lire la couleur du pixel sur cet écran :?:, car mettre 61440 octets en sram, j'aurais un gros problème vu que ce PIc18F26K22 ne possède que 3896 octets[/b]


Dans quel intérêt tu souhaites récupérer la couleur d'un pixel ?






@++
Mon site web
Mon discord : venom#4888

Écran 1.8 TFT SPI 128x160 V1.1
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#9 Message par satinas » mar. 27 janv. 2026 18:29

La lecture de pixels, c'est moins simple. Il me semble que cela fonctionnait sur celui-ci, avec un ILI9341:
viewtopic.php?f=11&t=542

Écran 1.8 TFT SPI 128x160 V1.1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » mar. 27 janv. 2026 19:41

Bonjour venom,

venom a écrit :Source du message Dans quel intérêt tu souhaites récupérer la couleur d'un pixel ?


Pour plusieurs raisons, par exemple si tu fais un remplissage par diffusion (voir ICI) et cibles les couleurs que tu ne veux pas toucher ou toucher.

Un autre exemple : si tu ne veux pas réécrire sur un pixel qui aurait une couleur différente, bref.... il y a encore plein d'autres raisons.

satinas a écrit :Source du message La lecture de pixels, c'est moins simple. Il me semble que cela fonctionnait sur celui-ci, avec un ILI9341:


Je vais regarder dans la datasheet du ST7735 voir s'il y a quelque chose dedans, en espérant que je comprenne leur language Anglo-Saxonnes. :mad:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité