Merci pour le datasheet.
oui c'est a l'etat bas, mai qu'entend tu par etat bas ?
tu veux dire que je dois connecter le pin RST au GND ?
Merci.
j'ai connecte le RST sur le +5v car sur le GND yavait des trucs bizarre.
sinon j'ai essaye toute les possibilte et ca ne donne rien toujours le contraste allumme.
je me demande peut etre si avec l'atmega163 ca ne marche pas et je devrait teste avec un 8535 ?
aussi j'alimente le backlight avec l'alimentation que genere le stk500 via les nappe de 10 pin, peut etre qu'il n'y a pas assez de courant .
et sinon personne du forum n'a utilise un GLCD avec un atmel ?
si quelqu'un pouvais me poster un debut de code, juste te le ks0108.h et le ks0108.c qu'il utilise avec un GLCd, comme ca je pourrais le teste, sinon je serais oblige d'acheter l'easyavr5 ca m'embete.
Merci de votre aide.
bon ben le post peut etre fermer , il est hs, j'ai tente de le connecter a une source de 4,5 v externe alors qu'il fonctionnait tres bien en 5v il s'est bien allumer, et la il ne s'allume plus, j'ai teste diferenttes sources d'allimentation.
Merci de m'avoir aider quand meme.
c'est bizarre qu'en mettant 4.5v il grille ?
sinon est ce que vous pouvez me conseiller un GLCD 128*64 qui est reconnu par la plus part des MCU et compatible avec une librairie qui fonctionne ?
quel chipset utiliser pour un GLCD point de vue compatibilite ?
Quel MCU utiliser ?
en fait il fonctionne mais ya pas le retro eclairage, mais il remarche maintenant, il y a une petite resistance a cote du baklight, en la courcuitant avec un fil je l'ai amorce et maintenant sa s'allume, j'y comprend rien.
lol
j'ai pu voir dans des forum que peut etre le CS1 et le CS2 sont inverse point de vu etat , c'est peut pour ca que rien ne s'affiche et que seul le contraste apparait ?
faudrait qu'au lieu de mettre 0xFF au niveau du port je mettre les bit de CS1 et CS2 a 0 ?
Merci de votre aide.
Bonjour,
est ce qu'il faut generer une tension negative pour le contraste ?
c'est peut etre pour cela que je vois le contraste uniquement ?
Merci de votre aide.
Salut,
Tu es fatiguant...
As-tu vu chez Mikroe qu'il utilise une tension négative???
Si tu te trompes sur CSx, dans un premier temps ce n'est pas grave, c'est la sélection de la partie haute ou de la partie basse de ton GLCD.
Pour RST, c'est indiqué clairement dans le datasheet...
Avant de te lancer sur un projet avec un GLCD, tente de comprendre parfaitement un simple LCD alphanumérique sans utiliser de bibliothèque, et la transition vers un GLCD se fera sans problème.
David.
avec un LCD alphanumerique 16*2 ou 40*4 je n'ai aucun probleme , sa marche impeccable.
ce que je vais faire c'est que je vais reprendre la partie initialisation, que je testerai, si l'ecran de contraste disparait c'est que l'init est ok, apres je pourrais faire un test d'affichage d'un texte.
Merci.
J'ai l'impression que tu ne veux pas comprendre...
J'ai bien lu que tu es capable d'utiliser une bibliothèque pour un LCD alphanumérique. Par contre, tu ne comprends absolument pas comment il fonctionne et ton problème vient de là...
C'est pour cela que je t'ai indiqué de faire fonctionner un LCD alphanumérique sans utiliser de bibliothèque afin de te familiariser avec ce type d'afficheur, la transition vers un modèle GLCD n'en sera que plus simple.
David.
lut
moi j vais appeller la SPL (Societe Protectrice des LCD )
si tu veut arriver a faire marcher ton lcd il va faloir savoir comment
-l'interfacer
-l'initialiser
-le piloter
tout sa est expliquer dans le datasheet
par-ce-que la tu a une chance sur 10 quil marche et 9 chance sur 10 de le detruire
a+
Bonjour,
j'ai envoye une photo de mon lcd allume a mikroe il me diose que c'est un probleme d'initialisation.
il m'on donner le datasheet mais je n'arrive pas avec, il y ades caracteristique electrique et les commande mais pas la partie initialisation.
il me faudrait juste cette partie, au moins que mon ecran ne reste pas sur le contraste apres je pourrais me debrouiller.
Merci de votre aide.
Salut,
Place en ligne le datasheet de ton GLCD, sans quoi c'est difficile de t'aider...
David.
le lien du datasheet
http://upload.newroomschat.com/uploa...IQUE/DATASHEET
le programme minimum pour l'init.
glcd.h
le glcd.cCode:#ifndef GLCD_H #define GLCD_H #define LCD_CMD_PORT PORTA // Command Output Register #define LCD_CMD_DIR DDRA // Data Direction Register for Command Port #define LCD_DATA_IN PINC // Data Input Register #define LCD_DATA_OUT PORTC // Data Output Register #define LCD_DATA_DIR DDRC // Data Direction Register for Data Port // Command Port Bits #define D_I 0x00 // D/I Bit Number #define R_W 0x01 // R/W Bit Number #define EN 0x02 // EN Bit Number #define CSEL1 0x03 // CS1 Bit Number #define CSEL2 0x04 // CS2 Bit Number #define RST 0x06 // Chips #define CHIP1 0x00 #define CHIP2 0x01 // Commands #define LCD_ON 0x3F #define LCD_OFF 0x3E #define LCD_SET_ADD 0x40 #define LCD_SET_PAGE 0xB8 #define LCD_DISP_START 0xC0 // Colors #define BLACK 0xFF #define WHITE 0x00 #ifndef BV #define BV(bit) (1<<(bit)) #endif #ifndef cbi #define cbi(reg,bit) reg &= ~(BV(bit)) #endif #ifndef sbi #define sbi(reg,bit) reg |= (BV(bit)) #endif void glcdInit(uint8_t invert); void glcdWriteCommand(uint8_t cmd, uint8_t chip); #endif
le mainCode:#include <inttypes.h> #include <avr/io.h> #include "glcd.h" void glcdInit(uint8_t invert) { cbi(LCD_CMD_PORT, D_I); cbi(LCD_CMD_PORT, R_W); cbi(LCD_CMD_PORT, EN); LCD_CMD_DIR = 0xFF; // command port is output glcdWriteCommand(LCD_ON, CHIP1); // power on glcdWriteCommand(LCD_ON, CHIP2); glcdWriteCommand(LCD_DISP_START, CHIP1); // display start line = 0 glcdWriteCommand(LCD_DISP_START, CHIP2); } inline void glcdEnable(void) { LCD_CMD_PORT |= 0x01 << EN; // EN high level width: min. 450ns asm volatile("nop\n\t" "nop\n\t" "nop\n\t" ::); LCD_CMD_PORT &= ~(0x01 << EN); for(volatile uint8_t i=0; i<8; i++); // a little delay loop (faster than reading the busy flag) } void glcdWriteCommand(uint8_t cmd, uint8_t chip) { if(chip == CHIP1) { LCD_CMD_PORT &= ~(0x01 << CSEL2); // deselect chip 2 LCD_CMD_PORT |= 0x01 << CSEL1; // select chip 1 } else if(chip == CHIP2) { LCD_CMD_PORT &= ~(0x01 << CSEL1); // deselect chip 1 LCD_CMD_PORT |= 0x01 << CSEL2; // select chip 2 } LCD_CMD_PORT &= ~(0x01 << D_I); // D/I = 0 LCD_CMD_PORT &= ~(0x01 << R_W); // R/W = 0 LCD_DATA_DIR = 0xFF; // data port is output LCD_DATA_OUT = cmd; // write command glcdEnable(); // enable LCD_DATA_OUT = 0x00; }
par contre je ne gere pas le RST , il est branché sur le pin 5, je devrais le tester en le mettant sur le vdd ou le vss.Code:#include <avr/io.h> #include "glcd.h" int main(void) { glcdInit(0); return 0; }
Merci.
je viens de tester avec la version d'evaluation de mikrobasic avr , qui contiens
des exemples pour le GLCD que j'ai, ca ne marche toujours pas.
Glcd_Init(PORTA, 3, 4, 0, 1, 2, 6, PORTD)
j'ai reglé les pin de la fonction Glcd_Init par rapport aux miens.
donc ca veux dire que c'est hardware.
c'est soit
mon atmega32 est hs (peu problable car il fonctionne avec des LCD 20*4 et 16*2)
soit mes nappes au niveau du STK500 (j'ai verifie la continuite avec un voltmetre c'est ok)
soit le montage du GLCD (reverifier plusieurs fois un par un les fils , pas de court circuit , et connecte au bon endroit)
soit comme je n'ai pas mis de resistance pour le backlight, il tire trop d'amperage car je recupere le 5v sur le stk500 (possible aussi, je dois tester en mettant une resistance)
soit le GLCD est HS et il reste en contraste, je pense plutot que c'est ca.
car j'ai tout re verifier une vingtaine de fois (court circuit cable, connexion alimentation, etc ..), et les les trentaines de code que j'ai pu recupere non rien donné.
j'ai commander l'easyavr5, ce GLCD est prevu pour cette plateforme, car je l'ai achete chez mikroelektronica aussi..
Mikroe m'on dit de le tester si ca ne marche pas je le renverrai.
Merci.
Salut,
Je n'arrive pas à télécharger le datasheet...
Place le en piece jointe sur ce site.
Dans le code ci-dessus, je ne vois pas les tempos nécessaires à l'init, ni la gestion de la broche E du glcd.
David.
la broche E:
#define EN 0x02
dans le glcd.h
dans le glcd.c
inline void glcdEnable(void) {
LCD_CMD_PORT |= 0x01 << EN; // EN high level width: min. 450ns
asm volatile("nop\n\t"
"nop\n\t"
"nop\n\t"
:;
LCD_CMD_PORT &= ~(0x01 << EN); //<= broche E
for(volatile uint8_t i=0; i<8; i++); // a little delay loop (faster than reading the busy flag)
}
sinon a moins que j'ai une masse qui est mal mise, ou bien la frequence due l'Atmega32 mais ca m'etonnerai
Merci.
Le temps du cycle E doit être de minimum 1µSec.
Es-tu certain qu'avec deux "nop" en Assembleur Atmel on ait un temps de minimum 500nSec?
Pour faire un reset sur le GLCD, c'est un niveau bas durant minimum 1µSec.
David.
je ne sais pas , j'utilse l'osc interne à 8000000 de l'atmega32, je n'ai pas de Ext clock. peut etre qu'il faut un quartz extern, mais j'avais deja testé en mettant plusieurs NOP et ca ne marchait pas.
Bon, si tu ne connais même pas le temps de cycle de ton µC, c'est loin d'être gagné...
Sinon, la commande pour mettre en service le GLCD est 0x3F après un reset de minimum 1µSec.
Pour tester la fin du reset, il faut attendre que le bit4 du registre status soit à zéro.
Il n'y a pas besoin d'un quartz externe pour faire fonctionner ton glcd, l'oscillateur interne du µC est suffisant.
PS : je ne programme pas en C, et en plus je ne connais pas les µC Atmel; moi, c'est Assembleur et PICs...
David.
a y est j'ai trouve d'ou ca viens mais c'est un probleme bizarre
jai mis le programme livrer avec l'easyavr5 pour les tests, et en fait il fonctionne tres bien quand je retourne le GLCD a l'envers mais quand je met le lcd vers moi il ne fonctionne plus, j'avais penser a des faux contact au niveau de mes connection comme je l'ai cable sur un support avec des fils soudes mais ce n'est pas ca. Il suffit que je le mette a l'envers pour que ca fonctionne , des que je le met a l'endroit ca ne fonctionne plus, donc c'est un defaut du GLCD.
a moins qu'il y ai des parasites, j'ai mon wifi et mes pc a cote.
je contact mikroe pour qu'il me le change.
Merci.
en fait ce n'est pas le lcd , pour la connexion du lcd j'ai mis une barrette sip sur une plaquette d'essai en cuivre vert
donc le lcd penche vers le bas avec son poids, des que je le releve il fonctione , il faut que je le maintienne avec des vis pour qu'il soit droit.
je crois que ce post peut etre clos maintenant et merci a toi david d'avoir participe.
Merci.
j'ai ressoude correctement la barrette seccable de mon support et maintenant ca fonctionne bien. voila.
Si tu es vraiment certain que c'est un problème au lcd et non un problème de câblage, alors tu n'as vraiment pas de chance de tomber sur un lcd déffectueux...
C'est certain que le programme de la demo-board easyavr5 doit fonctionner si l'horloge du programme correspond à l'horloge du µC.
David.