Accueil > > > GESTION D'UN AFFICHEUR LCD
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
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|