Problème d'accent sur les caractères sur afficheur LCD

electrique5

Senior Member
Bonjour
voila jutilise des afficheurs LCD du type 1602 et 1604
mais jusqu'à présent j'utilisait pas les accents sur les caractères mais cette fois j'aimerais bien les utilisés
du coup j'ai modifié le firmware du picaxe 18M2 pour qu'il puisse gérer les accents
je me suis basé sur ce site http://electromag1.wifeo.com/fabriquer-un-lcd-serie-avec-un-picaxe-.php
sauf que sur le site ils utilise un 20M2 alors que moi j'utilise en 18M2 j'ai regardé leur code et j'ai ajouter au mien ce code pour le "é"

Code:
'Définition è en caractère n°1
	pinsB=1*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%00010
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
j'ai testé pas de souci il affiche bien le "é" en envoyant
serout 7,N2400_4,(254,128,"* ",1," *")
j'ai donc continuer avec le "è" avec le code :
Code:
'Définition è en caractère n°2
	pinsB=2*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01000
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
pas de problème il affiche bien le "è" en envoyant
serout 7,N2400_4,(254,128,"* ",2," *")

j'ai fait de meme avec le ê,à,ç,ù le problème quand je continue avec le "ü" et le "ë"
qui correspond au code et au caractère N° 7 et 8:
Code:
'Définition ü en caractère n°7
	pinsB=7*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10011
	pulsout enable,1
	pinsB=%01101
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ë en caractère n°8
	pinsB=8*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%0000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
la par contre ca me fait merdé les 2 premiers caractères é et è situé en caractère N° 1 et 2 il affiche des symbole qui représente rien du tous
par contre le "ü" et le "ë" sont bien affiché correctement
j'enlève le code qui correspond au "ü" et le "ë" et le é et è reviennent normalement je comprend pas pourquoi ?
alors que j'utilise la même sytaxe que les autres caractère
 

electrique5

Senior Member
PS voici le code complet du firmware du LCD

Code:
#picaxe 18M2
#define use_LCD
#define use_welcome
symbol line_length	= 16
symbol baud		= N4800_32
symbol spare0		= C.0
symbol spare1		= C.1
symbol spare2		= C.2
symbol backlight		= C.2
symbol RX		= C.5
symbol enable		= C.6
symbol rs		= C.7


#ifdef use_OLED	
EEPROM $00, ("EN ATTENTE...   ")
#else
EEPROM $00, ("EN ATTENTE...   ")
#endif

EEPROM $10, ("                ")
EEPROM $20, ("                ")
EEPROM $30, ("                ")
EEPROM $40, ("                ")
EEPROM $50, ("                ")
EEPROM $60, ("                ")
EEPROM $70, ("                ")
EEPROM $80, ("                ")
EEPROM $90, ("                ")
EEPROM $A0, ("                ")
EEPROM $B0, ("                ")
EEPROM $C0, ("                ")
EEPROM $D0, ("                ")
EEPROM $E0, ("                ")
EEPROM $F0, ("                ")

init:
gosub LCD_init

#ifdef use_welcome
let b1 = 0
gosub msg
low rs
let pinsB = 192
pulsout enable,1
high rs
let b1 = 1
gosub msg
#endif


main:
serin RX,baud,b1
if b1 < 253 then
let pinsB = b1
pulsout enable,1
goto main
else if b1 = 254 then
low rs
serin RX,baud,b1
let pinsB = b1
pulsout enable,1
high rs
goto main
else if b1 = 253 then
serin RX,baud,b1
gosub msg
goto main
else
serin RX,baud,b1
let pinsC = b1 & %00000111 | %10000000
goto main
end if

LCD_init:
let dirsC = %11000111
let dirsB = %11111111

#ifdef use_OLED
pause 500
let pinsB = %00111001
pulsout enable,1
let pinsB = %00001100
pulsout enable,1
let pinsB = %00000001
pulsout enable,1
pause 7
setfreq m16
let pinsB = %00000010
pulsout enable,1
let pinsB = %00000110
pulsout enable, 1

#else	
pause 15
let pinsB = %00110000
pulsout enable,1
pause 5
pulsout enable,1
pulsout enable,1
setfreq m16
let pinsB = %00111000 
pulsout enable,1
let pinsB = %00000001
pulsout enable,1
pause 8
let pinsB = %00000010
pulsout enable,1
let pinsB = %00000110
pulsout enable,1
pause 1
let pinsB = %00001100
pulsout enable,1
#endif

gosub cardef

high rs
return


cardef:
'Les caractères sont dessinés dans une matrice 8 lignes x 5 colonnes
'La dernière ligne est réservée au curseur.

'Définition é en caractère n°1
	pinsB=1*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%00010
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition è en caractère n°2
	pinsB=2*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01000
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ê en caractère n°3
	pinsB=3*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%00100
	pulsout enable,1
	pinsB=%01010
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition à en caractère n°4
	pinsB=4*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01000
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00001
	pulsout enable,1
	pinsB=%01111
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%01111
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ç en caractère n°5
	pinsB=5*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%00000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%01100
	pulsout enable,1

'Définition ù en caractère n°6
	pinsB=6*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01000
	pulsout enable,1
	pinsB=%00100
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10011
	pulsout enable,1
	pinsB=%01101
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ü en caractère n°7
	pinsB=7*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10011
	pulsout enable,1
	pinsB=%01101
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ë en caractère n°8
	pinsB=8*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%0000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
	
	
return		



msg:
b2 = b1 & %00001111 * line_length
b3 = b2 + line_length - 1
for b4 = b2 to b3
read b4,b1
pinsB = b1
pulsout enable,1
next b4
return
 

MGU

Senior Member
Bonjour,

Je n'ai pas essayé avec un 18M2, pour les raisons données sur le site, mais il n'y a pas de raison

Première modif à tenter, passer la fréquence à 32MHz au lieu de 16 dans le init: (baud est réglé à 32MHz)
On est aux limites des possibilités des picaxes et il faut pédaler le plus vite possible

A suivre

MM (alias Mag1, alias MGU)
 

electrique5

Senior Member
je crois que je devrais certainement passé sur un 20M2 ce qui m'oblige de refaire une platine pour ca mais bon je n'aurais pas le choix
car on dirais que sur le 18m2 il passe que 6 caractères a partir du 7ème ca merde
je testerais sur un 20m2 plus tard
 

MGU

Senior Member
Je suis pas sûr que le problème vienne du 18M2.

As tu corrigé le setfreq dans LCD_Init

MM
 

electrique5

Senior Member
je vien de testé un autre technique c'est de remplacer la ligne pour le caractère "é"
pinsB=1*8|$40
par
pinsB=10*8|$40
puis
puis par
pinsB=11*8|$40
pour le "è" etc... jusqu'a
pinsB=17*8|$40
pour le dernier caractère
en envoyant
serout 7,N2400_4,(254,128,"* ",10," *")
pour le "é" pas de problème ca fonctionne jusqu'au 6ème caractère les 2 derniers j'ai rien sur l'écran
en gros je me retrouve au meme point
 

MGU

Senior Member
J'ai remplacer la ligne
setfreq m16 par setfreq m32
c'est pire j'ai plus rien sur l'écran
Bizarre...

Peux tu poster le programme appelant?
D'ou vient le LCD?

Ah, un truc:

N2400_4 sur l'appelant et N4800 sur le LCD ! Y a pas un problème ?

MM



MM
 

electrique5

Senior Member
Programme

Voici le fichier pour le LCD View attachment LCD.bas
j'envoie simplement serout 7,N2400_4,(254,128,"* ",1," *") pour testé le caractère en question
En ce qui concerne le LCD lui même il vien d'ebay

PS le LCD que j'utilise pour testé c'est un LCD 2004 du genre La mais meme avec des 1602 c'est pareille
autrement c'est pas grave je n'utiliserais pas le "ü" et le "ë"
 
Last edited:

electrique5

Senior Member
non ca fonctionne pas j'ai fait
Code:
serout 7,N4800_4,(254,128,"* ",1," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",2," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",3," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",4," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",5," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",6," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",7," *")
pause 2000
serout 7,N4800_4,(254,128,"* ",8," *")
pause 2000
et

Code:
serout 7,N2400_4,(254,128,"* ",1," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",2," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",3," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",4," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",5," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",6," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",7," *")
pause 2000
serout 7,N2400_4,(254,128,"* ",8," *")
pause 2000
Afin de les afficher un par un tous fonctionne sauf le 1 et 2 qui correspond au "é" et "è"
par contre il fonctionne correctement si j'enlève le code du "ü" et "ë" qui correspond au code suivant :

Code:
'Définition ü en caractère n°7
	pinsB=7*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%10011
	pulsout enable,1
	pinsB=%01101
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1

'Définition ë en caractère n°8
	pinsB=8*8|$40
	low rs
	pulsout enable,1
	high rs:pause 10
	pinsB=%01010
	pulsout enable,1
	pinsB=%0000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%10001
	pulsout enable,1
	pinsB=%11111
	pulsout enable,1
	pinsB=%10000
	pulsout enable,1
	pinsB=%01110
	pulsout enable,1
	pinsB=%00000
	pulsout enable,1
 

MGU

Senior Member
Résumé d'expériences:
Les problèmes rencontrés au cours de ce projet étaient le plus souvent dû à un problème de vitesse d'exécution
Conclusion finale : le firmware LCD doit fonctionner à le vitesse max de 32MHz pour la série M2
La vitesse de la liaison série minimum liée à ces 32MHz est 4800 bauds
Les serin et serout doivent être synchronisés sur la même vitesse. Une liaison avec des vitesses différentes est certainement aléatoire (j'en appelle aux spécialistes)

Si ça ne fonctionne pas en respectant ces conditions, je donne ma langue au chat.

MM
 

electrique5

Senior Member
Je vien de faire un test sur un 20M2 j'ai du modifier un peu le code autrement celui d'origine du site ne fonctionne pas bref
maintenant tous fonctionne normalement avec tous les caractères
seulement maintenant je n'est plus le message d'accueil du LCD j'ai seulement la ligne EEPROM $10 qui fonctionne et qui s'affiche sur la 2ème ligne
sur mon code précédent j'ai EEPROM $00 qui affiche un message sur la 1ère ligne mais sur mon nouveau code il s'affiche plus.
par contre j'ai remarqué que c'est la ligne gosub cardef qui empèche l'affichage du message EEPROM $00
dès que je vire cette ligne le message s'affiche par contre je n'est plus les caractère si je remet cette ligne j'ai les caractère mais plus le message d'acceuil
voici mon nouveau code

View attachment LCD.bas
 

MGU

Senior Member
Je vien de faire un test sur un 20M2 j'ai du modifier un peu le code autrement celui d'origine du site ne fonctionne pas bref
maintenant tous fonctionne normalement avec tous les caractères
seulement maintenant je n'est plus le message d'accueil du LCD j'ai seulement la ligne EEPROM $10 qui fonctionne et qui s'affiche sur la 2ème ligne
sur mon code précédent j'ai EEPROM $00 qui affiche un message sur la 1ère ligne mais sur mon nouveau code il s'affiche plus.
par contre j'ai remarqué que c'est la ligne gosub cardef qui empèche l'affichage du message EEPROM $00
dès que je vire cette ligne le message s'affiche par contre je n'est plus les caractère si je remet cette ligne j'ai les caractère mais plus le message d'acceuil
voici mon nouveau code

OK, mais j'aimerais savoir ce que tu as modifié dans le code de mon site, que j'en fasse profiter tout le monde, j'ai pas vu de changement.

Je ne sais plus pourquoi j'ai supprimé EEPROM$0, mais il devait y avoir une raison, peut être un conflit avec l'ajout de caractères, ce que ta manip confirme.
Solution: décaler le message d'accueil en $10 et $20
Mais à quoi sert un message d'accueil ?

MM
 

electrique5

Senior Member
Je pense que vous avez raison il doit y avoir conflit avec les caractères meme en décalant d'un cran de $10 et $20 seule $10 est pris en compte dans l'accueil.
de toute facon je vais m'en passé j'en n'ai pas besoin.
bref j'ai plus qu'a refaire un nouveau typon pour les LCD j'ai regardé le prix d'un 18M2+ et un 20M2 ca sera quand meme plus rentable
Merci de votre aide
 

electrique5

Senior Member
Juste pour info elle servent a quoi les autres lignes ?
EEPROM $20, ("This is msg 2 ")
EEPROM $30, ("This is msg 3 ")
EEPROM $40, ("This is msg 4 ")
EEPROM $50, ("This is msg 5 ")
EEPROM $60, ("This is msg 6 ")
EEPROM $70, ("This is msg 7 ")
EEPROM $80, ("This is msg 8 ")
EEPROM $90, ("This is msg 9 ")
EEPROM $A0, ("This is msg 10 ")
EEPROM $B0, ("This is msg 11 ")
EEPROM $C0, ("This is msg 12 ")
EEPROM $D0, ("This is msg 13 ")
EEPROM $E0, ("This is msg 14 ")
EEPROM $F0, ("This is msg 15 ")
 

MGU

Senior Member
Le frameware d'origine picaxe donne la possibilité d'introduire des 16 messages préenregistrés de 0 à 15
si il y a
#define use_welcome
alors, le sous programme #ifdef use_welcome s'exécute et affiche les deux premiers messages 0 et 1
si on décale en supprimant le premier message n°0, il faut remplacer 0 et 1 dans le sous programme par 1 et 2
Les messages sont affichés par une commande 253. Il y a un sous programme msg: qui calcule les caractères à sortir de L'eprom
Revoir les exemples dans la page du site sur le LCD série.

En résumé, il n'y a pas eu de modif
Peux tu me confirmer que le 18M2+ ne fonctionne pas avec ce programme, ce qui m'étonne un peu.

MM
 

electrique5

Senior Member
je laisse les ligne
EEPROM $00, ("MON MESSAGE ")
EEPROM $10, ("www.picaxe.com ")
seule le $10 s'affiche
je décale d'un cran en supprimant la ligne $00
EEPROM $10, ("MON MESSAGE ")
EEPROM $20, ("www.picaxe.com ")
seule le $10 s'affiche et pas le $20
Bon c'est pas grave je vais pas m'enquiquiner avec ca en tous cas je vous confirme qu'avec un 18M2+ le code passe pas
 

MGU

Senior Member
Ben oui, c'est normal, il faut tenir compte du décalage dans le code, si on ne lui dit pas, il ne peut pas le deviner

Code:
; display welcome message if desired
#ifdef use_welcome	
	let b1 = 0			; message 0 on top line [B][COLOR="#FF0000"] IL FAUT REMPLACER  0 par 1 Puisque c'est le message 1 et plus le 0[/COLOR][/B]
	gosub msg			; do it

	low rs			; command mode
	let pinsB = 192		; move to line 2, instruction 192
	pulsout enable,1  	; pulse the enable pin to send data.
	high rs			; character mode again
	
	let b1 = 1			; message 1 on bottom line  [B][COLOR="#FF0000"] IL FAUT REMPLACER 1 par 2[/COLOR] [/B]
	gosub msg			; do it
#endif
MM
 

electrique5

Senior Member
oui exact seulement mais sur le 1er let b1 peut importe que je mette 1,2 ou 3 ca n'affiche rien la première ligne du LCD est vide
par contre le 2ème let b1 si je change il change bien de message si je met 3 il affiche bien le message du EEPROM $30 sur la seconde ligne du LCD
seule la 1ère ligne fonctionne pas
 

electrique5

Senior Member
merci mais je vais abandonné le 18M2 uniquement au cause du prix
chez gotronic un 18M2+ coute 5,50 &#8364; et un 20M2 coute 3,55 &#8364; sur la quantité je serais quand même gagnant
 

PieM

Senior Member
merci mais je vais abandonné le 18M2 uniquement au cause du prix
chez gotronic un 18M2+ coute 5,50 € et un 20M2 coute 3,55 € sur la quantité je serais quand même gagnant
Je suis un peu comme MGU, outre le prix, je n'aime pas trop le 18M2. C'était le premier de la série...
 

MGU

Senior Member
Bonjour,

Merci PieM pour ces précisions.

Il est vrai que ce protocole série One Wire à sens unique est assez scabreux.
Cela dit, j'ai monté ces adaptateurs sur tous mes afficheurs LCD 1602, 1604, 2004 tous fonctionnent, sur différents montages, et c'est bien pratique!
Un seul problème avec un test sur un circuit équipé d'un 20X2, j'ai simplement remplacé le 20M2 de l'afficheur par un 20X2 (~même prix que le 18M2), supprimé le "#picaxe20M2" du code et tout fonctionnait normalement.
Le typon 20M2 offre cette alternative, sans compter la possibilité de commander 4 ports au lieu de 3 (utile sur un circuit avec un 08M2).

Bref, que des avantages.

merci mais je vais abandonné le 18M2 uniquement au cause du prix
chez gotronic un 18M2+ coute 5,50 € et un 20M2 coute 3,55 € sur la quantité je serais quand même gagnant
Je ne sais pas combien tu veux en fabriquer mais avec un tu gagnes déjà 2 euros !

MM
 

electrique5

Senior Member
j'ai prévu d'en faire déja 6 pour des alarmes qu'on ma demandé de faire plus 1 pour réalisé une fausse bombe pour airsoft
seulement sur mes typon je vais y inclure un transitor pour commandé le rétroéclairage pour les alarme ca sert a rien qu'il éclaire en permanence
je n'ai pas encore fini
LCD.png
ne chercher pas le port C ni meme le port de programmation je ne les inclus pas
 

MGU

Senior Member
Pourquoi n'utilises tu pas un des 4 ports télécommandés par la liaison série. Tu allumes le LCD par le soft uniquement lorsque c'est nécessaire.
 

electrique5

Senior Member
oui aussi de toute facon c'est pareille que je passe par une liaison série C ou par un high a l'extérieur on obtient le meme résultat.
par contre j'aurai un autre question, c'est normal que dès qu'on met sous tension le LCD la 1ère ligne et la 3ème on n'a des carrés qui disparaisse 1 seconde ou 2 avant le message d'accueil ?
les carrés sont présent sur toute la ligne 1 et 3 ensuite j'ai le message d'accueil enfin seulement le message de la 2ème ligne le 1er veux pas fonctionné
voici une petite vidéo pour voir comment ca fait au démarrage de l'écran
 
Last edited:

MGU

Senior Member
Les lignes apparaissent quand le LCD n'est pas initialisé. Peut être lié à l'utilisation du message d'accueil ?

Pour la première ligne:
Je ne vois pas de positionnement en ligne 1, essaye de remplacer le code original par celui ci pour voir et dis moi.

Code:
#ifdef use_welcome	
       [COLOR="#FF0000"] low rs			; command mode
	let pinsB = 128		; position curseur ligne 1 = 128
	pulsout enable,1  	; pulse the enable pin to send data.
	high rs			; character mode again
[/COLOR]
	let b1 = 1			; message 0 on top line  IL FAUT REMPLACER  0 par 1 Puisque c'est le message 1 et plus le 0
	gosub msg			; do it

	low rs			; command mode
	let pinsB = 192		; move to line 2, instruction 192
	pulsout enable,1  	; pulse the enable pin to send data.
	high rs			; character mode again
	
	let b1 = 2			; message 1 on bottom line   IL FAUT REMPLACER 1 par 2 
	gosub msg			; do it
#endif



MM
 
Last edited:

electrique5

Senior Member
ha ! la tous fonctionne correctement impeccable un grand merci
dommage qu'il y est ses carrés sur les 2 lignes 1 et 3 en tous cas je vous remercie
par contre est t-il nécéssaire de gardé les ligne
EEPROM $30, ("This is msg 3 ") a EEPROM $F0, ("This is msg 15 ") ?
 

MGU

Senior Member
Tu peux supprimer les messages préenregistrés non utilisés.
Je les avais gardés pour ne pas m'éloigner des possibilités de l'original, mais j'avais enlevé le message d&#8217;accueil et tout ce qui concernait l'oled.
Je n'ai pas les lignes noires à la mise sous tension. Il faudrait essayer le code de mon site pour vérifier (et être sûr qu'il fonctionne).

MM
 

electrique5

Senior Member
j'ai testé votre code mise a part l'absence du message d'accueil ca fonctionne mais j'ai toujours les lignes 1 et 3 qui affichent des carré sur toute la longueur dès la mise sous tension
 

MGU

Senior Member
Si le fonctionnement est normal ensuite, ce n'est pas forcement une anomalie.
Faudrait vérifier sur d'autres LCD
Le plus simple est de ne pas le regarder à ce moment là.

MM
 

electrique5

Senior Member
Je vien de réalisé la platine ben les lignes il me les fait plus autant c'était juste une mauvaise connexion sur ma plaque d'essais
en tous cas tous fonctionne correctement
Par contre je voulais vous signalé sur votre site le shéma LCD SÉRIE ET PICAXE je sais pas si c'est voulu ou non il y a une inversion de polarité de la LED + et -
en tous cas pour moi le - est a l'extérieur et le + a l'intérieur
et encore merci
 

MGU

Senior Member
Merci de me signaler des erreurs, il faut que je fasse une mise à jour de cette page.
MM
 

MGU

Senior Member
Bon, c'est fait.
J'ai fait des mises à jour, j'ai redessiné le schéma avec possibilité de contrôler l'éclairage, j'ai refait un typon et ajouté une version véroboard pour ceux qui ne font pas de circuits imprimés.
Tout est en téléchargement

MM
 
Last edited:

electrique5

Senior Member
il est intéressant de pouvoir contrôler le rétro-éclairage dans certain cas, bref encore merci
je vous donne mon typon si vous voulez le mettre sur votre site si ca peut intéresser certaine personnes
View attachment Convertisseur LCD.zip
par contre le mien il n'inclus pas le port de programmation ni les port C car je sais que j'en aurais pas besoin
si certaines personnes sont comme moi ca évite pas mal de straps

PS: j'ai pas mis les valeurs des composants
R1,R2,R3 = 10K
C1 = 100nF
P1 = 5K
T1 = BC547
D1 = 1N4007

J'ai placer D1 pour éviter l'inversion de polarité lors de la connexion (ce qui m'est déjà arrivé et le picaxe n'a pas trop apprécié)
 

electrique5

Senior Member
J'aurais une autre question peut-on rajouter d'autre symbole dans le firmware en continuant la logique du code ?
Code:
pinsB=[B][COLOR="#FF0000"]9[/COLOR][/B]*8|$40
low rs
pulsout enable,1
high rs:pause 10 ...

pinsB=[B][COLOR="#FF0000"]10[/COLOR][/B]*8|$40
low rs
pulsout enable,1
high rs:pause 10 ...

pinsB=[B][COLOR="#FF0000"]11[/COLOR][/B]*8|$40
low rs
pulsout enable,1
high rs:pause 10 ...
Si je fait ca le 9ème remplace le 1er, le 10ème remplace le 2ème, le 11ème remplace le 3ème etc...
 

MGU

Senior Member
Eh oui, j'ai essayé aussi il y a 16 mémoires vides, avant les caractères standards, mais l'expérience montre que l'on ne peut en enregistrer que 8 (je l'ai lu aussi qq part).

Si je peux me permettre quelques remarques sur le typon:

Le contraste est réglé par une tension Vo (0.6 à 0.8 v) et non par un courant. Il est préférable de déterminer cette tension par un pont en reliant la patte libre du potentiomètre au +5V par une 4k7.

Le BC547 est en commutation pour le rétroéclairage avec une 10k dans la base (je suppose).
l'éclairage consomme 150 à 200 mA sur un LCD2004.

D'autre part,
Dans la doc du BC547, on lit cette ligne:
Vcesat = 0.6v max avec les CONDITIONS: Ic=100mA ; Ib= 5mA
Ce qui veut dire que le constructeur considère la saturation pour un gain de 100/5 =20 , en général, dans les docs, c'est plutôt 10.
Le gain en saturation est totalement différent du gain en linéaire.

Donc : pour Ic=100mA , il faut Ib=5mA soit pour 5 v une résistance base de 1k

MM
 

electrique5

Senior Member
Merci pour ses précisions en ce qui concerne les caractères on s'en contentera que de 8
Je vous remercie pour votre aide
 
Top