-
08/02/2009 - 09h54 LTHOMAS Pb commande LCD
Bonjour, j'ai acheté un écran LCD ayant ces caractéristiques : ICI
Je le pilote avec un PIC. J'ai écris un programme de gestion en C testé sur un petit écran LCD "standard", ça fonctionne.
Par contre dès que je connecte ce nouvel écran, ça ne marche plus.
Le problème vient soit de la méthode de commande, soit de l'initialisation de l'LCD je pense.
Dans la doc on peut lire
Drive Method: 1/16 Duty , 1/5 Bias
Qu'est ce que cela signifie ?
La commande s'effectue en 4bits, l'écran étant connecté sur le PORTD0->PORTD.3
Voici un bout de programme (envoi de commandes, en 4 bits), la fonction delai_us n'étant pas copiée ici, elle fonctionne parfaitement : Code: #define DELAY 20
#define NBLIG 4 // Nombre de lignes
#define NBCOL 20 // Nombre de colonne
#define RS PORTE.0 // Connexion RS
#define E PORTE.1 // Connexion E
void register_screen(char c)
{
char tmp;
RS = 0; // Envoi de commandes
tmp = c>>4; // Envoi des 4 bits de poids fort
tmp |= 0xF0;
PORTD = PORTD&0xF0;
PORTD |= tmp;
E = 1; // Impulsion valitation
delai_us(DELAY);
E = 0;
delai_us(DELAY);
tmp = c|0xF0; // Envoi des 4 bits de poids faible
PORTD = PORTD&0xF0;
PORTD |= tmp;
E = 1; // Impulsion validation
delai_us(DELAY);
E = 0;
delai_us(DELAY);
delai_us(DELAY);
} Et voici l'initialisation. On trouve énormément de procédures d'initialisation sur internet, on ne sais plus ce qui est juste ou pas : Code: void init_afficheur(void)
{
curlig = 0; curcol = 0;
delai_ms(15);
register_screen(0x33);
delai_ms(10);
register_screen(0x33);
delai_ms(10);
register_screen(0x33); // besoin 1 fois pour redemarrer
delai_ms(10);
// Configuration 4 bits :
register_screen(0x32);
register_screen(0x06);
register_screen(0x18);
register_screen(0x0F);
register_screen(0x28);
register_screen(0x01);
register_screen(0x08);
delai_ms(5);
register_screen(0x0C); // Curseur off
} La question est : pourquoi ces codes fonctionnent -ils avec un écran et pas avec l'autre dont la doc est donnée ci dessus ?
Je ne sais pas si quelqu'un peux me répondre, mais je ne sais plus trop quoi tester sur mon montage...
Merci
@+
Thomas
-
08/02/2009 - 10h08 mperu
Re : Pb commande LCD
Bonjour,
Quelle est la référence de cet afficheur? Disposez-vous de sa documentation?
Cordialement,
Michel
-
08/02/2009 - 15h12 LTHOMAS
Re : Pb commande LCD
Bonjour, je n'ai rien mis à part l'annonce donnée dans le #1.
Les drivers sont des HD44780 d'après l'annonce...
@+
Thomas
-
08/02/2009 - 15h30 mperu
Re : Pb commande LCD
Bonjour,
Je suis un peu étonné de voir que cet afficheur est piloté par un HD44780. D'après les documents dont je dispose ce circuit est paramétrable pour un afficheur à 1 ou 2 lignes, le votre en a 4...
Est-ce que absolument rien ne s'affiche sur l'écran? Avez-vous câblé un potentiomètre de réglage du contraste?
Cordialement,
Michel
-
08/02/2009 - 15h58 umfred
Re : Pb commande LCD
De plus pour moi l'écran de l'annonce se commande sur 8 bits et non 4 bits... essaie d'envoyer une commande de 8 bits plutot pour voir -
08/02/2009 - 16h06 mperu
Re : Pb commande LCD
Non, non, la documentation spécifie: "LCD Driver: 4-or 8-bit paralled."
Michel
-
08/02/2009 - 16h12 LTHOMAS
Re : Pb commande LCD
Merci pour vos réponses.
A la mise sous tension, 2 lignes de l'afficheur sont "noires", normal pour tous les afficheurs. Ensuite, au démarrage du pic, ces lignes s'éffacent pour laisser place au curseur qui clignotte.
Par contre, dès que j'essaye d'écrire un caratère, 'A' par exemple, le 'A' ne s'affiche pas mais le curseur passe à la position 2e ligne, 4e colonne par exemple, ou des fois il ne se passe rien du tout...
Pour le contraste c'est ok, j'ai relié la patte à la masse : contraste maximum
Mais c'est surtout l'initialisation où je ne suis pas très sûr de mon code.
Je vais tenter une commande 8 bits pour voir...
merci pour votre aide
-
08/02/2009 - 16h24 umfred
Re : Pb commande LCD
DB0 to DB3 4 I/O MPU Four low order bidirectional tristate data bus pins.
Used for data transfer and receive between the
MPU and the HD44780U.
These pins are not used during 4-bit operation.
As-tu bien connecté ton port sur les DB7 à DB4 de l'afficheur ? -
08/02/2009 - 16h32 LTHOMAS
Re : Pb commande LCD
Oui :
RD0->DB4
RD1->DB5
RD2->DB6
RD3->DB7
| | |