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 OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#51 Message par paulfjujo » sam. 2 oct. 2021 17:37

venom a écrit :
paulfjujo a écrit : :sifflotte: en fin d'année ..ce serait plutot pour 2022


:lol: Et oui Temps-X le temps passe vite. C'est bientôt 2022 oops Il faut relever la tête des pics et de l'ASM
@++


the last trial ..
verification avec 8 lignes de 21 chars et offset X=2

Code : Tout sélectionner


message
       db 
"12345-A-9012345678901"         ; ‚  0  
       db 
"123456-B-012345678901"         ; ‚  22
       db 
"1234567-C-12345678901"         ; ‚  44
       db 
"12345678-D-2345678901"         ; ‚  66
       db 
"123456789-E-345678901"         ; ‚  88
       db 
"1234567890-F-45678901"         ; ‚  110
       db 
"12345678901-G-5678901"         ; ‚  132
       db 
"123456789012-H-567890"         ; ‚  154
       
       
===========================================
       locate 0,2,0        ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
      print 21
,0,0,0,0    ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
      locate 1
,2,0                   
      print 21
,22,0,0,0               
      locate 2
,2,0                 
      print 21
,44,0,0,0              
      locate 3
,2,0                 
      print 21
,66,0,0,0            
      locate 4
,2,0                   
      print 21
,88,0,0,0              
      locate 5
,2,0                 
      print 21
,110,0,0,0           
      locate 6
,2,0              
      print 21
,132,0,0,0  
      locate 7
,2,0              
      print 21
,154,0,0,0   
         
      


OLED_SH1106_8_lignes_de_21chars_2021-1002.jpg



en haut ,à droite .. un residu de 2 pixels ?
2 + 128 +2=132 !

enlevé avec une RAZ OLED sur 132 pixels au lieu de 128

Code : Tout sélectionner


cls_oled
      locate 0
,0,0
      movlw D
'8' 
      
movwf loop7
      movlw D
'132'                        was 128     
      movwf loop8
      
...etc 
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#52 Message par Temps-x » sam. 2 oct. 2021 18:55

Bonsoir paulfjujo, venom, et tout le forum,

paulfjujo a écrit :Source du message :sifflotte: en fin d'année ..ce serait plutot pour 2022

oops après le code ASM, c'est autour du temps, une de plus, si ça continu je vais finir comme - - - - - -

venom a écrit :Source du message :lol: Et oui Temps-X le temps passe vite.

Ben ouais, et j'en sais quelque chose...

paulfjujo a écrit :Source du message en haut ,à droite .. un residu de 2 pixels ?


Il faudrait savoir combien de pixel comporte ton écran sur une longueur, en affichage réelle.


Il est possible que ton écran est gardé des impuretés, le mieux c'est de le débrancher du Pickit3 et coupé l'alimentation, est de refaire l'essai.
Ses écran gardes la mémoire même après les avoir débranché, :roll: mais par prudence je vais refaire le même test que toi.

ce qui change dans le mode CLS, c'est c'est 3 lignes, c'est tout, ça permet de revenir au point de départ avant d'atteindre la longueur de 129 pixels

Mon CLS fait 128x64 pour les deux type d'écrans(reste à voir si ton écran fonctionne pas d'une manière différente, avec ses chinois va savoir)

Code : Tout sélectionner


cls_oled

      incf posy
,F                         ; avance d'une ligne en dessous de la première
 
      clrf posx                           ; longueur à zéro

      rcall position_oled                 ; faire appelle à la fonction effectuant cette manipulation



Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 132x64 (1106)

1106.jpg


Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 128x64 (1306)

1306.jpg


Voici les deux réunis

1306 & 1106.jpg


Dans tout les cas le graphique s'affiche bien, donc, le reste doit suivre, nota tu peux le refaire en C, chez moi tout est ok.

J'ai refait le programme pour Pic18F27K42, en SPI software, ça fonction bien. j'affiche les 8 figures sans aucune erreur.

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#53 Message par francois77 » jeu. 19 mai 2022 16:56

Bonjour,

J’ai entrepris d’utiliser un 16f876 pour commander ces afficheurs. Je me suis inspiré du programme en tête de de ce sujet (merci pour les commentaires vraiment complet).

Actuellement, je simule sous Proteus et utilise MPLAB IDE

Je n’ai pas encore testé en réel les modules, je viens de les recevoir et j’ai été surpris pour la taille minuscule !
Il me reste cependant quelques interrogations sur ce module sdd1306 et sur les données du programme Oled.ASM

La table ascii
Le contenu de la Table m’a interrogé sur son contenu. En la dépouillant j’ai constaté qu’il n’y a que la moitié de la table qui est utilisé pour avoir les 127 symboles d’une table ascii.
A quoi correspond le reste ?

La fonction agrandissement des caractères par le SDD1306 est-elle possible ?

La gestion du graphique
Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?
Avec mon 16f876, je suis mal partie, mais pas vraiment indispensable pour mon projet

Passer a un 18f ?
Mes soucis c’est le prix (projet a plusieurs dizaine d’exemplaire, la taille et le format (pas de cms pour moi)
Si vous avez une solution, je suis preneur

Cordialement
Francois

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#54 Message par paulfjujo » jeu. 19 mai 2022 20:58

bonsoir

francois77 a écrit :La gestion du graphique
Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?


en effet 127 char sont suffisant pour les codes ascii

ce genre d'afficheur GRAPHIQUE demande beaucoup de RAM ..
128x64 pixels => 128x8 bytes
En rom on peut stocker d'autre format de police de characteres..


Un 18 F27K42 ?
128Ko de programme
8192 byte de RAM

moins cher maintenant qu'un 18F26K22
Aide toi, le ciel ou FantasPic t'aidera

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#55 Message par Temps-x » ven. 20 mai 2022 02:27

Bonsoir francois77, et tout le forum,

Le faire avec un Pic16f876, c'est possible mais tout dépend du projet.

francois77 a écrit :Source du message En la dépouillant j’ai constaté qu’il n’y a que la moitié de la table qui est utilisé pour avoir les 127 symboles d’une table ascii.


On n''est plus sur un écran LCD ou tout les caractères existe déjà en Gram :roll: avec c'est écran il faut créer c'est propre caractère.

La plus petite fonts fait 5 x 8bits, bien sur tu peux en créer d'autre bien plus grosses, ou prendre les fonts existant sur le nets

Mais la taille de ton programme va augmenter,

En supposant que tu prennes la plus petite Fonts 5 x 8bits = 5 octets pour 255 caractères tu auras 255 x 5 octets = 1275 octets

Si tu double la talle de tes caractères, tu multiplies par 1275 octets x 2 = 2550 octets

Sachant que ton microcontrôleur fait 8192 octets de taille programmes et que tu vas au moins utiliser 2000 octets pour écriture de ton programme

2550 octets +2000 octets = 4550 octets

Reste 8192 octets - 4550 octets = 3642 octets (1 image fait 1024 octets )

francois77 a écrit :Source du message A quoi correspond le reste ?

Le reste et libre de création, car le clavier c'est toi qui le fait

francois77 a écrit :Source du message La fonction agrandissement des caractères par le SDD1306 est-elle possible ?

ouais, comme je te l'explique plus haut

francois77 a écrit :Source du message Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?

Pas toujours, ça c'est pour remplir un écran, tu n'est pas obliger d'avoir une image qui remplisse l'écran, voir en Post #1 ou j'ai fait une vidéo avec l'avion

francois77 a écrit :Source du message Avec mon 16f876, je suis mal partie, mais pas vraiment indispensable pour mon projet

Je connais pas ton projet, mais si tu nous l'explique on pourras voir si on peu le réaliser avec ton Pic

Ne t'inquiète pas pour le CMS les Pic18F on aussi des gros boiter, quand au prix tous dépend du Pic.

Ton écran c'est du SPI ou I²C

Ta bien fait de prendre ASM pour ton microcontrôleur, car avec MikroC ou autre langage de haut niveau tu pourrais dire adieu à ton projet, car toute la place serait occupé pour des fonctions simple :lol:

dehors!!


==> A+
Modifié en dernier par Temps-x le ven. 20 mai 2022 19:30, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#56 Message par francois77 » ven. 20 mai 2022 08:41

Bonjour,

Merci pour vos retours extra rapides

Pour compléter mon post précèdent, je dois avouer que j’avais eu l’idée au départ de faire une bibliothèque générale pour le pilotage des modules SSD1306 qui englobe les fonctions texte et les fonctions graphiques à l’identique d’un banal 2x16 lignes.

Pas assez de place sur mon 16f876 et encore car en ajoutant un eprom cela deviendrait possible mais peut-être pas très rapide

Pour l’instant j’arrive à piloter la fonction texte avec la fonte 5x8 sans trop de problème en mode SPI
J’ai commencé à écrire ma propre font en 16x8, car je n’ai pas trouvé sur le net de bibliothèque prête à l’emploi.

Si vous avez des liens ou une méthode pour faire des polices sur mesure je suis preneur
Pour mon projet en cours j’ai la solution de faire une police limité de type numérique + 3 caractères
Exemple 101,1 Mhz (pilotage d’un module TEA 5767). La table résultante sera de faible en taille.

Matériel
J’ai à dispo 3 modules 2 SPI et 1 I2C
Pour l’instant, pilotage uniquement du module SPI, on verra plus tard pour l’I2C

Maquette
J’ai une maquette que je pilote avec un ICD3, mais je vais en refaire une nouvelle car l’ancienne commence à être fatiguée a force de faire des motifs, de plus l’alimentation du module écran est en 3.3v.
Le PIC

Pour le pic18f, à voir j’ai déjà piloté un 18f4520 donc cela devrait être possible de le refaire.
Le problème c’est le prix qui est nettement plus chère qu’un 16f876 et mon est objectif est de sortir une carte pour moins de 10€

Globalement je pense que vous avez raison sur le mauvais choix d'un 16f876, mais je l'ai a dispo et c'est un peu un challenge pour moi de le faire tourner avec cette ecran. De plus l'interet de ce passage en 16f est une bonne solution pour comprendre les procedures du SSD1306

Merci vos retours d’info, je reviendrais pour vous tenir au courant de l’avancement du projet.
Il me reste la table à constituer et quelques routines pour les afficher

Cordialement
Francois

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#57 Message par Temps-x » ven. 20 mai 2022 16:32

Bonsoir,

francois77 a écrit :Source du message Si vous avez des liens ou une méthode pour faire des polices sur mesure je suis preneur

Faire des fonts c'est très long, tu peux en trouver :sifflotte: chez Arduino, je n'ai pas encore décortiquer tout ce que j'ai téléchargé, de plus c'est en langage Arduino, qui ressemble bizarrement à MicroC téléchargement ICI

Attention, sur Arduino la lecture de ton écran se fait en mode 1, pas en mode 2

Quand au Pic16F876, il est suffisamment rapide pour ton écran, pas besoin d'une bête de course pour se genre d'écran

Pour faire une station de ratio ça suffit amplement, j'ai regardé rapidement la datasheet du TEA 5767 il fonctionne en I²C

Quand au logiciel pour créer les fonts tu peux utiliser FastLCD, le seule problème c'est qu'il faut savoir s'en servir.

Voici un lien ou tu peux le télécharger ICI il est protégé par un mot de passe qui est : 320volt.com

J'ai commencé un programme pour Pc pour ce genre d'écran mais j'ai pas fini, il fonctionne bien mais reste plein de truc à finir.


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#58 Message par Claudius » ven. 20 mai 2022 20:21

Bonjour,

Temps-x a écrit:
... de plus c'est en langage Arduino, qui ressemble bizarrement à MicroC téléchargement ici...

Pour la simple raison qu'il n'y a pas de langage Arduino (dixit) ... c'est du Langage C et/ou du C++ que la famille Arduino et consort supportent de base

Pour infos, tous mes projets sous Arduino & ESP32 sont développés, testés, instrumentés et simulés sous un bon vieux Linux en C et C++
(gain de temps de centaines d'heures de travail en évitant de flasher à tout bout de champ ;-)

NB: La simulation d'un périphérique se faisant en s'aidant d'une instrumentation de son protocole de communication (i.e. I2C, SPI, UART, etc.) en s'assurant point par point que sa datasheet est parfaitement respectée

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#59 Message par Temps-x » ven. 20 mai 2022 21:49

Bonsoir Claudius, et tout le forum,

Claudius a écrit :Source du message c'est du Langage C et/ou du C++ que la famille Arduino et consort supportent de base

:-D Mon flaire légendaire ne s'était pas trompée,

Claudius a écrit :Source du message Pour infos, tous mes projets sous Arduino & ESP32 sont développés, testés, instrumentés et simulés sous un bon vieux Linux en C et C++ (gain de temps de centaines d'heures de travail en évitant de flasher à tout bout de champ ;-)

:roll: Sans trop de discours, je dirais chacun son truc...,


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

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#60 Message par francois77 » sam. 21 mai 2022 17:43

Bonjour,

Pour le fun, j'ai essayé de comprendre le fonctionnement de la table fontmono 9 pt 7

Je n’arrive pas à faire la liaison entre les 2 tables. Pour moi on devrait trouver 1FFF en position 834 835

Si vous avez une idée je suis preneur

Pour mon appli je vais créer ma propre table lorsque j’aurais fait la maquette afin d’avoir un vrai visuel de l’afficheur

A+

Francois

Ps : dommage de ne pas pouvoir transmettre un fichier Excel
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage ASM »

Qui est en ligne

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