FORUM Syndrome-OC - Jacky-PC


  Programmation


  Microcontrolleur &co


  Afficher du texte sur un LCD

 




1 utilisateur anonyme et 11 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher du texte sur un LCD

n°2833
tpelcd
Posté le 15-05-2004 à 20:25:30  profilanswer
 

Donc voila dans le cadre de mon TPE je voudrais programmer le plus simplement possible un écran LCD 2*16 de type HD44780 en visual basic de préférence (j'ai quelques bases), j'ai juste besoin d'afficher quelques caractères...
Merci d'avance

mood
Google
Posté le 15-05-2004 à 20:25:30  profilanswer
 

n°2834
Dr Lous
I see old password
Posté le 15-05-2004 à 20:42:09  profilanswer
 

Code :
  1. /* compiler avec gcc -O2 pour les macros inb et outb */
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <asm/io.h>
  5. #define lpt_port 0x378  /* Changer l'adresse du port ici */
  6. #define STATUS lpt_port+1
  7. #define CONTROL lpt_port+2
  8. /* Une série de définitions pour simplifier la programmation */
  9. #define SET_E outb(inb(CONTROL) & 254,CONTROL)  /* E=1 (Strobe) */
  10. #define RAZ_E outb(inb(CONTROL) | 1,CONTROL)  /* E=0 (Strobe) */
  11. #define SET_RS outb(4,CONTROL) /* RS=1, la donnée est un caractère */
  12. #define RAZ_RS outb(0,CONTROL) /* RS=0, la donnée est une instruction */
  13. void Init_LCD (void);
  14. void Efface_LCD (void);
  15. void Ecrire_LCD (char *Chaine, char Position);
  16. int coco;
  17. /*
  18. Adresse du curseur (en hexadécimal):
  19.  
  20. digit  : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  21.  
  22. ligne 1: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93
  23. ligne 2: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3
  24. ligne 3: 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7
  25. ligne 4: D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7
  26. */
  27. int main(void)
  28. {
  29. char *Phrase1="Taper",
  30.  *Phrase2="Votre",
  31.  *Phrase3="Message Sur",
  32.  *Phrase4="La console";
  33. if(ioperm(lpt_port,3,1))
  34. {
  35.     perror("ioperm" );
  36.     exit(1);
  37. }
  38.  Init_LCD();
  39.  //clrscr();
  40.  printf("*************************************************\n" );
  41.  printf("*    Programme de test d'un ecran LCD 4 * 20    *\n" );
  42.  printf("*************************************************\n\n\n" );
  43.  Ecrire_LCD(Phrase1,0x80);
  44.  Ecrire_LCD(Phrase2,0xC0);
  45.  Ecrire_LCD(Phrase3,0x94);
  46.  Ecrire_LCD(Phrase4,0xD4);
  47.  //printf("Taper le message puis Enter.\n" );
  48.  
  49.  while (1)
  50.  {
  51.   coco = getchar();
  52.   if (coco == 47) //si caractere egale a    "/" effacement ecran...
  53.   {
  54.    printf("\n\n----EFFACEMENT ECRAN!!!----\n\n" );
  55.    RAZ_RS;
  56.    outb(0x01,lpt_port); // mise des valeur sur le port
  57.    SET_E;
  58.    usleep(2000);
  59.    RAZ_E;
  60.    usleep(2000);
  61.    SET_RS;
  62.   }
  63.   else
  64.   {
  65.    if (coco == 10)
  66.    {
  67.      //printf("Bouh\n" );
  68.    }
  69.    else
  70.    {
  71.     if (coco == 176){coco = 223;}
  72.     if (coco == 40){coco = 255;}
  73.     printf("-'%d'\n", coco);
  74.      outb(coco,lpt_port); // mise des valeur sur le port
  75.     SET_E;
  76.     usleep(10);
  77.     RAZ_E;
  78.     usleep(10);
  79.    }
  80.   }
  81.   if (coco == 81)
  82.   {
  83.    Efface_LCD();
  84.    Ecrire_LCD("MERCI D'AVOIR",0xC0);
  85.    Ecrire_LCD("UTILISE Dr-LCD",0x94);
  86.    exit();
  87.   }
  88.  }
  89.  printf("%d",0x30);
  90.  return 0;
  91. }
  92. void Init_LCD (void)
  93. {
  94. char Init[5],i;
  95. Init[0] =  0x30;
  96. Init[1] =  0x38;
  97. Init[2] =  0x0F;
  98. Init[3] =  0x01;
  99. Init[4] =  0x06;
  100. outb(inb(CONTROL) & 0xDF,CONTROL); /* On place le port parallèle en sortie */
  101. RAZ_RS;
  102. for(i=0;i<=4;i++)
  103. {
  104.  outb(Init[i],lpt_port); /* On place la donnée sur le bus */
  105.  SET_E;
  106.  usleep(20000); /* Délais de 20 ms */
  107.  RAZ_E;
  108.  usleep(20000);
  109. }
  110. SET_RS;
  111. }
  112. void Efface_LCD (void)
  113. {
  114. RAZ_RS;
  115. outb(0x01,lpt_port); /* On place l'instruction d'effacement sur le bus */
  116. SET_E;
  117. usleep(20000);
  118. RAZ_E;
  119. usleep(2000);
  120. SET_RS;
  121. }
  122. void Ecrire_LCD (char Chaine[20], char Position)
  123. {
  124. int i,Taille;
  125. Taille=strlen(Chaine);
  126. RAZ_RS;
  127. outb(Position,lpt_port); /* Adresse d'écriture */
  128. SET_E;
  129. usleep(1);
  130. RAZ_E;
  131. usleep(1);
  132. SET_RS;
  133. for(i=0;i<Taille;i++)
  134. {
  135.  outb(Chaine[i],lpt_port); /* On place la donnée sur le bus */
  136.  SET_E;
  137.  usleep(1);
  138.  RAZ_E;
  139.  usleep(1);
  140. }
  141. }


 
le code ss linux pour faire un lcd sur port // :)
 
 

Code :
  1. //numPort =  0x378h
  2. 'Mise à 0 de tous les bits DATA du port //
  3. DlPortWritePortUshort numPort, 0
  4. 'Mise à 1 de tous les bits DATA du port //
  5. DlPortWritePortUshort numPort, 255


 
le code vb avec dlportio...
 
 
voila c suffisant pour le faire ss vb :)

n°2844
tpelcd
Posté le 16-05-2004 à 21:07:02  profilanswer
 

Merci je vais essayer ça

n°2882
tpelcd
Posté le 20-05-2004 à 22:00:58  profilanswer
 

euh en fait je ne comprend pas "dlportio" est bien une dll ? comment je peux m'en servir pour écrir sur l'écran ? le premier code ce n'est pas du visual basic ?? je ne m'y connais pas assez, quelqu'un peut-il m'expliquer plus simplement ?
merci

mood
Google
Posté le 20-05-2004 à 22:00:58  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Microcontrolleur &co


  Afficher du texte sur un LCD

 

Hit Parade