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
|
|