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)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#121 Message par satinas » mar. 28 juin 2022 06:51

Bonjour François,
je vois que cela avance, bravo à toi :-)

Je sais pas si Temps-x avait planché sur l'I2C. Il faut faire les routines de base I2C, puis le pilotage de l'afficheur.
Un code que j'avais réalisé pour piloter un afficheur lcd 2x16 avec externsion I2C PCF8574.
Je m'étais inspiré d'un code provenant de cette page, je sais plus lequel
http://www.piclist.com/techref/microchip/i2c.htm
Regarde aussi le site de Paul qui a fait beaucoup d'oled viewtopic.php?f=10&t=1126

Tu peux déjà regarder si l'oled répond par un ACK si tu lui envoies son adresse I2C.
16F84 avec quartz 4 MHz.
Horloge_16F84A_i2c.asm.txt
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par satinas le mar. 28 juin 2022 07:59, modifié 1 fois.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#122 Message par satinas » mar. 28 juin 2022 07:58

PS comme dab je tapes à côté :)
Pour un 16F877, il faut utiliser le module MSSP en mode I2C.
La partie 2 du cours Bigonoff explique tout cela en détail, avec un exemple de programmation d'eeprom I2C.

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

#123 Message par francois77 » mar. 28 juin 2022 09:23

Bonjour,

Merci pour vos retours

Pour Bigonoff, pas de problèmes je connais

Si j'ai posé la question c'est que dans le premier message du sujet, il était fait mention de l'integration de l'I2C dans le programme

Pour le pilotage I2C, je devrais y arriver vu que j'ai pilotés des memoires , des ecrans, des emetteurs et recepteurs FM
C'était juste un gain de temps mais ce n'est pas insurmontable

j'ai commencé mais premiers essais concret sur ma maquette et mon épouse était contente !

Bonne journée
IMG_20220628_091339.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

É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

#124 Message par Temps-x » mer. 29 juin 2022 01:34

Bonsoir satinas, francois77, et tout le forum,

:bravo: pour ta persévérante, comme tu le dis "Encore quelques dizaines d'heures a faire joujou avec mon jouet " seule un passionné peut parlé comme tu le fais, j'apprécie :-D

Reste à intégrés les caractères à dimension variable, c'est loin d'être simple :wink:

Pour le graphique tu ne pourras pas mettre grand chose, au plus tu pourras y logés 3 images(3x1024 Octets) , reste à voir pour un circuit eeprom,
ils ont existe en 1Mo version Spi (plus rapide que I²C)

francois77 a écrit :Source du message Si j'ai posé la question c'est que dans le premier message du sujet, il était fait mention de l’intégration de l'I2C dans le programme

Ben ouais :sad: je n'ai pas eu le temps de le faire, je vais monter un Pic16F876 sur breadboard avec écran I²C, pour faire l'essai seulement en fin de semaine, car actuellement j'écris un programme pour écran et Fonts, encore un truc que je devais faire depuis x-Temps.

Tous les exemples que je fais je les mets sur le forum pour éviter que les gens galère dans leurs projets, ce qui implique beaucoup d'essai et de temps, mais bon.... pour moi..... c'est une passion.

A+
Modifié en dernier par Temps-x le mer. 29 juin 2022 20:52, 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

#125 Message par francois77 » mer. 29 juin 2022 05:34

Bonjour Temps-x

Oui en effet , cela avance doucement mais pour l'instant les premiers résultats son encourageants
Cela fait travailler les neurones et reprendre de l'assembleur quelques années plus tard n'est pas toujours evident.

Ci joint un exemple de police mini "version francois" , mais plus simple pour travailler
le fichier va certainement evoluer, mais le fait de le generer automatiquement quelques soit la police , la taille, le nombre de caracteres a selectionner est marrant a faire ( enfin pour moi )

de l'info et 3 tables
une table commune
une table donnée
une table commande

A+ Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

É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

#126 Message par Temps-x » dim. 3 juil. 2022 17:40

Bonsoir tout le forum,

Temps-x a écrit :Source du message je vais monter un Pic16F876 sur breadboard avec écran I²C, pour faire l'essai seulement en fin de semaine


Ben voila une source 100% ASM en I2C :langue: , voir code en post #1 il y a encore des problèmes à régler, j'en reparlerais sur le forum.

Avec cette routine on va pouvoir ouvrir de grand fichier, mais je n'ai pas terminer, car je ne comprends pas pourquoi l'image n'est pas parfaite.

L'image fait 1024 octets pour un Pic16F876A

Bip.jpg


Je sais, la photo n'est pas d'une grande qualité, mais comme je suis pressé, j'ai fait avec les moyens du bord. :-D

La fonts vient de mon nouveau logiciel, ou je peux inclure toute sorte de fonts de Windows, mais j'ai pas encore fini, soyer patient :wink:

==> 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

#127 Message par francois77 » dim. 3 juil. 2022 21:42

Bonsoir Temps-x,

je constate que tu ne chomes pas non plus

Encore une fois tu va me gratter sur le pouce .....

J'arrive actuellement a extraitre et a convertir toute les polices windows via TheDotFactory et excel

Mais preniers essais sur des grosses polices sont limités par la taille 2032 octet pour une police "arialUnicodeMS_12p"

; police : arialUnicodeMS_12pt
; Premier caractere : > '<
; Dernier caractere : >~'<

Dur a faire rentrer dans un 16f876 sur un BANK de 2048 octet

Mes derniers tests date de cet apres midi ....

je regarderais dans la semaine ton programme pour l'i2c , actuellement je travaille sur les polices et l'integration en ASM

A Suivre et merci pour l'i2c

Amicalement

Francois

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

#128 Message par francois77 » mar. 5 juil. 2022 07:48

Bonjour,

Premiers essais prometteur avec mes nouvelles tables
polices arialUnicodeMS_12pt

Le petit "a" en bas me sert uniquement a valider le bon fonctionnement de mon programme

Mon objectif est presque atteint , je vais pouvoir maintenant integrer toutes les polices de windows, partiellement ou compléte dans la limite de la taille de 2048 ( BANK )

Désolé pour le doublon de l'image, mais je n'arrive pas a la supprimer

Question complementaire : J'ai regardé le programme de Temps-x qui est bien commenté, mais je me pose une question sur le rst qui n'est pas present physiquement sur les carte en I2C
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#129 Message par Jérémy » mar. 5 juil. 2022 08:19

 ! Message de modération :
francois77 a écrit :Source du message Désolé pour le doublon de l'image, mais je n'arrive pas a la supprimer


C'est fait !
Dans l'onglet fichier joints de ton message, tu supprime l'un des deux fichiers ! :-D

Bonne journée et encore bravo pour ce super travail !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

É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

#130 Message par Temps-x » mar. 5 juil. 2022 15:01

Bonjour francois77, Jérémy, et tout le forum,

francois77 a écrit :Source du message mais je me pose une question sur le rst qui n'est pas present physiquement sur les carte en I2C


Normalement j'aurais du le faire, mais ça fonctionne bien comme ça, j'espère que ça ne tombera pas en marche :-D

A titre d'information, voici ce qui devrait être fait

Code : Tout sélectionner

;******************************* "adresse de mon écran I2C" ************************************

      movlw 0x78                          ; adresse 
      movwf i2c_adresse                   
;

;***********************************************************************************************
 

      call i2c_commande                   
; mode commande

;*********************************************************************************************** 

      movlw 0xAE                          
; éteindre l'écran oled

      call i2c_ecrit     
      call i2c_ack                        ; attent le retour ack

      call _200ms                         ; laissé le temps à l'
écran pour le démarrage

;**************"initialisation de l'écran OLED 132x64(SH1106) & 128x64(SSD1306)" ***************

      movlw D'23'                         ; 23 données à écrire pour configurer l'écran oled
      movwf compteur

      clrf lecture                        ; première lecture à zéro

ini_oled

      movf lecture,W                      ; W contient l'
emplacement de la donnée
      call configuration                  
; allé chercher la donnée à l'étiquette configuration 
                                           
      call i2c_ecrit                      ; écrire la donnée dans l'
écran oled 
      call i2c_ack                        
; attent le retour ack

      incf lecture
,F                      ; prochaine lecture dans le tableau 

      decfsz compteur
,F                   ; remonter tant que compteur n'est pas à zéro
      goto ini_oled
     
      call _20ms                          ; laisser le temps à l'
écran de traiter les commandes

      movlw 0xAF                          
; allumer l'écran oled

      call i2c_ecrit     
      call i2c_ack                        ; attent le retour ack

      call i2c_stop                       ; configuration terminé, arrêter I2c    

;*********************************************************************************************** 
ic2_terminer
      bsf led1                            ; si la led ne s'
allume pas, l'adresse I2c n'est pas la bonne 
      nop  
      goto ic2_terminer                   
; terminer

;*********************************************************************************************** 
;*************************** "configuration de l'écran, 23 octets" *****************************
;***********************************************************************************************
           
      org H
'200'       

configuration
      addwf  PCL
,1

      retlw 0xD5                          
; display clock div & param
      retlw 0x80                          
;
      retlw 0xA8                          ; set multiplex & param
      retlw 0x3F                          
;
      retlw 0xD3                          ; set display offset & param 
      retlw 0x00                          
      retlw 0x40                          
; set start line             
      retlw 0x8D                          
; active l'élévation de tension pour l'écran                         
      retlw 0x14                          
; de 7 volts minimum à 15 vols maximum                          
      retlw 0x20                          
; sélection de la façon du balayage de l'écran méthode 1, méthode 2, méthode 3
      retlw 0x00                          ; choix sur la méthode 2
      retlw 0xA1                          ; segremap (A0/A1, flip horizontally)
      retlw 0xC8                          ; comscandec (C0/C8, flip vertically)
      retlw 0xDA                          ; set compins () . . . . .  (default) 
      retlw 0x12                          
      retlw 0x81                          ; contrast minimum 0x00 à un maximum de 0xFF
      retlw 0x7F                          ; réglage au milieu de sa valeur
      retlw 0xD9                          ; set precharge
      retlw 0xF1                          
      retlw 0xDB                          ; set vcom detect
      retlw 0x40                          
      retlw 0xA4                          ; display allon_resume . .  (default) 
      retlw 0xA6                          ; normal display . . . . .  (default)


    End


J'ai voulu voir si l’imperfection d'image sur le Pic16F876A venait de la façon que j'ai fait pour gérer la mémoire programme, pour cela j'ai pris
un Pic18F26K22 avec une configuration identique.

Et voila le résultat

Bip-2.jpg


Il y a plus aucun défaut, l'image est propre :roll: j'en conclus qu'il faut que je trouve un moyen pour gérer la mémoire programme du Pic16F876A autrement.

La source ASM de l'affichage de l'image ci-dessus pour Pic18F26K22 est téléchargeable en post #1

==> 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:


Retourner vers « Langage ASM »

Qui est en ligne

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