Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GESTION D'UN AFFICHEUR LCD


Information sur la source

Description

Ce code en langage C permet d'envoyer l'espace libre sur le disque dur, les différentes unitées
présentes, et l'envoie d'un message personnel.
 

Source

  • /********************* DECLARATION DES BIBLIOTHEQUES ***********************/
  • #include <dos.h>
  • #include <dir.h>
  • #include <conio.h>
  • #include <stdio.h>
  • #include <string.h>
  • #include <stdlib.h>
  • #include <graphics.h>
  • /********************** DECLARATION DES PORTS *****************************/
  • #define data 0x378 //D,claration de l'adresse du port de donn,e
  • #define control 0x37a //D,claration de l'adresse du port de control
  • /**************** DECLARATION DES VARIABLES EN GLOBALES ********************/
  • int i,k,r=0;
  • char sms[255];
  • /********************** FONCTION INIT GRAPH ********************************/
  • void initgraph()
  • { int mode=0;
  • int carte=DETECT;
  • initgraph(&carte,&mode,"..\\Bgi");
  • }
  • /**************** FONCTION INITIALISATION DE LA SOURIS *********************/
  • void initsouris()
  • { _AX=0; geninterrupt(0x33); // INITIALISATION DU CURSEUR DE LA SOURIS
  • _AX=1; geninterrupt(0x33); // AFFICHE LE CURSEUR DE LA SOURIS
  • _setcursortype(_NOCURSOR); // ON RETIRE LE CURSEUR DU CLAVIER
  • }
  • /****************** FONCTION INSTRUCTION DE L'AFFICHEUR ********************/
  • void instruc()
  • { outportb(control,0x03); //E=0 RS=0 R/W=0
  • delay(5);
  • outportb(control,0x02); //E=1 RS=0 R/W=0
  • delay(5);
  • outportb(control,0x03); //E=0 RS=0 R/W=0
  • delay(5);
  • }
  • /******************* FONCTION DONNEES DE L'AFFICHEUR ***********************/
  • void donnee()
  • { outportb(control,0x01); //E=0 RS=1 R/W=0
  • delay(5);
  • outportb(control,0x00); //E=1 RS=1 R/W=0
  • delay(5);
  • outportb(control,0x01); //E=0 RS=1 R/W=0
  • delay(5);
  • }
  • /******************* FONCTION INITIALISATION DE L'AFFICHEUR ****************/
  • void initaff1()
  • { outportb(data,0x38); //8 bits + 2 lignes
  • instruc();
  • outportb(data,0x0c); //Display ON + sans curseur
  • instruc();
  • outportb(data,0x06); //Affichage de droite . gauche
  • instruc();
  • }
  • /***********************************/
  • void initaff2()
  • { outportb(data,0x30); //8 bits + 1 ligne
  • instruc();
  • outportb(data,0x0c); //Display ON + sans curseur
  • instruc();
  • outportb(data,0x06); //Affichage de droite . gauche
  • instruc();
  • }
  • /****************** FONCTION EFFACAGE DE L'AFFICHEUR LCD *******************/
  • void effaff()
  • { outportb(data,0x01); //Effacement de l'afficheur
  • instruc();
  • }
  • /********************** FONCTION PRESENTATION ******************************/
  • void present()
  • { i=0;
  • cleardevice();
  • effaff(); //Effacement de l'afficheur
  • char p1[20]=" BONJOUR";
  • char p2[20]=" PROG. AFFICHEUR";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p1);i++)
  • { outportb(data,p1[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Eecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p2);i++)
  • { outportb(data,p2[i]);
  • donnee();
  • }
  • while(i<200)
  • { setcolor(9); settextstyle(7,0,5); outtextxy(200,50,"BONJOUR");
  • setcolor(15); settextstyle(7,0,5); outtextxy(265,100,"ET");
  • setcolor(4); settextstyle(7,0,5); outtextxy(165,150,"BIENVENUE");
  • setcolor(9); settextstyle(7,0,5); outtextxy(205,200,"DANS LE");
  • setcolor(15); settextstyle(7,0,5); outtextxy(165,250,"PROGRAMME");
  • setcolor(i); settextstyle(10,0,7); outtextxy(55,300,"AFFICHEUR");
  • i++;
  • }
  • cleardevice();
  • effaff(); //Effacement de l'afficheur
  • char p3[20]=" REALISER PAR";
  • char p4[20]=" LOTH DAVID";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p3);i++)
  • { outportb(data,p3[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p4);i++)
  • { outportb(data,p4[i]);
  • donnee();
  • }
  • i=0;
  • while(i<225)
  • { setcolor(9); settextstyle(7,0,5); outtextxy(200,100,"REALISER");
  • setcolor(15); settextstyle(7,0,5); outtextxy(265,200,"PAR");
  • setcolor(i); settextstyle(10,0,7); outtextxy(55,300,"LOTH DAVID");
  • i++;
  • }
  • cleardevice();
  • effaff(); //Effacement de l'afficheur
  • char p5[20]=" CHARGEMENT DE";
  • char p6[20]=" L'INTERFACE...";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p5);i++)
  • { outportb(data,p5[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p6);i++)
  • { outportb(data,p6[i]);
  • donnee();
  • }
  • setcolor(15); settextstyle(1,0,6); setfillstyle(1,1);
  • bar(12,55,635,162); rectangle(12,55,635,162);
  • outtextxy(100,50,"CHARGEMENT DE");
  • outtextxy(20,100,"L'INTERFACE GRAPHIQUE");
  • setfillstyle(1,0); rectangle(24,299,616,351);
  • k=25;
  • while(k<616)
  • { setcolor(4);
  • line(k,300,k,350);
  • k++;
  • delay(10);
  • }
  • }
  • /*********************** FONCTION CONVERTION *******************************/
  • int convert(int n)
  • { if(n==0) { return 48; }
  • if(n==1) { return 49; }
  • if(n==2) { return 50; }
  • if(n==3) { return 51; }
  • if(n==4) { return 52; }
  • if(n==5) { return 53; }
  • if(n==6) { return 54; }
  • if(n==7) { return 55; }
  • if(n==8) { return 56; }
  • if(n==9) { return 57; }
  • return 0;
  • }
  • /************************* FONCTION GRAPHISQUE *****************************/
  • void graph()
  • { cleardevice();
  • //Rectangle principal
  • setcolor(15); setfillstyle(0,0); bar3d(0,8,628,479,10,10);
  • //Rectangle haute
  • setcolor(15); setfillstyle(1,12);
  • bar(0,8,628,100); rectangle(0,8,628,100);
  • //Espacelibre
  • setcolor(15); setfillstyle(1,8);
  • bar(116,21,284,49); rectangle(115,20,285,50);
  • settextstyle(8,0,3); outtextxy(125,15,"Espace libre");
  • settextstyle(1,0,2); outtextxy(265,58,"octets libres");
  • setfillstyle(1,0);
  • bar(20,64,250,79); rectangle(19,63,251,80);
  • //Bouton Affichage espace disque libre
  • setcolor(0); setfillstyle(1,2); bar(415,25,620,80);
  • setcolor(15); settextstyle(2,0,7);
  • outtextxy(425,30,"AFFICHAGE ESPACE");
  • outtextxy(450,50,"DISQUE LIBRE");
  • //Partie gauche
  • setcolor(15); setfillstyle(1,5);
  • bar(0,101,250,478); rectangle(0,100,250,479);
  • //Affichage liste
  • setcolor(15); setfillstyle(1,8);
  • bar(38,107,185,120); rectangle(38,107,185,120);
  • settextstyle(0,0,0); outtextxy(45,110,"LISTE DES UNITEES");
  • setfillstyle(1,0);
  • bar(6,126,244,374); rectangle(5,125,245,375);
  • //Affichage espace libre
  • setcolor(15); setfillstyle(1,0);
  • bar(11,384,49,399); rectangle(10,383,50,400);
  • setcolor(15);
  • settextstyle(0,0,0); outtextxy(65,388,"unit,e(s) pr,sente(s)");
  • //Bouton Affichage du nombre de disques ou unit,es
  • setcolor(0); setfillstyle(1,3); bar(5,425,245,475);
  • setcolor(15); settextstyle(2,0,7);
  • outtextxy(10,425,"AFFICHAGE DU NOMBRE");
  • outtextxy(10,450,"DE DISQUE OU UNITEES");
  • //Partie envoie d'un message
  • setcolor(15); setfillstyle(1,9);
  • bar(250,100,627,408); rectangle(250,100,628,409);
  • //Bouton Affichage d'un message
  • setcolor(15); setfillstyle(1,1); settextstyle(2,0,7);
  • bar(301,111,569,154); rectangle(300,110,570,155);
  • outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
  • outtextxy(325,130,"SUR L'AFFICHEUR LCD");
  • //Bouton envoie du message
  • setcolor(15); setfillstyle(1,4);
  • bar(315,305,545,365); rectangle(314,304,546,366);
  • settextstyle(1,0,2);
  • outtextxy(327,310,"ENVOIE DU MESSAGE");
  • outtextxy(325,335,"SUR L'AFFICHEUR LCD");
  • //Partie barre de chargement
  • setcolor(15); setfillstyle(1,14);
  • bar(251,410,507,478); rectangle(250,409,508,479);
  • setfillstyle(1,8);
  • bar(310,415,450,438); rectangle(309,414,451,439);
  • settextstyle(1,0,2); outtextxy(315,413,"CHARGEMENT");
  • //Barre de chargement
  • setcolor(15); setfillstyle(1,0); bar(270,445,488,474);
  • //Partie bas droite
  • setcolor(15); setfillstyle(1,7);
  • bar(508,409,628,479); rectangle(508,409,628,479);
  • //Bouton quitter
  • setcolor(0); setfillstyle(1,8);
  • bar(517,418,618,469); rectangle(517,418,618,469);
  • setcolor(15); settextstyle(2,0,7);
  • outtextxy(527,430,"QUITTER");
  • }
  • /********************* FONCTION BARRE DE CHARGEMENT ************************/
  • void barre()
  • { k=270;
  • effaff(); //Effacement de l'afficheur
  • char p9[20]=" CHARGEMENT";
  • char p10[20]=" EN COUR";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p9);i++)
  • { outportb(data,p9[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p10);i++)
  • { outportb(data,p10[i]);
  • donnee();
  • }
  • while(k<487)
  • { setcolor(4);
  • line(k,445,k,474);
  • k++;
  • delay(10);
  • }
  • setfillstyle(1,0); bar(270,445,488,474); effaff();
  • }
  • /******************* FONCTION UNITEES PRESENTES ****************************/
  • void unit()
  • { int i=0,save,disk;
  • barre();
  • effaff(); //Effacement de l'afficheur
  • //Sauvegarde des unit,es pr,sentes
  • save=getdisk();
  • //Ecriture du nombre d'unit,es pr,sentes
  • printf("\n\n");
  • char p11[20]="UNITEES : ";
  • char p12[20];
  • int z=0;
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • //Ecriture des unit,es pr,sentes
  • for(disk=0;disk<26;++disk)
  • { setdisk(disk);
  • if(disk==getdisk())
  • { gotoxy(3,10+z);
  • printf("%c : ",disk+'A');
  • gotoxy(7,10+z);
  • if(disk+'A'=='A')
  • { printf("Disquette"); }
  • if(disk+'A'=='B')
  • { printf("Port USB"); }
  • if(disk+'A'=='C')
  • { printf("Disque Dur"); }
  • if(disk+'A'=='D')
  • { printf("Disque Dur"); }
  • if(disk+'A'=='E')
  • { printf("CD-Rom"); }
  • if(disk+'A'=='F')
  • { printf("Port USB"); }
  • outportb(data,disk+'A');
  • donnee();
  • outportb(data,' ');
  • donnee();
  • z++;
  • }
  • }
  • setdisk(save);
  • p11[11]=convert(z);
  • gotoxy(3,25);
  • printf("%d",z);
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p11);i++)
  • { outportb(data,p11[i]);
  • donnee();
  • }
  • outportb(data,p11[11]);
  • donnee();
  • }
  • /************************* FONCTION ESPACE LIBRE ***************************/
  • void espace()
  • { barre();
  • struct diskfree_t free;
  • long avail;
  • if(_dos_getdiskfree(0, &free)!=0)
  • { printf("Error in _dos_getdiskfree() call\n");
  • exit(1);
  • }
  • avail=(long)free.avail_clusters
  • *(long)free.bytes_per_sector
  • *(long)free.sectors_per_cluster;
  • gotoxy(4,5);
  • printf("%ld",avail);
  • effaff();
  • char p13[20]="ESPACE LIBRE :";
  • char p14[20];
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p13);i++)
  • { outportb(data,p13[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • }
  • /******************** FONCTION AFFICHAGE D'UN MESSAGE **********************/
  • void message()
  • { barre();
  • effaff(); //Effacement de l'afficheur
  • char p15[20]="VEUILLEZ ENTRER";
  • char p16[20]=" VOTRE MESSAGE";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p15);i++)
  • { outportb(data,p15[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p16);i++)
  • { outportb(data,p16[i]);
  • donnee();
  • }
  • setfillstyle(1,9); bar(252,160,625,300);
  • setcolor(15); setfillstyle(1,0);
  • settextstyle(1,0,2); outtextxy(280,170,"Entrer une phrase . . .");
  • bar(255,208,622,223); rectangle(254,207,623,224);
  • gotoxy(33,14); gets(sms);
  • settextstyle(1,0,2); r=5;
  • outtextxy(280,230,"Appuyer sur le bouton ENVOIE");
  • outtextxy(280,250,"pour envoyer le message");
  • effaff();
  • char p17[20]=" Appuyer sur";
  • char p18[20]=" ENVOIE";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p17);i++)
  • { outportb(data,p17[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p18);i++)
  • { outportb(data,p18[i]);
  • donnee();
  • }
  • }
  • /****************** FONCTION ENVOIE D'UN MESSAGE A L'AFFICHEUR *************/
  • void envoie()
  • { settextstyle(1,0,2);
  • outtextxy(260,375,"Evoie du message en cours... ");
  • barre(); setcolor(15);
  • setfillstyle(1,9); bar(252,368,625,405);
  • outtextxy(260,363,"Le message vient d'^tre envoyer");
  • outtextxy(260,382," sur l'afficheur LCD");
  • delay(3000); setfillstyle(1,9);
  • bar(252,368,625,405); bar(252,160,625,302);
  • r=0;
  • initaff2();
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • int n=15;
  • int t,d;
  • t=0;
  • while(n>0)
  • { for(i=0;i<n;i++)
  • { outportb(data,0x20);
  • donnee();
  • }
  • for(i=0;i<strlen(sms);i++)
  • { outportb(data,sms[i]);
  • donnee();
  • }
  • n--;
  • delay(50);
  • effaff();
  • }
  • while(t<strlen(sms))
  • { for(i=t;i<strlen(sms);i++)
  • { outportb(data,sms[i]);
  • donnee();
  • }
  • t++;
  • delay(50);
  • effaff();
  • }
  • initaff1();
  • }
  • /*************************** FONCTION FIN **********************************/
  • void fin()
  • { barre();
  • cleardevice();
  • effaff(); //Effacement de l'afficheur
  • char p7[20]=" MERCI ET";
  • char p8[20]=" A BIENTOT";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p7);i++)
  • { outportb(data,p7[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p8);i++)
  • { outportb(data,p8[i]);
  • donnee();
  • }
  • i=0;
  • while(i<200)
  • { setcolor(9); settextstyle(7,0,5); outtextxy(155,50,"LE PROGRAMME");
  • setcolor(15); settextstyle(7,0,5); outtextxy(125,100,"EST MAINTENANT");
  • setcolor(4); settextstyle(7,0,5); outtextxy(200,150,"TERMINER");
  • setcolor(9); settextstyle(7,0,5); outtextxy(225,200,"MERCI");
  • setcolor(15); settextstyle(7,0,5); outtextxy(225,250,"ET A");
  • setcolor(i); settextstyle(10,0,7); outtextxy(100,300,"BIENTOT");
  • i++;
  • }
  • cleardevice(); closegraph(); effaff(); exit (0);
  • }
  • /*********************** FONCTION TEST BOUTON ******************************/
  • int bouton()
  • { int clic=_BX,x=_CX,y=_DX;
  • //Bouton quitter
  • if(clic==1 && x>517 && x<618 && y>418 && y<469)
  • { return 1; }
  • if(x>517 && x<618 && y>418 && y<469)
  • { return 2; }
  • //Bouton affichage espace disque libre
  • if(clic==1 && x>415 && x<620 && y>25 && y<80)
  • { return 3; }
  • if(x>415 && x<620 && y>25 && y<80)
  • { return 4; }
  • //Bouton affichage du nombre de disque ou unit,es
  • if(clic==1 && x>5 && x<245 && y>425 && y<475)
  • { return 5; }
  • if(x>5 && x<245 && y>425 && y<475)
  • { return 6; }
  • //Bouton affichage d'un message sur l'afficheur
  • if(clic==1 && x>300 && x<570 && y>110 && y<155)
  • { return 7; }
  • if(x>300 && x<570 && y>110 && y<155)
  • { return 8; }
  • //Bouton envoie du message sur l'afficheur
  • if(clic==1 && x>314 && x<546 && y>304 && y<366)
  • { return 9; }
  • if(x>314 && x<546 && y>304 && y<366)
  • { return 10; }
  • return 0;
  • }
  • /************************ PROGRAMME PRINCIPAL ******************************/
  • void main()
  • { int test=0;
  • initgraph(); //initialisation de graphique
  • initaff1(); //initialisation de l'afficheur LCD
  • present(); //fonction pr,sentation
  • graph(); //fonction graphique
  • initsouris(); //initialisation de la souris
  • do{ _AX=3; geninterrupt(0x33);
  • test=bouton();
  • //Fonction quitter
  • if(test==1)
  • { fin(); }
  • if(test==2)
  • { setcolor(4); rectangle(517,418,618,469);
  • settextstyle(2,0,7); outtextxy(527,430,"QUITTER");
  • }
  • else
  • { setcolor(15); rectangle(517,418,618,469);
  • settextstyle(2,0,7); outtextxy(527,430,"QUITTER");
  • }
  • //Fonction affichage espace disque libre
  • if(test==3)
  • { espace(); }
  • if(test==4)
  • { setcolor(0); rectangle(415,25,620,80); settextstyle(2,0,7);
  • outtextxy(425,30,"AFFICHAGE ESPACE");
  • outtextxy(450,50,"DISQUE LIBRE");
  • }
  • else
  • { setcolor(15); rectangle(415,25,620,80);
  • settextstyle(2,0,7);
  • outtextxy(425,30,"AFFICHAGE ESPACE");
  • outtextxy(450,50,"DISQUE LIBRE");
  • }
  • //Fonction affichage du nombre de disque ou unit,es
  • if(test==5)
  • { unit(); }
  • if(test==6)
  • { setcolor(0); rectangle(5,425,245,475); settextstyle(2,0,7);
  • outtextxy(10,425,"AFFICHAGE DU NOMBRE");
  • outtextxy(10,450,"DE DISQUE OU UNITEES");
  • }
  • else
  • { setcolor(15); rectangle(5,425,245,475);
  • settextstyle(2,0,7);
  • outtextxy(10,425,"AFFICHAGE DU NOMBRE");
  • outtextxy(10,450,"DE DISQUE OU UNITEES");
  • }
  • //Fonction affichage d'un message sur l'afficheur
  • if(test==7)
  • { message(); }
  • if(test==8)
  • { setcolor(12); rectangle(300,110,570,155); settextstyle(2,0,7);
  • outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
  • outtextxy(325,130,"SUR L'AFFICHEUR LCD");
  • }
  • else
  • { setcolor(15); rectangle(300,110,570,155);
  • settextstyle(2,0,7);
  • outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
  • outtextxy(325,130,"SUR L'AFFICHEUR LCD");
  • }
  • //Fonction bouton envoie du message sur l'afficheur
  • if(test==9)
  • { if(r==5)
  • { envoie(); }
  • else
  • { effaff(); //Effacement de l'afficheur
  • char p19[20]=" AUCUN MESSAGE";
  • char p20[20]=" N'A ETE SAISIE";
  • outportb(data,0x80); //Ecriture sur la 1¦re ligne
  • instruc();
  • for(i=0;i<strlen(p19);i++)
  • { outportb(data,p19[i]);
  • donnee();
  • }
  • outportb(data,0xc0); //Ecriture sur la 2¦me ligne
  • instruc();
  • for(i=0;i<strlen(p20);i++)
  • { outportb(data,p20[i]);
  • donnee();
  • }
  • outtextxy(260,180,"Il n'y a pas de message saisie");
  • outtextxy(260,200,"Veuillez saisir un message");
  • outtextxy(260,220,"En appuyant sur la touche");
  • outtextxy(260,240,"AFFICHAGE D'UN MESSAGE ");
  • delay(6000);
  • setfillstyle(1,9); bar(252,160,625,300); effaff();
  • }
  • }
  • if(test==10)
  • { setcolor(1); rectangle(314,304,546,366); settextstyle(1,0,2);
  • outtextxy(327,310,"ENVOIE DU MESSAGE");
  • outtextxy(325,335,"SUR L'AFFICHEUR LCD");
  • }
  • else
  • { setcolor(15); rectangle(314,304,546,366); settextstyle(1,0,2);
  • outtextxy(327,310,"ENVOIE DU MESSAGE");
  • outtextxy(325,335,"SUR L'AFFICHEUR LCD");
  • }
  • }
  • while(1);
  • }
  • /**************************** Fin de Programme *****************************/
/********************* DECLARATION DES BIBLIOTHEQUES ***********************/
#include      <dos.h>
#include      <dir.h>
#include    <conio.h>
#include    <stdio.h>
#include   <string.h>
#include   <stdlib.h>
#include <graphics.h>

/********************** DECLARATION DES PORTS *****************************/
#define data    0x378     //D,claration de l'adresse du port de donn,e
#define control 0x37a     //D,claration de l'adresse du port de control

/**************** DECLARATION DES VARIABLES EN GLOBALES ********************/
int  i,k,r=0;
char sms[255];

/********************** FONCTION INIT GRAPH ********************************/
void initgraph()
 { int mode=0;
   int carte=DETECT;
   initgraph(&carte,&mode,"..\\Bgi");
 }

/**************** FONCTION INITIALISATION DE LA SOURIS *********************/
void initsouris()
 { _AX=0;  geninterrupt(0x33);   // INITIALISATION DU CURSEUR DE LA SOURIS
   _AX=1;  geninterrupt(0x33);   // AFFICHE LE CURSEUR DE LA SOURIS
   _setcursortype(_NOCURSOR);  	 // ON RETIRE LE CURSEUR DU CLAVIER
 }

/****************** FONCTION INSTRUCTION DE L'AFFICHEUR ********************/
void instruc()
 { outportb(control,0x03);  //E=0 RS=0 R/W=0
   delay(5);
   outportb(control,0x02);  //E=1 RS=0 R/W=0
   delay(5);
   outportb(control,0x03);  //E=0 RS=0 R/W=0
   delay(5);
 }

/******************* FONCTION DONNEES DE L'AFFICHEUR ***********************/
void donnee()
 { outportb(control,0x01);  //E=0 RS=1 R/W=0
   delay(5);
   outportb(control,0x00);  //E=1 RS=1 R/W=0
   delay(5);
   outportb(control,0x01);  //E=0 RS=1 R/W=0
   delay(5);
 }

/******************* FONCTION INITIALISATION DE L'AFFICHEUR ****************/
void initaff1()
 { outportb(data,0x38);  //8 bits + 2 lignes
   instruc();
   outportb(data,0x0c);  //Display ON + sans curseur
   instruc();
   outportb(data,0x06);  //Affichage de droite . gauche
   instruc();
 }
		/***********************************/
void initaff2()
 { outportb(data,0x30);  //8 bits + 1 ligne
   instruc();
   outportb(data,0x0c);  //Display ON + sans curseur
   instruc();
   outportb(data,0x06);  //Affichage de droite . gauche
   instruc();
 }

/****************** FONCTION EFFACAGE DE L'AFFICHEUR LCD *******************/
void effaff()
 { outportb(data,0x01);  //Effacement de l'afficheur
   instruc();
 }

/********************** FONCTION PRESENTATION ******************************/
void present()
 { i=0;
   cleardevice();
   effaff();                         //Effacement de l'afficheur
   char p1[20]="    BONJOUR";
   char p2[20]=" PROG. AFFICHEUR";
   outportb(data,0x80);              //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p1);i++)
     { outportb(data,p1[i]);
       donnee();
     }
   outportb(data,0xc0);              //Eecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p2);i++)
    { outportb(data,p2[i]);
      donnee();
    }
   while(i<200)
      { setcolor(9);   settextstyle(7,0,5);   outtextxy(200,50,"BONJOUR");
	setcolor(15);  settextstyle(7,0,5);   outtextxy(265,100,"ET");
	setcolor(4);   settextstyle(7,0,5);   outtextxy(165,150,"BIENVENUE");
	setcolor(9);   settextstyle(7,0,5);   outtextxy(205,200,"DANS LE");
	setcolor(15);  settextstyle(7,0,5);   outtextxy(165,250,"PROGRAMME");
	setcolor(i);   settextstyle(10,0,7);  outtextxy(55,300,"AFFICHEUR");
	i++;
      }
   cleardevice();
   effaff();                         //Effacement de l'afficheur
   char p3[20]="  REALISER PAR";
   char p4[20]="   LOTH DAVID";
   outportb(data,0x80);              //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p3);i++)
     { outportb(data,p3[i]);
       donnee();
     }
   outportb(data,0xc0);              //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p4);i++)
    { outportb(data,p4[i]);
      donnee();
    }
   i=0;
   while(i<225)
      { setcolor(9);   settextstyle(7,0,5);   outtextxy(200,100,"REALISER");
	setcolor(15);  settextstyle(7,0,5);   outtextxy(265,200,"PAR");
	setcolor(i);   settextstyle(10,0,7);  outtextxy(55,300,"LOTH DAVID");
	i++;
      }
   cleardevice();
   effaff();                         //Effacement de l'afficheur
   char p5[20]="  CHARGEMENT DE";
   char p6[20]=" L'INTERFACE...";
   outportb(data,0x80);              //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p5);i++)
     { outportb(data,p5[i]);
       donnee();
     }
   outportb(data,0xc0);              //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p6);i++)
    { outportb(data,p6[i]);
      donnee();
    }
   setcolor(15);       settextstyle(1,0,6);      setfillstyle(1,1);
   bar(12,55,635,162); rectangle(12,55,635,162);
   outtextxy(100,50,"CHARGEMENT DE");
   outtextxy(20,100,"L'INTERFACE GRAPHIQUE");
   setfillstyle(1,0);  rectangle(24,299,616,351);
   k=25;
   while(k<616)
    { setcolor(4);
      line(k,300,k,350);
      k++;
      delay(10);
    }
 }

/*********************** FONCTION CONVERTION *******************************/
int convert(int n)
 { if(n==0) { return 48; }
   if(n==1) { return 49; }
   if(n==2) { return 50; }
   if(n==3) { return 51; }
   if(n==4) { return 52; }
   if(n==5) { return 53; }
   if(n==6) { return 54; }
   if(n==7) { return 55; }
   if(n==8) { return 56; }
   if(n==9) { return 57; }
   return 0;
 }

/************************* FONCTION GRAPHISQUE *****************************/
void graph()
 { cleardevice();

   //Rectangle principal
   setcolor(15);      setfillstyle(0,0);    bar3d(0,8,628,479,10,10);

   //Rectangle haute
   setcolor(15);          setfillstyle(1,12);
   bar(0,8,628,100);     rectangle(0,8,628,100);

   //Espacelibre
   setcolor(15);             setfillstyle(1,8);
   bar(116,21,284,49);       rectangle(115,20,285,50);
   settextstyle(8,0,3);      outtextxy(125,15,"Espace libre");
   settextstyle(1,0,2);      outtextxy(265,58,"octets libres");
   setfillstyle(1,0);
   bar(20,64,250,79);        rectangle(19,63,251,80);

   //Bouton Affichage espace disque libre
   setcolor(0);              setfillstyle(1,2);    bar(415,25,620,80);
   setcolor(15);             settextstyle(2,0,7);
   outtextxy(425,30,"AFFICHAGE ESPACE");
   outtextxy(450,50,"DISQUE LIBRE");

   //Partie gauche
   setcolor(15);           setfillstyle(1,5);
   bar(0,101,250,478);    rectangle(0,100,250,479);

   //Affichage liste
   setcolor(15);          setfillstyle(1,8);
   bar(38,107,185,120);   rectangle(38,107,185,120);
   settextstyle(0,0,0);   outtextxy(45,110,"LISTE DES UNITEES");
   setfillstyle(1,0);
   bar(6,126,244,374);    rectangle(5,125,245,375);

   //Affichage espace libre
   setcolor(15);             setfillstyle(1,0);
   bar(11,384,49,399);       rectangle(10,383,50,400);
   setcolor(15);
   settextstyle(0,0,0);      outtextxy(65,388,"unit,e(s) pr,sente(s)");

   //Bouton Affichage du nombre de disques ou unit,es
   setcolor(0);              setfillstyle(1,3);    bar(5,425,245,475);
   setcolor(15);             settextstyle(2,0,7);
   outtextxy(10,425,"AFFICHAGE DU NOMBRE");
   outtextxy(10,450,"DE DISQUE OU UNITEES");

   //Partie envoie d'un message
   setcolor(15);             setfillstyle(1,9);
   bar(250,100,627,408);     rectangle(250,100,628,409);

   //Bouton Affichage d'un message
   setcolor(15);           setfillstyle(1,1);          settextstyle(2,0,7);
   bar(301,111,569,154);   rectangle(300,110,570,155);
   outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
   outtextxy(325,130,"SUR L'AFFICHEUR LCD");

   //Bouton envoie du message
   setcolor(15);                setfillstyle(1,4);
   bar(315,305,545,365);        rectangle(314,304,546,366);
   settextstyle(1,0,2);
   outtextxy(327,310,"ENVOIE DU MESSAGE");
   outtextxy(325,335,"SUR L'AFFICHEUR LCD");

   //Partie barre de chargement
   setcolor(15);                setfillstyle(1,14);
   bar(251,410,507,478);        rectangle(250,409,508,479);
   setfillstyle(1,8);
   bar(310,415,450,438);        rectangle(309,414,451,439);
   settextstyle(1,0,2);         outtextxy(315,413,"CHARGEMENT");

   //Barre de chargement
   setcolor(15);            setfillstyle(1,0);    bar(270,445,488,474);

   //Partie bas droite
   setcolor(15);            setfillstyle(1,7);
   bar(508,409,628,479);    rectangle(508,409,628,479);

   //Bouton quitter
   setcolor(0);                  setfillstyle(1,8);
   bar(517,418,618,469);         rectangle(517,418,618,469);
   setcolor(15);                 settextstyle(2,0,7);
   outtextxy(527,430,"QUITTER");
 }

/********************* FONCTION BARRE DE CHARGEMENT ************************/
void barre()
 { k=270;
   effaff();                         //Effacement de l'afficheur
   char p9[20]="   CHARGEMENT";
   char p10[20]="    EN COUR";
   outportb(data,0x80);              //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p9);i++)
     { outportb(data,p9[i]);
       donnee();
     }
   outportb(data,0xc0);              //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p10);i++)
    { outportb(data,p10[i]);
      donnee();
    }
   while(k<487)
    { setcolor(4);
      line(k,445,k,474);
      k++;
      delay(10);
    }
   setfillstyle(1,0);   bar(270,445,488,474);     effaff();
 }

/******************* FONCTION UNITEES PRESENTES ****************************/
void unit()
 { int i=0,save,disk;
   barre();
   effaff();          //Effacement de l'afficheur

   //Sauvegarde des unit,es pr,sentes
   save=getdisk();

   //Ecriture du nombre d'unit,es pr,sentes
   printf("\n\n");
   char p11[20]="UNITEES : ";
   char p12[20];
   int  z=0;
   outportb(data,0xc0);               //Ecriture sur la 2¦me ligne
   instruc();

   //Ecriture des unit,es pr,sentes
   for(disk=0;disk<26;++disk)
     { setdisk(disk);
       if(disk==getdisk())
	 { gotoxy(3,10+z);
	   printf("%c : ",disk+'A');
	   gotoxy(7,10+z);
	   if(disk+'A'=='A')
	     { printf("Disquette"); }
	   if(disk+'A'=='B')
	     { printf("Port USB"); }
	   if(disk+'A'=='C')
	     { printf("Disque Dur"); }
	   if(disk+'A'=='D')
	     { printf("Disque Dur"); }
	   if(disk+'A'=='E')
	     { printf("CD-Rom"); }
	   if(disk+'A'=='F')
	     { printf("Port USB"); }
	   outportb(data,disk+'A');
	   donnee();
	   outportb(data,' ');
	   donnee();
	   z++;
	 }
     }
   setdisk(save);
   p11[11]=convert(z);
   gotoxy(3,25);
   printf("%d",z);
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p11);i++)
     { outportb(data,p11[i]);
       donnee();
     }
   outportb(data,p11[11]);
   donnee();
 }

/************************* FONCTION ESPACE LIBRE ***************************/
void espace()
 { barre();
   struct diskfree_t free;
   long avail;
   if(_dos_getdiskfree(0, &free)!=0)
     { printf("Error in _dos_getdiskfree() call\n");
       exit(1);
     }
   avail=(long)free.avail_clusters
	*(long)free.bytes_per_sector
	*(long)free.sectors_per_cluster;

   gotoxy(4,5);
   printf("%ld",avail);
   effaff();
   char p13[20]="ESPACE LIBRE :";
   char p14[20];
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p13);i++)
     { outportb(data,p13[i]);
      donnee();
     }
   outportb(data,0xc0);               //Ecriture sur la 2¦me ligne
   instruc();



 }

/******************** FONCTION AFFICHAGE D'UN MESSAGE **********************/
void message()
 { barre();
   effaff();                          //Effacement de l'afficheur
   char p15[20]="VEUILLEZ ENTRER";
   char p16[20]=" VOTRE MESSAGE";
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p15);i++)
     { outportb(data,p15[i]);
       donnee();
     }
   outportb(data,0xc0);               //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p16);i++)
    { outportb(data,p16[i]);
      donnee();
    }
   setfillstyle(1,9);           bar(252,160,625,300);
   setcolor(15);                setfillstyle(1,0);
   settextstyle(1,0,2);         outtextxy(280,170,"Entrer une phrase . . .");
   bar(255,208,622,223);        rectangle(254,207,623,224);
   gotoxy(33,14);               gets(sms);
   settextstyle(1,0,2);         r=5;
   outtextxy(280,230,"Appuyer sur le bouton ENVOIE");
   outtextxy(280,250,"pour envoyer le message");
   effaff();
   char p17[20]="  Appuyer sur";
   char p18[20]="    ENVOIE";
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p17);i++)
     { outportb(data,p17[i]);
       donnee();
     }
   outportb(data,0xc0);               //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p18);i++)
    { outportb(data,p18[i]);
      donnee();
    }
 }

/****************** FONCTION ENVOIE D'UN MESSAGE A L'AFFICHEUR *************/
void envoie()
 { settextstyle(1,0,2);
   outtextxy(260,375,"Evoie du message en cours... ");
   barre();                setcolor(15);
   setfillstyle(1,9);      bar(252,368,625,405);
   outtextxy(260,363,"Le message vient d'^tre envoyer");
   outtextxy(260,382,"     sur l'afficheur LCD");
   delay(3000);            setfillstyle(1,9);
   bar(252,368,625,405);   bar(252,160,625,302);
   r=0;
   initaff2();
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   int n=15;
   int t,d;
   t=0;
   while(n>0)
     { for(i=0;i<n;i++)
	 { outportb(data,0x20);
	   donnee();
	 }
       for(i=0;i<strlen(sms);i++)
	 { outportb(data,sms[i]);
	   donnee();
	 }

       n--;
       delay(50);
       effaff();
     }
   while(t<strlen(sms))
     { for(i=t;i<strlen(sms);i++)
	 { outportb(data,sms[i]);
	   donnee();
	 }
       t++;
       delay(50);
       effaff();
     }
   initaff1();
 }

/*************************** FONCTION FIN **********************************/
void fin()
 { barre();
   cleardevice();
   effaff();                          //Effacement de l'afficheur
   char p7[20]="   MERCI  ET";
   char p8[20]="   A BIENTOT";
   outportb(data,0x80);               //Ecriture sur la 1¦re ligne
   instruc();
   for(i=0;i<strlen(p7);i++)
     { outportb(data,p7[i]);
       donnee();
     }
   outportb(data,0xc0);               //Ecriture sur la 2¦me ligne
   instruc();
   for(i=0;i<strlen(p8);i++)
    { outportb(data,p8[i]);
      donnee();
    }
   i=0;
   while(i<200)
      { setcolor(9);   settextstyle(7,0,5);   outtextxy(155,50,"LE PROGRAMME");
	setcolor(15);  settextstyle(7,0,5);   outtextxy(125,100,"EST MAINTENANT");
	setcolor(4);   settextstyle(7,0,5);   outtextxy(200,150,"TERMINER");
	setcolor(9);   settextstyle(7,0,5);   outtextxy(225,200,"MERCI");
	setcolor(15);  settextstyle(7,0,5);   outtextxy(225,250,"ET A");
	setcolor(i);   settextstyle(10,0,7);  outtextxy(100,300,"BIENTOT");
	i++;
      }
   cleardevice();     closegraph();     effaff();      exit (0);
 }

/*********************** FONCTION TEST BOUTON ******************************/
int bouton()
 { int  clic=_BX,x=_CX,y=_DX;

   //Bouton quitter
   if(clic==1 && x>517 && x<618 && y>418 && y<469)
     { return 1; }
   if(x>517 && x<618 && y>418 && y<469)
     { return 2; }

   //Bouton affichage espace disque libre
   if(clic==1 && x>415 && x<620 && y>25 && y<80)
     { return 3; }
   if(x>415 && x<620 && y>25 && y<80)
     { return 4; }

   //Bouton affichage du nombre de disque ou unit,es
   if(clic==1 && x>5 && x<245 && y>425 && y<475)
     { return 5; }
   if(x>5 && x<245 && y>425 && y<475)
     { return 6; }

   //Bouton affichage d'un message sur l'afficheur
   if(clic==1 && x>300 && x<570 && y>110 && y<155)
     { return 7; }
   if(x>300 && x<570 && y>110 && y<155)
     { return 8; }

   //Bouton envoie du message sur l'afficheur
   if(clic==1 && x>314 && x<546 && y>304 && y<366)
     { return 9; }
   if(x>314 && x<546 && y>304 && y<366)
     { return 10; }

   return 0;
 }

/************************ PROGRAMME PRINCIPAL ******************************/
void main()
 { int test=0;
   initgraph();                     //initialisation de graphique
   initaff1(); 	                    //initialisation de l'afficheur LCD
   present();                       //fonction pr,sentation
   graph();                         //fonction graphique
   initsouris();                    //initialisation de la souris
   do{ _AX=3; geninterrupt(0x33);
       test=bouton();

       //Fonction quitter
       if(test==1)
	 { fin(); }
       if(test==2)
	 { setcolor(4);           rectangle(517,418,618,469);
	   settextstyle(2,0,7);   outtextxy(527,430,"QUITTER");
	 }
       else
	 { setcolor(15);          rectangle(517,418,618,469);
	   settextstyle(2,0,7);   outtextxy(527,430,"QUITTER");
	 }

       //Fonction affichage espace disque libre
       if(test==3)
	 { espace(); }
       if(test==4)
	 { setcolor(0);  rectangle(415,25,620,80);  settextstyle(2,0,7);
	   outtextxy(425,30,"AFFICHAGE ESPACE");
	   outtextxy(450,50,"DISQUE LIBRE");
	 }
       else
	 { setcolor(15);  rectangle(415,25,620,80);
	   settextstyle(2,0,7);
	   outtextxy(425,30,"AFFICHAGE ESPACE");
	   outtextxy(450,50,"DISQUE LIBRE");
	 }

       //Fonction affichage du nombre de disque ou unit,es
       if(test==5)
	 { unit(); }
       if(test==6)
	 { setcolor(0);  rectangle(5,425,245,475);  settextstyle(2,0,7);
	   outtextxy(10,425,"AFFICHAGE DU NOMBRE");
	   outtextxy(10,450,"DE DISQUE OU UNITEES");
	 }
       else
	 { setcolor(15);  rectangle(5,425,245,475);
	   settextstyle(2,0,7);
	   outtextxy(10,425,"AFFICHAGE DU NOMBRE");
	   outtextxy(10,450,"DE DISQUE OU UNITEES");
	 }

       //Fonction affichage d'un message sur l'afficheur
       if(test==7)
	 { message(); }
       if(test==8)
	 { setcolor(12);  rectangle(300,110,570,155);   settextstyle(2,0,7);
	   outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
	   outtextxy(325,130,"SUR L'AFFICHEUR LCD");
	 }
       else
	 { setcolor(15);  rectangle(300,110,570,155);
	   settextstyle(2,0,7);
	   outtextxy(310,110,"AFFICHAGE D'UN MESSAGE");
	   outtextxy(325,130,"SUR L'AFFICHEUR LCD");
	 }

       //Fonction bouton envoie du message sur l'afficheur
       if(test==9)
	 { if(r==5)
	     { envoie(); }
	   else
	     { effaff();                       //Effacement de l'afficheur
	       char p19[20]=" AUCUN MESSAGE";
	       char p20[20]=" N'A ETE SAISIE";
	       outportb(data,0x80);            //Ecriture sur la 1¦re ligne
	       instruc();
	       for(i=0;i<strlen(p19);i++)
		 { outportb(data,p19[i]);
		   donnee();
		 }
	       outportb(data,0xc0);            //Ecriture sur la 2¦me ligne
	       instruc();
	       for(i=0;i<strlen(p20);i++)
		 { outportb(data,p20[i]);
		   donnee();
		 }
	       outtextxy(260,180,"Il n'y a pas de message saisie");
	       outtextxy(260,200,"Veuillez saisir un message");
	       outtextxy(260,220,"En appuyant sur la touche");
	       outtextxy(260,240,"AFFICHAGE D'UN MESSAGE ");
	       delay(6000);
	       setfillstyle(1,9);   bar(252,160,625,300);    effaff();
	     }
	 }
       if(test==10)
	 { setcolor(1);  rectangle(314,304,546,366);  settextstyle(1,0,2);
	   outtextxy(327,310,"ENVOIE DU MESSAGE");
	   outtextxy(325,335,"SUR L'AFFICHEUR LCD");
	 }
       else
	 { setcolor(15);  rectangle(314,304,546,366);  settextstyle(1,0,2);
	   outtextxy(327,310,"ENVOIE DU MESSAGE");
	   outtextxy(325,335,"SUR L'AFFICHEUR LCD");
	 }
     }
   while(1);
 }
/**************************** Fin de Programme *****************************/

Commentaires et avis

signaler à un administrateur
Commentaire de sniperfou le 03/06/2004 19:47:10

salut,

je voudrai entrer en contact avec toi, car je vai avoir besoin de ton programme.

snipereyes3@yahoo.fr

merci

@+

signaler à un administrateur
Commentaire de dominion le 08/06/2004 18:39:22

Tu utilise quel port pour envoyer au LCD ? Parallèle ou série ?

signaler à un administrateur
Commentaire de dominion le 08/06/2004 18:57:43

Tu utilise quel port pour envoyer au LCD ? Parallèle ou série ?

signaler à un administrateur
Commentaire de manmarwano le 08/06/2007 18:14:33

tu peux m'aider j'ai un probleme au niveau de programmation PIC

signaler à un administrateur
Commentaire de mahdouchmehdi le 05/10/2008 21:29:04

Bonsoir,
vraiment j'ai apprécié ton programme et je te félicite.

Bon, je veux juste savoir vue ta connaissance sur les LCD, comment je peux afficher sur un LCD une chaine de caractère suite à une activation d'une des pins d'un PIC 16F877.

Merci d'avance.

signaler à un administrateur
Commentaire de EL4 le 05/05/2009 13:49:04

salut

je suis Radia étudiante et j'ai un projet . je doit réaliser
une carte d'acquisition de données par carte à puce on utilisant le
micro contrôleur le pic 16f877 . je doit programmer ma carte par le
Micro C . j'ai des difficultés avec ce language . la partie
d'acquisition de donnée est la plus difficile pour moi . si vous avez
une idée comment je peut programmer ma carte .

bonne journée

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.