problème affichage sur afficheur lcd

problème affichage sur afficheur lcd - C - Programmation

Marsh Posté le 17-10-2013 à 10:56:07    

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 :
  1. #include "global.h"
  2. #include "LCDMCP23O17.h"
  3. /*********************** VARIABLES EXTERNES ************************/
  4. char app;
  5. BYTE cent;
  6. BYTE diz;
  7. BYTE ones;
  8. /*******************************************************************/
  9. void LCD_Init()
  10. {
  11.     char admodlcd= 0x40; // adresse du  module led vertes
  12.     writeonebyte(admodlcd,IOCONA ,0x40);//
  13.     writeonebyte(admodlcd,IODIRA ,0x00);// port A en sortie
  14.     writeonebyte(admodlcd,IPOLA ,0xFF);//inverser la valeur du port
  15.     writeonebyte(admodlcd,IODIRB ,0x00);//  port B en sortie
  16.     writeonebyte(admodlcd,IPOLB ,0xFF);//inverser la valeur du port
  17.     TMR_WaitMS(M100);
  18.     LCD_Cmd(0x04);// entry mode
  19.     TMR_WaitMS(M10);
  20.     LCD_Cmd(0x0C);// affichage curseur, pas de clignetement
  21.     TMR_WaitMS(M10);
  22.     LCD_Cmd(0x14);// decalage a droite
  23.     TMR_WaitMS(M10);
  24.     LCD_Cmd(0x38);// 8 bits, 2 lignes, 5*8 font
  25.     TMR_WaitMS(M10);
  26.     LCD_Cmd(0x01);// ifface icran
  27.     TMR_WaitMS(M10);
  28.     LCD_Cmd(0x02);// curseur ` 00
  29.     TMR_WaitMS(M10);
  30. }
  31. void LCD_Cmd(BYTE cmd)          // subroutiune for lcd commands
  32. {
  33.     writeonebyte(0x40,OLATB ,cmd);//code commande
  34.     writeonebyte(0x40,OLATA ,0x00);
  35.     TMR_WaitMicroS(U500);
  36.     writeonebyte(0x40,OLATB ,cmd);
  37.     writeonebyte(0x40,OLATA ,0x01);
  38.     TMR_WaitMicroS(U500);        // 500us delay
  39. }
  40. void LCD_Clear()
  41. {
  42.     TMR_WaitMicroS(U500);
  43.     LCD_Cmd(0x38);// 8 bits, 2 lignes, 5*8 font
  44.     TMR_WaitMicroS(U500);
  45.     LCD_Cmd(0x01);
  46.     TMR_WaitMS(M10);
  47.     LCD_Cmd(0x02);
  48.     TMR_WaitMS(M10);   
  49. }
  50. void LCD_Line2()
  51. {
  52.     TMR_WaitMS(M10);
  53.     LCD_Cmd(0xc0);
  54.     TMR_WaitMS(M10);
  55. }
  56. void LCD_PrintChar( char data )
  57. {
  58.     writeonebyte(0x40,OLATB ,data);
  59.     writeonebyte(0x40,OLATA ,0x04);//0x04
  60.     TMR_WaitMicroS(U500);
  61.     writeonebyte(0x40,OLATB ,data);
  62.     writeonebyte(0x40,OLATA ,0x01);//0x01
  63.     TMR_WaitMicroS(U500);
  64. }
  65. void LCD_PrintStr(char *car)
  66. {
  67.     while(*car != '\0')
  68.     {
  69.      LCD_PrintChar(*car);
  70.      car++;
  71.     }
  72. }
  73. /********************************************************************/
  74. /* Fichier de gestion E2PROM i2c.c */
  75. #include "global.h"
  76. #include "i2c.h"
  77. I2CEMEM_DRV i2c1mem= I2C1SEMEM_DRV_DEFAULTS;
  78. I2CEMEM_DRV i2c2mem= I2C2SEMEM_DRV_DEFAULTS;
  79. I2CEMEM_DATA wData;
  80. I2CEMEM_DATA rData;
  81. unsigned int jDone;
  82. BYTE I2C_wBuffer[65], I2C_rBuffer[65];
  83. BYTE erri2c=0;
  84. // BYTE ERRI2C;
  85. void writeonebyte(BYTE adr,BYTE lsb,BYTE data)
  86. {
  87.     i2c1mem.init(&i2c1mem);
  88.     I2C_wBuffer[0]=data;
  89.     wData.buff=I2C_wBuffer;
  90.     wData.Id=adr;
  91.     wData.addLSB=lsb;
  92.     wData.addLen=1;
  93.     wData.nbBytes = 1;
  94.     i2c1mem.oData=&wData;
  95.     i2c1mem.cmd = I2C_WRITE;
  96.     while((i2c1mem.cmd!=I2C_IDLE)&&(i2c1mem.cmd!=0xFFFF))
  97.     {
  98. i2c1mem.tick(&i2c1mem);
  99.     }
  100.     if(erri2c == 1)
  101.     {
  102. erri2c=0;
  103.     }
  104. }
  105. /********************************************************************/
  106. void ECRAN_AfficheVersion(void)
  107. {
  108.     LCD_Clear();
  109.     LCD_PrintStr(" INITIALISATION " );
  110.     LCD_Line2();
  111.     LCD_PrintStr("  Version V" );
  112.     LCD_PrintStr(VERSION);
  113.     LCD_PrintStr(" " );
  114. }
  115. /********************************************************************/
  116. /********************************************************************/
  117. #ifndef __MCP23017_H__
  118. #define __MCP23017_H__
  119. #define IODIRA    0x00
  120. #define IODIRB    0x01
  121. #define IPOLA     0x02
  122. #define IPOLB     0x03
  123. #define GPINTENA  0x04
  124. #define GPINTENB  0x05
  125. #define DEFVALA   0x06
  126. #define DEFVALB   0x07
  127. #define INTCONA   0x08
  128. #define INTCONB   0x09
  129. #define IOCONA    0x0A
  130. #define IOCONB    0x0B
  131. #define GPPUA     0x0C
  132. #define GPPUB     0x0D
  133. #define INTFA     0x0E
  134. #define INTFB     0x0F
  135. #define INTCAPA   0x10
  136. #define INTCAPB   0x11
  137. #define GPIOA     0x12
  138. #define GPIOB     0x13
  139. #define OLATA     0x14
  140. #define OLATB     0x15
  141. /********************************************************************************/
  142. void initmodled();
  143. void envoiledV(int val);
  144. /*******************************************************************************/
  145. #endif

Reply

Marsh Posté le 17-10-2013 à 10:56:07   

Reply

Marsh Posté le 17-10-2013 à 11:51:02    

Pas possible de lire les docs, tes liens sont incorrects.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 17-10-2013 à 12:00:03    

gilou a écrit :

Pas possible de lire les docs, tes liens sont incorrects.
A+,


 
Voici les liens, je pense que la ils sont corrects.
http://www.winstar.com.tw/UserFile [...] 064564.pdf
http://docs-europe.electrocomponen [...] f25db8.pdf

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed