- 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
au lieu d'écrire
Code : Tout sélectionner
;GlcdControlBus &= ~(1<<RS); // Send LOW pulse on RS pin for selecting Command register
bcf GlcdControlBus, RS ; met la pin RS à l'état bas (ce n'est pas un pulse
on pourrait faire du presque C
Code : Tout sélectionner
;GlcdControlBus &= ~(1<<RS); // Send LOW pulse on RS pin for selecting Command register
movf GlcdControlBus, W ; met la pin RS à l'état bas (ce n'est pas un pulse
andlw ~(1<<RS)
movwf GlcdControlBus
l'accès au bit d'une variable est quans même plus facile en assembleur.
Notons qu'au lieu de
Code : Tout sélectionner
#define RS 0
#define RW 1
#define EN 2
#define CS1 3
#define CS2 4
on pouvait écrire
Code : Tout sélectionner
#define RS 0x01
#define RW 0x02
#define EN 0x04
#define CS1 0x08
#define CS2 0x10
ce qui évitait les << , mais pourquoi ne pas faire travailler le compilateur et/ou l'assembleur ?
Bonne journée
JJE a écrit :
Code : Tout sélectionner
;GlcdControlBus &= ~(1<<RS); // Send LOW pulse on RS pin for selecting Command register
movf GlcdControlBus, W ; met la pin RS à l'état bas (ce n'est pas un pulse
andlw ~(1<<RS)
movwf GlcdControlBus
Bonne journée
je vais essayer sur mplab voir ce qu'il ce passe merci de l'info
pour ma part, je reprend l'ordi
Code : Tout sélectionner
#DEFINE LCD_WR PORTB,2 ; RB2 | 35 | S | Data Write afficheur
#DEFINE LCD_RD PORTB,3 ; RB3 | 36 | S | Data Read afficheur
#DEFINE LCD_CE PORTB,4 ; RB4 | 37 | S | Chip Enable
#DEFINE LCD_CD PORTB,5 ; RB5 | 38 | S | C/D
LCD_DATA EQU PORTD
et
Code : Tout sélectionner
Envoi_cmd
bsf LCD_CD ; etat haut pour commande
bcf LCD_CE ; Chip Enable
movf CMD,w
movwf LCD_DATA
bcf LCD_WR ; Data Write afficheur actif etat bas
nop
bsf LCD_WR
return
Envoi_data_16
bcf LCD_CD ; etat bas pour données
bcf LCD_CE ; Chip Enable
movf DATA_L,w
movwf LCD_DATA
bcf LCD_WR ; Data Write afficheur actif etat bas
nop
bsf LCD_WR
movf DATA_H,w
movwf LCD_DATA
bcf LCD_WR ; Data Write afficheur actif etat bas
nop
bsf LCD_WR
bsf LCD_CE ; Chip disable
return
Tu as lâché la macro, je l'aimais bien, moi :)
Les variables intermédiaires ne me semblent pas nécessaires, W suffit
Code : Tout sélectionner
envoi_aff_16 macro x1,x2
movlw (x2) % 0x100
call Envoi_data
movlw (x2) / 0x100
call Envoi_data
movlw x1
call Envoi_cmd
endm
non pas laché, elle est toujours la. la commande est
Code : Tout sélectionner
envoi_aff_16 0x24,0x1700
qui appelle la macro
Code : Tout sélectionner
envoi_aff_16 macro x1,x2
movlw x1
movwf CMD
movlw (x2) / 0x100
movwf DATA_H
movlw (x2) % 0x100
movwf DATA_L
call Envoi_cmd
call Envoi_data_16
endm
J'ai remis la commande et les données dans l'ordre que tu m'as préconise et changé l’état des commandes
satinas a écrit :ok, mais le lcd veut la commande en dernier, donc "call Envoi_data_16" avant "call Envoi_cmd" dans la macro.
L'init de mon programme C était conforme à celle du datasheet, voir ci-dessus.
a ok, j'avais mal interprété sorry
voila, changé
Code : Tout sélectionner
envoi_aff_16 macro x1,x2
movlw x1
movwf CMD
movlw (x2) / 0x100
movwf DATA_H
movlw (x2) % 0x100
movwf DATA_L
call Envoi_data_16
call Envoi_cmd
endm
pour JJE, j'ai un message d'erreur avec ta commande
Code : Tout sélectionner
andlw ~(1<<RS)
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Me voici de retour, j’ai passé un dur moment et j’espère que c’est fini au moins pour ce qui est de l’opération car je sais qu’une suite m’attend ! Pour pas vous laisser dans le mystère, j’ai simplement une tumeur à la vessie dont je ne sais pas si pour l’instant elle est cancéreuse ou pas. L’opération a été très compliquée car ils ne peuvent pas la traiter normalement en raison d’un accident cardiaque que j’ai eu fin juillet. Les traitements sont incompatibles et nécessite des soins inhabituels. Bref, cela ne m’empêche pas de positiver et continuer à me consacrer à ma passion très épaulée par le forum.
Je vois que vous n’avez pas chômé et que les choses ont bien avancés. Je n’ai pas encore pris le tps de rebrancher la maquette, je rentre juste de l’hosto et je suis encore un tantouillé dans le gaz par les traitements.
J’ai lu tous vos posts, je suis un peu dépassé mais je crois comprendre que vous avec simplifié les commandes en utilisant des macros, il faudra juste me dire où je dois les placer dans le programme.
Satinas (que je salue) pose la question de savoir ce que je souhaite faire avec cet afficheur.
Dans un premier tps, pouvoir afficher du texte d’une manière simple sans complication car ce qui est essentiel pour moi c’est d’apprendre à programmer un afficheur GLCD en utilisant les caractères stockés dans la RAM comme si j’utilisais un LCD avec le HD44780.
Ensuite, pouvoir si cela ne complique pas trop, utiliser des tailles de caractères différents.
Bien sûr que par la suite, insérer un bitmap pour afficher un logo ou un dessin sera la cerise sur le gâteau mais je pense qu’il ne faut pas brûler les étapes et de remettre ce sujet à un autre chapitre.
Je suis très content de vous avoir rejoint J’ai vu qu’il y a de la diversité dans les langages de programmation qui doit bien faciliter la vie pour aboutir à des projets pointus et cela m’intéresse fortement.
Ce projet d’afficheur LGCD est une première pour moi, et c’est parce que j’ai eu l’idée de vouloir réaliser un méga ampli à tubes que j’ai eu besoin d’un afficheur grand format pour y afficher un LOGO et des symboles personnalisés. J’avais lu sur un site, qu’il était plus facile de programmer un GLCD qu’un LCD
C’est pour cette raison que je me suis ancré l’idée dans la tête. J’ai gratté énormément la toile pour y trouver des exemples et c’est un collègue qui m’a parlé de FUTURA et la suite vous la connaissez.
En revanche, j’ai fourni à ce même collègue les références de Fantas’PIC qu’il ne connaissait pas.
Voilà j’attends de vous relire pour me remettre dans le bain..
JP
En attendant le soft, vérifie que les nombreuses connexions du lcd sont correctes.
Pour cela je fais un petit programme qui alterne toutes les secondes l'état des sorties vers l'afficheur, pour vérifier au voltmètre que ça "clignote" bien. Attention tout de même avec le signal "read", à l'état bas il met le port data de l'afficheur en output.
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
satinas a écrit :Bonjour nondediode, je vais aussi bientôt passer sur le billard pour une histoire d'adénome, cela doit te parler :)
Courage, je penserai à toi et rassure toi la médecine est au top aujourd'hui
En attendant le soft, vérifie que les nombreuses connexions du lcd sont correctes.
J'ai vérifié à plusieurs reprises c'est nickel, enfin... y'a tjrs celle qu'on a pas vu
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 38 invités