Afficheur LCD

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonjour "master",
J'ai en effet dit une ânerie. Réponse trop rapide. le pire c'est que j'avais la doc devant les yeux et que j'en avais routé un samedi!
Merci d'avoir rectifié.
Honteusement, Yves.
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby r8c13master » Wed May 30, 2007 12:00 am

Tout le monde peut se tromper !
Il n'y a bien que ceux qui ne font rien qui ne se trompent jamais
r8c13master
 
Posts: 87
Joined: Fri Jan 17, 2014 4:36 pm

Postby teaniel » Wed May 30, 2007 12:00 am

Bonsoir à tous.

Merci Yves de ta réponse, elle me satisfait pleinement.
(désolé du retard, mais je ne vais pas tous les jours sur internet).

En fait, Master, c'est sur la platine que l'indication manque. Il se trouve que sur le GDM, il y a 16 broches et que la 1 est dans le coin. Par bonheur pas du même coté, sinon j'aurais monté mon afficheur à l'envers. C'est vrai que sur le schéma le brochage est indiqué, mais dans quel sens a-t-il été reproduit sur la carte? C'était l'objet de ma question. Je suppose qu'il doit s'agir d'un petit oubli, car tous les autres connecteurs disposent de cette indication sur la carte.

En fait il va falloir que je réalise une platine d'interface pour pouvoir mettre mon afficheur dans le bon sens et utiliser le rétroéclairage (je bricole souvent la nuit).

Merci en tous cas de vos réponses, c'est gentil de vous dévouer ainsi au service des autres

Cordialement,
Marc
teaniel
 
Posts: 29
Joined: Fri Jan 17, 2014 4:36 pm

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonjour Teaniel,
Dans le temps j'avais du câble en nappe au pas de 2,54mm. Selectronic semble en avoir en 14 conducteurs : http://www.selectronic.fr/article.asp?article_ref_entier=60.0584-9999
en 16 conducteurs : http://www.selectronic.fr/article.asp?article_ref_entier=60.0585-9999
et aussi en 26 et 50 conducteurs.
Cest bien pratique pour ce type de problème.
Amicalement, Yves.'
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby Guest » Wed May 30, 2007 12:00 am

j'ai chargé le programme de référence
d'elektor pour LCD
mon afficheur ne répond pas ??? c'est un DEM16217 classique
dans les montages de la revue.

Si quelqu'un a LE programme simple qui fait fonctionner
l'affichage avec la carte d'application, je suis preneur !!!

NB : mon afficheur ne montre qu'une seule ligne (supérieure) lorsque
je pousse le contraste à fond, est-ce normal ??

Aves mes remerciements pour la personne qui peut me dépanner.

Cordialement

Michel
Guest
 

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonjour Michel,
Selon une documentation ( http://www.ryston.cz/pdf/display/display.pdf ) le DM16217 a la broche 1 côté extérieur. Par contre chez un autre fournisseur ( http://www.maplin.co.uk/media/pdfs/N27AZ.pdf ) la broche 1 est (PRESQUE!!!!) au centre.
Elle est attendue au centre sur la platine du R8C13.
Ces 2 modèles sont des 16 broches (pour rétro-éclairage).
CE COMPOSANT EST UN CLASSIQUE DU GENRE DES MULTI-PRODUCTEURS OU CHACUN FAIT CE QUIL VEUT.
La barre de pavés noirs sur la seule première ligne prouve que ton module LCD est correctement alimenté donc dans le 'bon sens'.
Par contre, qu'appelles-tu 'le programme de référence'?
Amicalement, Yves.'
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby Guest » Wed May 30, 2007 12:00 am

Merci Yves de me répondre !!

quelques précisions :

1/ le R8C13 fonctionne très bien sur mes autres applications,
c'est déjà important ...
2/ l'afficheur est un DM16217SYH de chez Elektor, il est cablé
sur ma platine par l'intermédiaire d'une nappe, avec la masse
à la broche 1, je dirais d'une façon classique (?).

Là où j'ai un peu plus de doutes, c'est sur mon programme,
récupéré sur un site allemand, mais bien corroboré par l'article
d'Elektor sur l'afficheur LCD. Le voici :



/* --------------------------------------------
Routines graphiques pour l'afficheur LCD
--------------------------------------------*/

#include "sfr_r813.h" ;



static unsigned char Port0;

/*-------------------------------------------------
Delais
-------------------------------------------------*/
void delayus (unsigned int micros)
{
unsigned int i;
for (i = 0; i < micros; i++)
{
asm("nop");
}
}

/*-------------------------------------------------
Ecriture d'un caractère sur l'afficheur
-------------------------------------------------*/

void lcd_writeData(unsigned char data)
{
delayus(100);
Port0 = data & 0xF0;
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x04; //rs = 1
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}
/*-------------------------------------------------
Ecriture d'un caractère de contrôle
-------------------------------------------------*/

void lcd_writeCtrl(unsigned char data)
{
Port0 = data & 0xF0;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
Port0 = ((data & 0x0f)<<4);
Port0 = Port0 + 0x01;
p0 = Port0;
p0 = Port0 + 0x08; //E = 1
asm("nop");
p0 = Port0; //E = 0
delayus (100);
}
/*-------------------------------------------------
Initialisation de l'afficheur
-------------------------------------------------*/

void lcd_init(void)
{
delayus(15000);
lcd_writeCtrl(0x28);
delayus(5000);
lcd_writeCtrl(0x28);
delayus(1000);
lcd_writeCtrl(0x28);
delayus(1000);
lcd_writeCtrl(0x0c);
delayus(1000);
lcd_writeCtrl(0x01);
delayus(5000);
}


void main(void)
{
unsigned char dummy;
/*-------------------------------------------------
- Change on-chip oscillator clock to Main clock -
-------------------------------------------------*/

prc0 = 1; /* Protect off */
cm13 = 1; /* Xin Xout */
cm15 = 1; /* XCIN-XCOUT drive capacity select bit : HIGH */
cm05 = 0; /* Xin on */
cm16 = 0; /* Main clock = No division mode */
cm17 = 0;
cm06 = 0; /* CM16 and CM17 enable */
asm("nop"); /* Waiting for stable of oscillation */
asm("nop");
asm("nop");
asm("nop");
ocd2 = 0; /* Main clock change */
prc0 = 0; /* Protect on */

Port0 = 0xff;
p0 = 0xfd;
/*prc2 = 1; //protect off
pd0 = 0xfd; //LCD port, fit 1 input of AD*/



lcd_init();
lcd_writeData(65);


}

Un A est censé apparaître sur l'afficheur !!
Je l'attends toujours...

Avec mes amitiés,

Michel





Guest
 

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonjour Michel,
Je n'ai pas vérifié la totalité du listing que tu as joint mais je crois y avoir reconnu les fonctions décrites dans le numéro d'avril.
Une chose importante concerne l'initialisation du "sens" d'utilisation du port 0 car il est impératif de déverrouiller IMMEDIATEMENT avant d'écrire quoi que ce soit dans ce registre de direction (PD0).
Hors, dans ton initialisation tu écris non pas dans le registre de direction (PD0) mais dans le port de sortie lui-même (p0 = 0xfd; ) après avoir initialisé (pourquoi ?) la variable de sauvegarde (Port0 = 0xff; ).
Ensuite tu as passé en commentaire les 2 instructions qui t'auraient permis d'initialiser véritablement le sens des données :
/*prc2 = 1; //protect off
pd0 = 0xfd; //LCD port, fit 1 input of AD*/

Je te propose de supprimer les 2 lignes inutiles:
Port0 = 0xff;
p0 = 0xfd;
et de "décommenter" les lignes d'initialisation du registre de direction des données du port 0 :
prc2 = 1; //PD0 protect off
pd0 = 0xfd; //LCD port, fit 1 input of AD
Ca devrait s'arranger.
Si problème tu peux récupérer le LCD.ZIP (article sur ELEKTOR.DE :
* Beispielprojekt aus Elektor 2/2006: Ansteuerung des LCD auf dem Application-Board, der seriellen Schnittstelle UART0 und des AD-Wandlers | lcd.zip )
qui est référencé sur le site français par le lien : • Les projets R8C/13 de nos lecteurs allemands
Amicalement, Yves.
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3392
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby triplezero » Wed May 30, 2007 12:00 am

Bonsoir Yves,

Il me semble que le listing de Elektor soit faux, merci de ton message qui m'a permis de déverminer le listing sans avoir tout à refaire.

Cordialement, Laurent.
triplezero
 
Posts: 2
Joined: Fri Jan 17, 2014 4:37 pm

Postby Guest » Wed May 30, 2007 12:00 am

Merci Yves pour les divers renseignements,

le passage en commentaire de :

prc2 = 1; //PD0 protect off
pd0 = 0xfd; //LCD port, fit 1 input of AD

avait été enlevé précédemment, sans changement apparent
mais il est évident qu'il faut conserver cette commande
de configuration du Port 0.
Je suis retourné chercher diverses sources sur le site allemand,
en particulier le LCD.ZIP, comme tu me l'as conseillé.
Après plusieurs essais, rien ne se passe.
Les programmes sont identiques quant aux diverses commandes.

En désespoir de cause, je vais changer d'afficheur.

si quelqu'un peut me donner le listing qui fonctionne
sur sa propre carte Elektor, cela me permettra de lever le doute
sur ma partie electronique !!!

Merci

Michel

Guest
 

PreviousNext

Return to R8C/13 (01-2006)

Who is online

Users browsing this forum: No registered users and 1 guest