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

[Librairie] Routines gestion LCD sur 18F
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1639
Enregistré en : juillet 2016
Localisation : Terre

#11 Message par Temps-x » dim. 28 juin 2020 16:43

Re

==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> Après essai voici les résultats

ligne 1 pour lcd 2x16, 4x16 (H'80')
ligne 2 pour lcd 2x20, 4x20 (H'80')

ligne 2 pour lcd 2x16, 4x16 (H'C0')
ligne 2 pour lcd 2x20, 4x20 (H'C0')

ligne 3 pour lcd 4x16 (H'90')
ligne 3 pour lcd 4x20 (H'94')

ligne 4 pour lcd 4x16 (H'D0')
ligne 4 pour lcd 4x20 (H'D4')

A+
Modifié en dernier par Temps-x le lun. 29 juin 2020 01:47, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#12 Message par Clitisvoud » dim. 28 juin 2020 21:03

Merci Temps_X,

Alors j'avais bien lu sur le site de Paulfjujo mais pas fais gaffe qu'il y a des 4x16 et des 4x20. Tout se recoupe. Il va donc falloir gérer cette différence dans les routines suivant le LCD employé, pas compliqué à faire.

Je suppose que tu as voulu dire 4x20 à la dernière ligne de ton post.

[Librairie] Routines gestion LCD sur 18F
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1639
Enregistré en : juillet 2016
Localisation : Terre

#13 Message par Temps-x » lun. 29 juin 2020 01:51

Bonsoir,

Clitisvoud a écrit :Source du message Je suppose que tu as voulu dire 4x20 à la dernière ligne de ton post.

Bien vu, j'ai corrigé, comme je reprends le travaille demain, je vois tout le reste dans la semaine, mais promis je te laisse pas tomber.

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

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#14 Message par Clitisvoud » lun. 29 juin 2020 09:26

Hello,

Alors je vais faire des routines LCD_INIT différentes suivant le LCD à employer.

Je te remercie de passer du temps dessus, je serai prêt à penser que ce décalage serait une chose normale liée au paragraphe sur les registres Latx dont Bigonoff parle dans son livre sur la migration vers 18F.
Ce qui me fait dire cela c'est que je me suis rendu compte que ce "bug" ne se produit que sur les opérations sur les ports mais pas sur les Latx. J'ai parcouru vite fait et il faut que je relise tout çà pour mieux comprendre le mécanisme.

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#15 Message par Clitisvoud » lun. 29 juin 2020 09:44

Hello,
De retour avec l'esprit plus clair, c'est terrible de faire de l'asm le soir tard après une bonne journée active... on code n'importe quoi en se demandant pourquoi MPLab est aussi bugué :lol:

C'est bien ce que je disais juste au-dessus, merci à Paufjujo d'avoir mis le doigt dessus. C'est bien les PORTD et PORTC qu'il faut changer en LATD et LATC, tout fonctionne normalement désormais. Je me rappelle que j'avais déjà eu le souci avec le projet 4L1C3 qu j'avais résolu en réinstallant tout. Des fois c'est bien de replonger le nez dans la doc.

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#16 Message par Clitisvoud » lun. 29 juin 2020 19:37

Hello,

La routine de validation des commandes fonctionne bien en scrutant le Busy Flag.
Avec la tempo:

Code : Tout sélectionner

; ------------------------- affichage d'une commande
;                             avec tempo    
LCD_aff_commande_old
    movwf    Port_Datas      ; movwf PORTD
    RS0                               ; bcf LATC,5    
    En1                               ; bsf LATC,6        
    call    tempo700µs
    En0                              ; bcf LATC,6
    return


Sans tempo en scrutant le Buzy Flag. Sur le code de dessus c'est codé en relatif (#define et macros) et donc un peu illisible pour qui n'est pas dans le programme, j'ai mis en clair sur celle-ci.

Code : Tout sélectionner

; ------------------------- affichage d'une commande
;                            ; avec scrutation du buzy flag    
LCD_aff_commande
    clrf    PORTD
    movwf    LATD        ; envoi sur le port datas
    bcf        LATC,5        ; RS0    envoi d'
une commande
    bsf        LATC
,6        ; En1 front montant du créneau de validation     
    movlw    b
'10000000' ; bit 7 en entrée pour lire le busy flag
    movwf    TRISD
    bsf        LATC
,4        ; RW1 on passe en lecture du lcd

    
; ----------------- Test du busy Flag (bit7 du port Datas
    movff    PORTD
,Reg_1 ; sauvegarde du port data
    movlw    b
'10000000' ; on isole le bit 7
    andwf    Reg_1
,f
buzy_c
    btfsc    STATUS
,Z
    bra        buzy_c
    
; -----------------
    
    call    tempo50µs
    bcf        LATC
,4        ; RW0 on repasse en écriture
    movlw    b
'00000000'    ; bit 7 remis en sortie
    movwf    TRISD    
    bcf        LATC
,6        ; En0 front descendant du creneau de validation
    return



Ca fonctionne super bien, par contre pas du tout pour l'affichage des datas. Je continue à chercher pourquoi.

PS: c'est bon c'est tombé en marche.

[Librairie] Routines gestion LCD sur 18F
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 777
Âge : 34
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#17 Message par venom » mar. 30 juin 2020 06:00

Ça boss dur par ici 8-)
:bravo: F6FC0





@++
En fait tout est une question de BIT ? :-D

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#18 Message par Clitisvoud » mar. 30 juin 2020 13:52

Ouais ouais, la fatigue, la sueur, la détresse et tout çà ...


Si çà intéresse quelqu'un de tester voici les fonctions pour gérer un LCD sous 18F testées sur un 18F4525 cadencé à 8mhz interne :

LCD_INIT ; initialisation du LCD
LCD_AFF_COMMANDE ; envoi d'une commande au LCD
LCD_AFF_DATAS ; envoi du caractère a afficher.
LCD_LIGNE ; choix de la ligne d'écriture
LCD_COLONNE ; choix de la colonne
LCD_CURSEUR_BLINK ; fait clignoter le curseur
LCD_CURSEUR_OFF ; éteint le curseur
LCD_CURSEUR_FIXE ; curseur fixe
LCD_CURSEUR_HOME ; ramène le curseur ligne 1 colonne 1
LCD_SCROLL_DROITE ; fait défiler le texte vers la droite
LCD_SCROLL_GAUCHE ; fait défiler le texte vers la gauche
LCD_AFF_OFF ; désactive l'affichage
LCD_CLEAR ; efface le LCD

Le .zip contient:
- un fichier LCD_18F.inc qui contient les #define et les macros à placer en include en entête du programme principal.
- un fichierLCD_18F_8Mhz.asm qui contient les routines à placer en include en fin de programme
- et un programme d'exemple avec un 18F4525 cadencé à 8Mhz, 18F4525_LCD_exemple.asm.

Librairie LCD 18F.zip


Utilisation:
Il faut juste appeler LCD_INIT au début du programme ensuite appeler les fonctions au besoin.

Code : Tout sélectionner


        LCD_INIT 
; initialisation du lcd

        
; exemple pour affichier un A
        movlw    
'A'
        LCD_AFF_DATAS


Branchements:
- Les pins data D0 à D7 --> PORTD
- les pins RW, RS, E --> 4,5,6 du PORTC
Tout est documenté dans les fichiers.

- Pour changer les pins il suffit de faire les modifs sur les #define dans le fichier LCD_18F.inc
- Pour utiliser sur une autre fréquence d'horloge il suffit de modifier les tempos dans le fichier LCD_18F_8Mhz.asm

https://www.youtube.com/watch?v=5TNyVVXGxHM&feature=youtu.be

Je suis intéressé par les retours.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

[Librairie] Routines gestion LCD sur 18F
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1639
Enregistré en : juillet 2016
Localisation : Terre

#19 Message par Temps-x » mar. 30 juin 2020 21:03

Bonsoir Clitisvoud, venom, et tout le forum,

Je suis actuellement très pris, mais je vais prendre le temps de réponde, :bravo: pour cette décontraction.

Clitisvoud a écrit :Source du message C'est bien ce que je disais juste au-dessus, merci à Paufjujo d'avoir mis le doigt dessus.

Ben voilà, un problème de plus de résolu, et pourtant Paufjujo et moi même on te l'avais dit.

Pour économiser les pattes du pic il faudrait le faire sur 4 bits, c'est plus rapide à brancher pour les essais.

As tu essayer de créer tes propre caractères ? car je vois pas de création de caractère dans ta bibliothèque.

Merci ! pour le partage.

==> A+
Modifié en dernier par Temps-x le mer. 1 juil. 2020 00:26, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

[Librairie] Routines gestion LCD sur 18F
Clitisvoud
Avatar de l’utilisateur
Débutant
Débutant
Messages : 39
Enregistré en : octobre 2019

#20 Message par Clitisvoud » mar. 30 juin 2020 23:19

Temps-x a écrit :[Ben voilà, un problème de plus de résolu, et pourtant Paufjujo et moi même on te l'avais dit.

C'est bien pour çà que je l'ai fait :wink:, je ne me rappelais plus de cette histoire de Latx.

La génération de caractères ne m'intéresse pas trop pour l'instant, je vais d'abord transposer tout çà pour les 16F.


Retourner vers « Langage ASM »

Qui est en ligne

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