steyf65  | Bonjour,
 J'ai programmé un afficheur lcd (ref: splc780D1) de couleur bleu. Je n'ai rencontré aucun problème mis à part qu'on ne lit pas bien dessus quand il y a du soleil. Donc j'ai décidé d'acheter un autre afficheur de couleur verte (ref:fdcc1602p) qui est compatible avec celui que j'utilisais. Je n'ai rien changé de mon code mais ça ne fonctionne pas. J'arrive à avoir des carré noir sur la 1ere ligne, ensuite j'efface avec la fonction lcd_clear (cela fonctionne), je met un curseur (cela fonctionne aussi) et quand je tente d'écrire "Initialisation" l'afficheur me remet les carrés noirs sur la 1ere ligne. J'ai essayé en écrivant juste un seul caractère, par exemple "I" l'afficheur met un carré noir sur la 2eme ligne et 9em colonne. Idem avec la lettre "A" l'afficheur met un carré noir sur la 2eme ligne et 1ere colonne.
 Je ne comprend pas d'où cela vient car avec l'autre afficheur tout marche parfaitement!!
 Est-ce que quelqu'un pourrait m'aider svp!
 Merci d'avance!!!
   datasheet splc780D1: http://www.winstar.com.tw/UserFiles/...0823064564.pdf
 datasheet fdcc1602p: http://docs-europe.electrocomponents...6b80f25db8.pdf
   code avec dspic33fj256mcp:
  Code :
 - #include "global.h"
 - #include "LCDMCP23O17.h"
 - /*********************** VARIABLES EXTERNES ************************/
 - char app;
 - BYTE cent;
 - BYTE diz;
 - BYTE ones;
 - /*******************************************************************/
 - void LCD_Init()
 - {
 -     char admodlcd= 0x40; // adresse du  module led vertes
 -     writeonebyte(admodlcd,IOCONA ,0x40);//
 -     writeonebyte(admodlcd,IODIRA ,0x00);// port A en sortie
 -     writeonebyte(admodlcd,IPOLA ,0xFF);//inverser la valeur du port
 -     writeonebyte(admodlcd,IODIRB ,0x00);//  port B en sortie
 -     writeonebyte(admodlcd,IPOLB ,0xFF);//inverser la valeur du port
 -     TMR_WaitMS(M100);
 -     LCD_Cmd(0x04);// entry mode
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x0C);// affichage curseur, pas de clignetement
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x14);// decalage a droite
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x38);// 8 bits, 2 lignes, 5*8 font
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x01);// ifface icran
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x02);// curseur ` 00
 -     TMR_WaitMS(M10);
 - }
 - void LCD_Cmd(BYTE cmd)          // subroutiune for lcd commands
 - {
 -     writeonebyte(0x40,OLATB ,cmd);//code commande
 -     writeonebyte(0x40,OLATA ,0x00);
 -     TMR_WaitMicroS(U500);
 -     writeonebyte(0x40,OLATB ,cmd);
 -     writeonebyte(0x40,OLATA ,0x01);
 -     TMR_WaitMicroS(U500);        // 500us delay
 - }
 - void LCD_Clear()
 - {
 -     TMR_WaitMicroS(U500);
 -     LCD_Cmd(0x38);// 8 bits, 2 lignes, 5*8 font
 -     TMR_WaitMicroS(U500);
 -     LCD_Cmd(0x01);
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0x02);
 -     TMR_WaitMS(M10);   
 - }
 - void LCD_Line2()
 - {
 -     TMR_WaitMS(M10);
 -     LCD_Cmd(0xc0);
 -     TMR_WaitMS(M10);
 - }
 - void LCD_PrintChar( char data )
 - {
 -     writeonebyte(0x40,OLATB ,data);
 -     writeonebyte(0x40,OLATA ,0x04);//0x04
 -     TMR_WaitMicroS(U500);
 -     writeonebyte(0x40,OLATB ,data);
 -     writeonebyte(0x40,OLATA ,0x01);//0x01
 -     TMR_WaitMicroS(U500);
 - }
 - void LCD_PrintStr(char *car)
 - {
 -     while(*car != '\0')
 -     {
 -      LCD_PrintChar(*car);
 -      car++;
 -     }
 - }
 - /********************************************************************/
 - /* Fichier de gestion E2PROM i2c.c */
 - #include "global.h"
 - #include "i2c.h"
 - I2CEMEM_DRV i2c1mem= I2C1SEMEM_DRV_DEFAULTS;
 - I2CEMEM_DRV i2c2mem= I2C2SEMEM_DRV_DEFAULTS;
 - I2CEMEM_DATA wData;
 - I2CEMEM_DATA rData;
 - unsigned int jDone;
 - BYTE I2C_wBuffer[65], I2C_rBuffer[65];
 - BYTE erri2c=0;
 - // BYTE ERRI2C;
 - void writeonebyte(BYTE adr,BYTE lsb,BYTE data)
 - {
 -     i2c1mem.init(&i2c1mem);
 -     I2C_wBuffer[0]=data;
 -     wData.buff=I2C_wBuffer;
 -     wData.Id=adr;
 -     wData.addLSB=lsb;
 -     wData.addLen=1;
 -     wData.nbBytes = 1;
 -     i2c1mem.oData=&wData;
 -     i2c1mem.cmd = I2C_WRITE;
 -     while((i2c1mem.cmd!=I2C_IDLE)&&(i2c1mem.cmd!=0xFFFF))
 -     {
 - 	i2c1mem.tick(&i2c1mem);
 -     }
 -     if(erri2c == 1)
 -     {
 - 	erri2c=0;
 -     }
 - }
 - /********************************************************************/
 - void ECRAN_AfficheVersion(void)
 - {
 -     LCD_Clear();
 -     LCD_PrintStr(" INITIALISATION " );
 -     LCD_Line2();
 -     LCD_PrintStr("  Version V" );
 -     LCD_PrintStr(VERSION);
 -     LCD_PrintStr(" " );
 - }
 - /********************************************************************/
 - /********************************************************************/
 - #ifndef __MCP23017_H__
 - #define __MCP23017_H__
 - #define IODIRA   	0x00
 - #define IODIRB   	0x01
 - #define IPOLA     0x02
 - #define IPOLB     0x03
 - #define GPINTENA  0x04
 - #define GPINTENB  0x05
 - #define DEFVALA   0x06
 - #define DEFVALB   0x07
 - #define INTCONA   0x08
 - #define INTCONB   0x09
 - #define IOCONA   	0x0A
 - #define IOCONB   	0x0B
 - #define GPPUA     0x0C
 - #define GPPUB     0x0D
 - #define INTFA     0x0E
 - #define INTFB     0x0F
 - #define INTCAPA   0x10
 - #define INTCAPB   0x11
 - #define GPIOA     0x12
 - #define GPIOB     0x13
 - #define OLATA     0x14
 - #define OLATB     0x15
 - /********************************************************************************/
 - void initmodled();
 - void envoiledV(int val);
 - /*******************************************************************************/
 - #endif
 
  |  
    |