Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1754 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème affichage sur afficheur lcd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème affichage sur afficheur lcd

n°2207003
steyf65
Posté le 17-10-2013 à 10:56:07  profilanswer
 

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

mood
Publicité
Posté le 17-10-2013 à 10:56:07  profilanswer
 

n°2207018
gilou
Modérateur
Modzilla
Posté le 17-10-2013 à 11:51:02  profilanswer
 

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é!  --
n°2207020
steyf65
Posté le 17-10-2013 à 12:00:03  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème affichage sur afficheur lcd

 

Sujets relatifs
Problème Scrit qui liste les fichiersProblème zoom sur focus champ IOS7 solutions ou pas ?
Problème avec les apostrophesProblème avec les i++ et ++i
Problème simple de calculproblème de cote et de prise en charge du texte
MYSQL problème count via out joinProblème programmation VBA
problème VBA avec Find/ReplaceProbleme syntaxe ? [résolu]
Plus de sujets relatifs à : problème affichage sur afficheur lcd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR