|
Trouver une ressource
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 *****************************/
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|