|
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 !
AFFICHEUR LCD
Information sur la source
Description
On désire réaliser un projet d'horloge programmée à l'aide vue précédemment LCD, un module LCD 2 lignes de 16 caractères.
Source
- //www.zmtechnologie.av.ma
- #include <dos.h>
- #include <dir.h>
- #include <conio.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <graphics.h>
- #include <time.h>
- #include <math.h>
- #define angle M_PI/180
-
-
- int i,k,r=0;
- char sms[255];
- char unsigned v;
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- int left(int x)
- { if(x<10) return 0;
- else if(x<20) return 1;
- else if(x<30) return 2;
- else if(x<40) return 3;
- else if(x<50) return 4;
- else return 5;
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- int right(int x)
- { while(x>9) x-=10;
- return x;
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- char a[16][8]={
- {0x00,0x00,0x02,0x02,0x1E,0x00,0x02,0x00}, //BI 0
- {0x00,0x00,0x15,0x15,0x1F,0x00,0x00,0x00}, //SS 1
- {0x00,0x00,0x1C,0x14,0x1F,0x10,0x10,0x10}, //MI 2
- {0x14,0x14,0x14,0x14,0x14,0x00,0x00,0x00}, //AL 3
- {0x00,0x04,0x04,0x04,0x1F,0x00,0x00,0x00}, //LLA 4
- {0x00,0x00,0x01,0x07,0x07,0x00,0x00,0x00}, //H 5
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 6
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 7
- {0x05,0x05,0x05,0x15,0x1D,0x10,0x00,0x00}, //AR 8
- {0x00,0x00,0x18,0x04,0x1E,0x00,0x01,0x06}, //RAH 9
- {0x00,0x00,0x0E,0x0A,0x1F,0x00,0x00,0x00}, //MA 10
- {0x01,0x01,0x11,0x05,0x05,0x18,0x00,0x00}, //N 11
- {0x14,0x14,0x14,0x14,0x15,0x00,0x00,0x00}, //A 12
- {0x00,0x00,0x00,0x12,0x1B,0x02,0x06,0x00}, //RR 13
- {0x00,0x00,0x13,0x10,0x1F,0x00,0x08,0x00}, //HI 14
- {0x00,0x00,0x1C,0x14,0x1F,0x10,0x11,0x10} //M 15
- };
-
- char CG_MAT[10][8]={
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04}, //0
- {0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, //1
- {0x0A,0x0E,0x08,0x08,0x08,0x08,0x08,0x08}, //2
- {0x15,0x1A,0x10,0x10,0x10,0x10,0x10,0x10}, //3
- {0x0C,0x10,0x08,0x04,0x08,0x10,0x08,0x06}, //4
- {0x00,0x00,0x06,0x0A,0x0A,0x0A,0x06,0x00}, //5
- {0x0A,0x04,0x02,0x02,0x02,0x02,0x02,0x02}, //6
- {0x11,0x09,0x09,0x06,0x06,0x04,0x04,0x00}, //7
- {0x00,0x04,0x04,0x06,0x06,0x09,0x09,0x11}, //8
- {0x0E,0x0A,0x0A,0x0A,0x0E,0x02,0x02,0x02} //9
- };
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void outdata(unsigned char d)
- {
- outportb(890,0x06);
- outportb(888,d);
- delay(2);
- outportb(890,0x07);
- delay(2);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void outcmd(unsigned char c) //outcmd ()
- {
- outportb(890,0x02);
- outportb(888,c);
- delay(2);
- outportb(890,0x03);
- delay(2);
- }
- void LigneColonne(unsigned char Ligne, unsigned char Colonne)
- {
- if(Ligne==1) outcmd(0x80+Colonne);
- if(Ligne==2) outcmd(0xC0+Colonne);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void init(void)
- {
- outcmd(0x38);
- outcmd(0x0C);
- outcmd(0x06);
- outcmd(0x01);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void montrear(void)
- {
- int c1,i,c2,c3,c4,c5,c6,jour;
- struct time t;
- init();
- gettime(&t);
- c1=right(t.ti_sec);
- c2=left(t.ti_sec);
- c3=right(t.ti_min);
- c4=left(t.ti_min);
- c5=right(t.ti_hour);
- c6=left(t.ti_hour);
- outcmd(0x40);
- for(i=0;i<8;i++)outdata(CG_MAT[c6][i]);for(i=0;i<8;i++)outdata(CG_MAT[c5][i]);
- for(i=0;i<8;i++)outdata(CG_MAT[c4][i]);for(i=0;i<8;i++)outdata(CG_MAT[c3][i]);
- for(i=0;i<8;i++)outdata(CG_MAT[c2][i]);for(i=0;i<8;i++)outdata(CG_MAT[c1][i]);
- LigneColonne(2,3) ;
- outdata(0x00);outdata(0x01);outdata(':');outdata(0x02);
- outdata(0x03);outdata(':');outdata(0x04);outdata(0x05);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void txt(void)
- {
- int i,j=16;
- char x[40];time_t t;
- time(&t);
- init();
- outcmd(0x01);
- strcpy(x,ctime(&t));
- for(i=0;i<11;i++) { outcmd(0x80+j); outdata(x[i]); j++; delay(2); }
- for(i=20;i<24;i++){ outcmd(0x80+j); outdata(x[i]); j++; delay(2); }
- for(;;)
- { for(i=0;i<16;i++) {outcmd(0x19); delay(400); }
- v=inportb(889);if(v==192)break;
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void msg(void)
- {
- char unsigned emsi[40];
- strcpy(emsi,"choisi l'interrupteur :");
- init();
- outcmd(0x01);
- outcmd(0x80);
- for(;;)
- { if(v!=128) break;
- for(i=0;i<23;i++) { LigneColonne(1,i+16); outdata(emsi[i]);}
- for(i=0;i<16;i++) { outcmd(0x19); delay(200);v=inportb(889);if(v!=128) break; }
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void horl1(void)
- {
- int i,j,c1,c2,c3,c4,c5,c6;
- struct time t;
- init();
- outcmd(0x40);
- for(j=7;j>=0;j--)
- for(i=0;i<8;i++) outdata(a[j][i]);
- LigneColonne(2,3);
- outdata(0x00);
- outdata(0x01);
- outdata(0x02);
- outdata(0x03);
- outdata(0x04);
- outdata(0x05);
- outdata(0x06);
- outdata(0x07);
- delay(1000);
- outcmd(0x40);
- for(j=15;j>=8;j--)
- for(i=0;i<8;i++) outdata(a[j][i]);
- LigneColonne(2,3) ;
- outdata(0x00);
- outdata(0x01);
- outdata(0x02);
- outdata(0x03);
- outdata(0x04);
- outdata(0x05);
- outdata(0x06);
- outdata(0x07);
- delay(1000);
- gettime(&t);
- c1=right(t.ti_sec);
- c2=left(t.ti_sec);
- c3=right(t.ti_min);
- c4=left(t.ti_min);
- c5=right(t.ti_hour);
- c6=left(t.ti_hour);
- for(;;)
- {
- v=inportb(889);
- if(v==192)break;
- outcmd(0x40);
- for(i=0;i<8;i++)outdata(CG_MAT[c6][i]);for(i=0;i<8;i++)outdata(CG_MAT[c5][i]);
- for(i=0;i<8;i++)outdata(CG_MAT[c4][i]);for(i=0;i<8;i++)outdata(CG_MAT[c3][i]);
- for(i=0;i<8;i++)outdata(CG_MAT[c2][i]);for(i=0;i<8;i++)outdata(CG_MAT[c1][i]);
- LigneColonne(2,3) ;
- outdata(0x00);outdata(0x01);
- outdata(':');
- outdata(0x02);outdata(0x03);
- outdata(':');
- outdata(0x04);outdata(0x05);
- gotoxy(3,5);
- printf("%d%d:%d%d:%d%d",c6,c5,c4,c3,c2,c1);
- c1++;
- if(c1==10){c1=0;c2++;}if(c2==6){c2=0;c3++;}if(c3==10){c3=0;c4++;}
- if(c4==6){c4=0;c5++;}if(c5==10){c5=0;c6++;}if(c6==2&&c5==4){c5=0;c6=0;}
- delay(1000);
- }
- }
-
- ////////////////////////////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
- }
-
- ////////////////////////////////////montre///////////////////////////////////////////////////////
-
- void dessine(int x1,int y1,int x2, int y2,int coul)
- {
- int i,j;
- for(i=x1;i<=x2;i++)
- for(j=y1;j<=y2;j++)
- putpixel(i,j,coul);
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
- /////////////////////////////////////Decoration//////////////////////////////////////////////////
-
- void decoration(void)
- {
- bar3d(getmaxx()-40,20,getmaxx()-20,450,0,0);
- rectangle(getmaxx()-35,25,getmaxx()-25,445);
- rectangle(getmaxx()-35+2,25+2,getmaxx()-25-2,445-2);
- bar3d(20,20,40,450,0,0);
- rectangle(25,25,35,445);
- rectangle(27,27,33,443);
- bar3d(60,417,getmaxx()-60,440,0,0);
- rectangle(65,422,getmaxx()-65,435);
- rectangle(70,427,getmaxx()-70,430);
- setfillstyle(8,9);
- bar3d(95,30,550,150,4,4);
- setfillstyle(1,9);
- bar3d(getmaxx()-60,30,getmaxx()-80,150,0,0);
- rectangle(getmaxx()-62,32,getmaxx()-78,148);
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void forme_montre(void)
- {
- setfillstyle(1,9);
- bar3d(230,200,415,410,0,0);
- bar3d(160,200,215,410,0,0);
- bar3d(430,200,485,410,0,0);
- rectangle(235,205,410,405);
- bar3d(95,200,150,410,0,0);
- bar3d(495,200,550,410,0,0);
- setcolor(15);
- rectangle(95,200,150,410);
- rectangle(96,201,149,409);
- rectangle(495,200,550,410);
- rectangle(496,201,549,409);
- rectangle(160,200,215,410);
- rectangle(161,201,214,409);
- rectangle(430,200,485,410);
- rectangle(431,201,484,409);
- setcolor(0);
- rectangle(236,207,409,404);
- setcolor(15);
- circle(320,300,70);
- settextstyle(2,0,4);
- outtextxy(320,372,"6");
- outtextxy(315,215,"12");
- outtextxy(280,360,"7");
- outtextxy(355,225,"1");
- outtextxy(385,250,"2");
- outtextxy(250,330,"8");
- outtextxy(240,293,"9");
- outtextxy(245,255,"10");
- outtextxy(273,225,"11");
- outtextxy(397,293,"3");
- outtextxy(390,325,"4");
- outtextxy(360,360,"5");
- for(int m=1;m<=12;m++)
- { setcolor(0);
- int tirx=320+70*sin(m*30*angle);
- int tiry=292-70*cos(m*30*angle);
- outtextxy(tirx,tiry,".");
- }
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void erogonomie_centrale(void)
- {
- int i;
- forme_montre();
- settextstyle(7,1,1);
- setcolor(9);
- }
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- void montre(void)
- {
- int minutes,sec,heu,xminutes,
- yminutes,xheu,yheu,xsec,
- ysec,attendre,traitx,traity,
- varchar,ok,nbout,xs,ys,bg,bd;
- char chaine[3];
- struct time Heure_actuelle;
- init();
- xminutes=320+40*sin(minutes*6*angle);
- yminutes=300-40*cos(minutes*6*angle);
- xheu=320+30*sin(minutes*0.5*angle+(heu*30*angle));
- yheu=300-30*cos(minutes*0.5*angle+(heu*30*angle));
- erogonomie_centrale();
- do{
- gettime(&Heure_actuelle);
- sec=Heure_actuelle.ti_sec;
- minutes=Heure_actuelle.ti_min;
- heu=Heure_actuelle.ti_hour;
- attendre=sec;
- setcolor(15);
- settextstyle(4,0,1);
- setcolor(9);
- line(320,300,xheu,yheu);
- xheu=320+30*sin(minutes*0.5*angle+(heu*30*angle));
- yheu=300-30*cos(minutes*0.5*angle+(heu*30*angle));
- setcolor(4);
- line(320,300,xheu,yheu);
-
- //Affichage aiguille des minutes
- setcolor(9);
- line(320,300,xminutes,yminutes);
- xminutes=320+40*sin(minutes*6*angle);
- yminutes=300-40*cos(minutes*6*angle);
- setcolor(5);
- line(320,300,xminutes,yminutes);
- montrear();
- //Affichage aiguille des secondes
- xsec=320+60*sin((sec)*6*angle);
- ysec=300-60*cos((sec)*6*angle);
- setcolor(14);
- line(320,300,xsec,ysec);
-
- while(1){
- gettime(&Heure_actuelle);
- sec=Heure_actuelle.ti_sec;
- if(attendre!=sec) break;
- }
- setcolor(9);
- line(320,300,xsec,ysec);
- settextstyle(2,0,4);
- }
- while(!kbhit());
- }
- //////////////////////FONCTION EFFACAGE DE L'AFFICHEUR LCD ////////////////////////////
-
- void effaff()
- { outcmd(0x01); } //Effacement de l'afficheur
-
- ///////////////////////////FONCTION PRESENTATION//////////////////////////////////////////
-
- void present()
- { i=0;
- cleardevice();
- effaff(); //Effacement de l'afficheur
- char p1[20]=" BONJOUR";
- char p2[20]=" PROG. AFFICHEUR";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p1);i++) outdata(p1[i]);
- outcmd(0xc0); //Eecriture sur la 2?me ligne
- for(i=0;i<strlen(p2);i++) outdata(p2[i]);
- 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]="zakaria & tarik";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p3);i++) outdata(p3[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p4);i++) outdata(p4[i]);
- 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,4); outtextxy(75,300,"ZAKARIA & TARIK");
- i++;
- }
- cleardevice();
- effaff(); //Effacement de l'afficheur
- char p5[20]=" CHARGEMENT DE";
- char p6[20]=" L'INTERFACE...";
- outcmd(0x80); //Ecriture sur la 1Šre ligne
- for(i=0;i<strlen(p5);i++) outdata(p5[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p6);i++) outdata(p6[i]);
- 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,"MINI PROJET");
- settextstyle(1,0,2); outtextxy(265,58,"h/min/s");
- 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");
- outtextxy(425,30," AFFICHAGE ");
- outtextxy(450,50," MONTRE ");
-
- //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,"CONTROLE");
- 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,"MENU");
- //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");
- outtextxy(10,425," BOITE DE CONTROL ");
- outtextxy(10,450,"( REGISTRE D'ETAT ) ");
-
- //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";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p9);i++) outdata(p9[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p10);i++) outdata(p10[i]);
- while(k<487)
- { setcolor(4); line(k,445,k,474); k++; delay(10); }
- setfillstyle(1,0); bar(270,445,488,474); effaff();
- }
-
- //////////////////////////////// Main () /////////////////////////////////////////////////////////
-
- 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]="MENU ON ";
- char p12[20];
- outdata(0xc0); //Ecriture sur la 2?me ligne
- effaff(); //Effacement de l'afficheur
- gotoxy(3,10); printf(" /E7 E6 E5 E4 E3");
- gotoxy(3,11); printf("F1 1 0 0 0 1");
- gotoxy(3,12); printf("F2 1 0 0 1 0");
- gotoxy(3,13); printf("F3 1 1 0 0 0");
- gotoxy(3,15); printf("F1 -> Horloge SystŠme");
- gotoxy(3,16); printf(" (caractŠre Indous)");
- gotoxy(3,19); printf("F2 -> Date");
- gotoxy(3,20); printf("F3 -> MENU");
- for(;;)
- { gotoxy(3,25);
- printf("OFF");
- v=inportb(889);
- if(v!=128&&v!=136&&v!=144&&v!=160)break;
- if(v==136) {horl1();gotoxy(3,25);printf(" ON");init();
- }
- if(v==144) {txt();
- }
- if(v==128 ) {
- msg();
- }
- }
-
-
- setdisk(save);
- init();
- gotoxy(3,25);
- printf(" ON");
-
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p11);i++)
- { outdata(p11[i]);
- }
- }
-
- ///////////////////////// FONCTION AFFICHAGE D'UN MESSAGE /////////////////////////////
-
- void message()
- { barre();
- effaff(); //Effacement de l'afficheur
- char p15[20]="VEUILLEZ ENTRER";
- char p16[20]=" VOTRE MESSAGE";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p15);i++) outdata(p15[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p16);i++) outdata(p16[i]);
- 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";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p17);i++) outdata(p17[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p18);i++) outdata(p18[i]);
- }
-
- ///////////////////// FONCTION ENVOIE D'UN MESSAGE A L'AFFICHEUR ////////////////////
-
- void envoie()
- { settextstyle(1,0,2);
- outtextxy(260,375,"Envoie 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;
- init();
- outcmd(0x80); //Ecriture sur la 1?re ligne
- int n=15;
- int t,d;
- t=0;
-
- while(n>0)
- { for(i=0;i<n;i++) outdata(0x20);
- for(i=0;i<strlen(sms);i++) outdata(sms[i]);
- n--;
- delay(50);
- effaff();
- }
-
- while(t<strlen(sms))
- { for(i=t;i<strlen(sms);i++) outdata(sms[i]);
- t++;
- delay(50);
- effaff();
- }
- init();
- }
-
-
-
-
-
- ///////////////////////////// FONCTION FIN ////////////////////////////////////////////////////
-
- void fin()
- { barre();
- cleardevice();
- effaff(); //Effacement de l'afficheur
- char p7[20]=" MERCI ET";
- char p8[20]=" A BIENTOT";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p7);i++) outdata(p7[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p8);i++) outdata(p8[i]);
- 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(); //alisation de graphique
- init(); //alisation de l'afficheur LCD
- present(); //fonction pr?sentation
- graph(); //fonction graphique
- initsouris(); //alsation 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");
- }
-
- if(test==3)
- { //espace();
- clrscr();
- montre(); graph(); }
- if(test==4)
- { setcolor(0); rectangle(415,25,620,80); settextstyle(2,0,7);
- outtextxy(425,30," AFFICHAGE ");
- outtextxy(450,50," MONTRE ");
- }
- else
- { setcolor(15); rectangle(415,25,620,80);
- settextstyle(2,0,7);
- outtextxy(425,30," AFFICHAGE ");
- outtextxy(450,50," MONTRE ");
- }
-
- if(test==5)
- { unit(); }
- if(test==6)
- { setcolor(0); rectangle(5,425,245,475); settextstyle(2,0,7);
- outtextxy(10,425," BOITE DE CONTROL ");
- outtextxy(10,450,"( REGISTRE D'ETAT ) ");
- }
- else
- { setcolor(15); rectangle(5,425,245,475);
- settextstyle(2,0,7);
- outtextxy(10,425," BOITE DE CONTROL ");
- outtextxy(10,450,"( REGISTRE D'ETAT ) ");
- }
-
- //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";
- outcmd(0x80); //Ecriture sur la 1?re ligne
- for(i=0;i<strlen(p19);i++) outdata(p19[i]);
- outcmd(0xc0); //Ecriture sur la 2?me ligne
- for(i=0;i<strlen(p20);i++) outdata(p20[i]);
- 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 //////////////////////////////////////////////
//www.zmtechnologie.av.ma
#include <dos.h>
#include <dir.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <graphics.h>
#include <time.h>
#include <math.h>
#define angle M_PI/180
int i,k,r=0;
char sms[255];
char unsigned v;
///////////////////////////////////////////////////////////////////////////////////////////////////
int left(int x)
{ if(x<10) return 0;
else if(x<20) return 1;
else if(x<30) return 2;
else if(x<40) return 3;
else if(x<50) return 4;
else return 5;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
int right(int x)
{ while(x>9) x-=10;
return x;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
char a[16][8]={
{0x00,0x00,0x02,0x02,0x1E,0x00,0x02,0x00}, //BI 0
{0x00,0x00,0x15,0x15,0x1F,0x00,0x00,0x00}, //SS 1
{0x00,0x00,0x1C,0x14,0x1F,0x10,0x10,0x10}, //MI 2
{0x14,0x14,0x14,0x14,0x14,0x00,0x00,0x00}, //AL 3
{0x00,0x04,0x04,0x04,0x1F,0x00,0x00,0x00}, //LLA 4
{0x00,0x00,0x01,0x07,0x07,0x00,0x00,0x00}, //H 5
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 6
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 7
{0x05,0x05,0x05,0x15,0x1D,0x10,0x00,0x00}, //AR 8
{0x00,0x00,0x18,0x04,0x1E,0x00,0x01,0x06}, //RAH 9
{0x00,0x00,0x0E,0x0A,0x1F,0x00,0x00,0x00}, //MA 10
{0x01,0x01,0x11,0x05,0x05,0x18,0x00,0x00}, //N 11
{0x14,0x14,0x14,0x14,0x15,0x00,0x00,0x00}, //A 12
{0x00,0x00,0x00,0x12,0x1B,0x02,0x06,0x00}, //RR 13
{0x00,0x00,0x13,0x10,0x1F,0x00,0x08,0x00}, //HI 14
{0x00,0x00,0x1C,0x14,0x1F,0x10,0x11,0x10} //M 15
};
char CG_MAT[10][8]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04}, //0
{0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, //1
{0x0A,0x0E,0x08,0x08,0x08,0x08,0x08,0x08}, //2
{0x15,0x1A,0x10,0x10,0x10,0x10,0x10,0x10}, //3
{0x0C,0x10,0x08,0x04,0x08,0x10,0x08,0x06}, //4
{0x00,0x00,0x06,0x0A,0x0A,0x0A,0x06,0x00}, //5
{0x0A,0x04,0x02,0x02,0x02,0x02,0x02,0x02}, //6
{0x11,0x09,0x09,0x06,0x06,0x04,0x04,0x00}, //7
{0x00,0x04,0x04,0x06,0x06,0x09,0x09,0x11}, //8
{0x0E,0x0A,0x0A,0x0A,0x0E,0x02,0x02,0x02} //9
};
///////////////////////////////////////////////////////////////////////////////////////////////////
void outdata(unsigned char d)
{
outportb(890,0x06);
outportb(888,d);
delay(2);
outportb(890,0x07);
delay(2);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void outcmd(unsigned char c) //outcmd ()
{
outportb(890,0x02);
outportb(888,c);
delay(2);
outportb(890,0x03);
delay(2);
}
void LigneColonne(unsigned char Ligne, unsigned char Colonne)
{
if(Ligne==1) outcmd(0x80+Colonne);
if(Ligne==2) outcmd(0xC0+Colonne);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void init(void)
{
outcmd(0x38);
outcmd(0x0C);
outcmd(0x06);
outcmd(0x01);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void montrear(void)
{
int c1,i,c2,c3,c4,c5,c6,jour;
struct time t;
init();
gettime(&t);
c1=right(t.ti_sec);
c2=left(t.ti_sec);
c3=right(t.ti_min);
c4=left(t.ti_min);
c5=right(t.ti_hour);
c6=left(t.ti_hour);
outcmd(0x40);
for(i=0;i<8;i++)outdata(CG_MAT[c6][i]);for(i=0;i<8;i++)outdata(CG_MAT[c5][i]);
for(i=0;i<8;i++)outdata(CG_MAT[c4][i]);for(i=0;i<8;i++)outdata(CG_MAT[c3][i]);
for(i=0;i<8;i++)outdata(CG_MAT[c2][i]);for(i=0;i<8;i++)outdata(CG_MAT[c1][i]);
LigneColonne(2,3) ;
outdata(0x00);outdata(0x01);outdata(':');outdata(0x02);
outdata(0x03);outdata(':');outdata(0x04);outdata(0x05);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void txt(void)
{
int i,j=16;
char x[40];time_t t;
time(&t);
init();
outcmd(0x01);
strcpy(x,ctime(&t));
for(i=0;i<11;i++) { outcmd(0x80+j); outdata(x[i]); j++; delay(2); }
for(i=20;i<24;i++){ outcmd(0x80+j); outdata(x[i]); j++; delay(2); }
for(;;)
{ for(i=0;i<16;i++) {outcmd(0x19); delay(400); }
v=inportb(889);if(v==192)break;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void msg(void)
{
char unsigned emsi[40];
strcpy(emsi,"choisi l'interrupteur :");
init();
outcmd(0x01);
outcmd(0x80);
for(;;)
{ if(v!=128) break;
for(i=0;i<23;i++) { LigneColonne(1,i+16); outdata(emsi[i]);}
for(i=0;i<16;i++) { outcmd(0x19); delay(200);v=inportb(889);if(v!=128) break; }
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void horl1(void)
{
int i,j,c1,c2,c3,c4,c5,c6;
struct time t;
init();
outcmd(0x40);
for(j=7;j>=0;j--)
for(i=0;i<8;i++) outdata(a[j][i]);
LigneColonne(2,3);
outdata(0x00);
outdata(0x01);
outdata(0x02);
outdata(0x03);
outdata(0x04);
outdata(0x05);
outdata(0x06);
outdata(0x07);
delay(1000);
outcmd(0x40);
for(j=15;j>=8;j--)
for(i=0;i<8;i++) outdata(a[j][i]);
LigneColonne(2,3) ;
outdata(0x00);
outdata(0x01);
outdata(0x02);
outdata(0x03);
outdata(0x04);
outdata(0x05);
outdata(0x06);
outdata(0x07);
delay(1000);
gettime(&t);
c1=right(t.ti_sec);
c2=left(t.ti_sec);
c3=right(t.ti_min);
c4=left(t.ti_min);
c5=right(t.ti_hour);
c6=left(t.ti_hour);
for(;;)
{
v=inportb(889);
if(v==192)break;
outcmd(0x40);
for(i=0;i<8;i++)outdata(CG_MAT[c6][i]);for(i=0;i<8;i++)outdata(CG_MAT[c5][i]);
for(i=0;i<8;i++)outdata(CG_MAT[c4][i]);for(i=0;i<8;i++)outdata(CG_MAT[c3][i]);
for(i=0;i<8;i++)outdata(CG_MAT[c2][i]);for(i=0;i<8;i++)outdata(CG_MAT[c1][i]);
LigneColonne(2,3) ;
outdata(0x00);outdata(0x01);
outdata(':');
outdata(0x02);outdata(0x03);
outdata(':');
outdata(0x04);outdata(0x05);
gotoxy(3,5);
printf("%d%d:%d%d:%d%d",c6,c5,c4,c3,c2,c1);
c1++;
if(c1==10){c1=0;c2++;}if(c2==6){c2=0;c3++;}if(c3==10){c3=0;c4++;}
if(c4==6){c4=0;c5++;}if(c5==10){c5=0;c6++;}if(c6==2&&c5==4){c5=0;c6=0;}
delay(1000);
}
}
////////////////////////////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
}
////////////////////////////////////montre///////////////////////////////////////////////////////
void dessine(int x1,int y1,int x2, int y2,int coul)
{
int i,j;
for(i=x1;i<=x2;i++)
for(j=y1;j<=y2;j++)
putpixel(i,j,coul);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////Decoration//////////////////////////////////////////////////
void decoration(void)
{
bar3d(getmaxx()-40,20,getmaxx()-20,450,0,0);
rectangle(getmaxx()-35,25,getmaxx()-25,445);
rectangle(getmaxx()-35+2,25+2,getmaxx()-25-2,445-2);
bar3d(20,20,40,450,0,0);
rectangle(25,25,35,445);
rectangle(27,27,33,443);
bar3d(60,417,getmaxx()-60,440,0,0);
rectangle(65,422,getmaxx()-65,435);
rectangle(70,427,getmaxx()-70,430);
setfillstyle(8,9);
bar3d(95,30,550,150,4,4);
setfillstyle(1,9);
bar3d(getmaxx()-60,30,getmaxx()-80,150,0,0);
rectangle(getmaxx()-62,32,getmaxx()-78,148);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void forme_montre(void)
{
setfillstyle(1,9);
bar3d(230,200,415,410,0,0);
bar3d(160,200,215,410,0,0);
bar3d(430,200,485,410,0,0);
rectangle(235,205,410,405);
bar3d(95,200,150,410,0,0);
bar3d(495,200,550,410,0,0);
setcolor(15);
rectangle(95,200,150,410);
rectangle(96,201,149,409);
rectangle(495,200,550,410);
rectangle(496,201,549,409);
rectangle(160,200,215,410);
rectangle(161,201,214,409);
rectangle(430,200,485,410);
rectangle(431,201,484,409);
setcolor(0);
rectangle(236,207,409,404);
setcolor(15);
circle(320,300,70);
settextstyle(2,0,4);
outtextxy(320,372,"6");
outtextxy(315,215,"12");
outtextxy(280,360,"7");
outtextxy(355,225,"1");
outtextxy(385,250,"2");
outtextxy(250,330,"8");
outtextxy(240,293,"9");
outtextxy(245,255,"10");
outtextxy(273,225,"11");
outtextxy(397,293,"3");
outtextxy(390,325,"4");
outtextxy(360,360,"5");
for(int m=1;m<=12;m++)
{ setcolor(0);
int tirx=320+70*sin(m*30*angle);
int tiry=292-70*cos(m*30*angle);
outtextxy(tirx,tiry,".");
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void erogonomie_centrale(void)
{
int i;
forme_montre();
settextstyle(7,1,1);
setcolor(9);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
void montre(void)
{
int minutes,sec,heu,xminutes,
yminutes,xheu,yheu,xsec,
ysec,attendre,traitx,traity,
varchar,ok,nbout,xs,ys,bg,bd;
char chaine[3];
struct time Heure_actuelle;
init();
xminutes=320+40*sin(minutes*6*angle);
yminutes=300-40*cos(minutes*6*angle);
xheu=320+30*sin(minutes*0.5*angle+(heu*30*angle));
yheu=300-30*cos(minutes*0.5*angle+(heu*30*angle));
erogonomie_centrale();
do{
gettime(&Heure_actuelle);
sec=Heure_actuelle.ti_sec;
minutes=Heure_actuelle.ti_min;
heu=Heure_actuelle.ti_hour;
attendre=sec;
setcolor(15);
settextstyle(4,0,1);
setcolor(9);
line(320,300,xheu,yheu);
xheu=320+30*sin(minutes*0.5*angle+(heu*30*angle));
yheu=300-30*cos(minutes*0.5*angle+(heu*30*angle));
setcolor(4);
line(320,300,xheu,yheu);
//Affichage aiguille des minutes
setcolor(9);
line(320,300,xminutes,yminutes);
xminutes=320+40*sin(minutes*6*angle);
yminutes=300-40*cos(minutes*6*angle);
setcolor(5);
line(320,300,xminutes,yminutes);
montrear();
//Affichage aiguille des secondes
xsec=320+60*sin((sec)*6*angle);
ysec=300-60*cos((sec)*6*angle);
setcolor(14);
line(320,300,xsec,ysec);
while(1){
gettime(&Heure_actuelle);
sec=Heure_actuelle.ti_sec;
if(attendre!=sec) break;
}
setcolor(9);
line(320,300,xsec,ysec);
settextstyle(2,0,4);
}
while(!kbhit());
}
//////////////////////FONCTION EFFACAGE DE L'AFFICHEUR LCD ////////////////////////////
void effaff()
{ outcmd(0x01); } //Effacement de l'afficheur
///////////////////////////FONCTION PRESENTATION//////////////////////////////////////////
void present()
{ i=0;
cleardevice();
effaff(); //Effacement de l'afficheur
char p1[20]=" BONJOUR";
char p2[20]=" PROG. AFFICHEUR";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p1);i++) outdata(p1[i]);
outcmd(0xc0); //Eecriture sur la 2?me ligne
for(i=0;i<strlen(p2);i++) outdata(p2[i]);
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]="zakaria & tarik";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p3);i++) outdata(p3[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p4);i++) outdata(p4[i]);
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,4); outtextxy(75,300,"ZAKARIA & TARIK");
i++;
}
cleardevice();
effaff(); //Effacement de l'afficheur
char p5[20]=" CHARGEMENT DE";
char p6[20]=" L'INTERFACE...";
outcmd(0x80); //Ecriture sur la 1Šre ligne
for(i=0;i<strlen(p5);i++) outdata(p5[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p6);i++) outdata(p6[i]);
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,"MINI PROJET");
settextstyle(1,0,2); outtextxy(265,58,"h/min/s");
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");
outtextxy(425,30," AFFICHAGE ");
outtextxy(450,50," MONTRE ");
//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,"CONTROLE");
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,"MENU");
//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");
outtextxy(10,425," BOITE DE CONTROL ");
outtextxy(10,450,"( REGISTRE D'ETAT ) ");
//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";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p9);i++) outdata(p9[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p10);i++) outdata(p10[i]);
while(k<487)
{ setcolor(4); line(k,445,k,474); k++; delay(10); }
setfillstyle(1,0); bar(270,445,488,474); effaff();
}
//////////////////////////////// Main () /////////////////////////////////////////////////////////
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]="MENU ON ";
char p12[20];
outdata(0xc0); //Ecriture sur la 2?me ligne
effaff(); //Effacement de l'afficheur
gotoxy(3,10); printf(" /E7 E6 E5 E4 E3");
gotoxy(3,11); printf("F1 1 0 0 0 1");
gotoxy(3,12); printf("F2 1 0 0 1 0");
gotoxy(3,13); printf("F3 1 1 0 0 0");
gotoxy(3,15); printf("F1 -> Horloge SystŠme");
gotoxy(3,16); printf(" (caractŠre Indous)");
gotoxy(3,19); printf("F2 -> Date");
gotoxy(3,20); printf("F3 -> MENU");
for(;;)
{ gotoxy(3,25);
printf("OFF");
v=inportb(889);
if(v!=128&&v!=136&&v!=144&&v!=160)break;
if(v==136) {horl1();gotoxy(3,25);printf(" ON");init();
}
if(v==144) {txt();
}
if(v==128 ) {
msg();
}
}
setdisk(save);
init();
gotoxy(3,25);
printf(" ON");
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p11);i++)
{ outdata(p11[i]);
}
}
///////////////////////// FONCTION AFFICHAGE D'UN MESSAGE /////////////////////////////
void message()
{ barre();
effaff(); //Effacement de l'afficheur
char p15[20]="VEUILLEZ ENTRER";
char p16[20]=" VOTRE MESSAGE";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p15);i++) outdata(p15[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p16);i++) outdata(p16[i]);
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";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p17);i++) outdata(p17[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p18);i++) outdata(p18[i]);
}
///////////////////// FONCTION ENVOIE D'UN MESSAGE A L'AFFICHEUR ////////////////////
void envoie()
{ settextstyle(1,0,2);
outtextxy(260,375,"Envoie 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;
init();
outcmd(0x80); //Ecriture sur la 1?re ligne
int n=15;
int t,d;
t=0;
while(n>0)
{ for(i=0;i<n;i++) outdata(0x20);
for(i=0;i<strlen(sms);i++) outdata(sms[i]);
n--;
delay(50);
effaff();
}
while(t<strlen(sms))
{ for(i=t;i<strlen(sms);i++) outdata(sms[i]);
t++;
delay(50);
effaff();
}
init();
}
///////////////////////////// FONCTION FIN ////////////////////////////////////////////////////
void fin()
{ barre();
cleardevice();
effaff(); //Effacement de l'afficheur
char p7[20]=" MERCI ET";
char p8[20]=" A BIENTOT";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p7);i++) outdata(p7[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p8);i++) outdata(p8[i]);
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(); //alisation de graphique
init(); //alisation de l'afficheur LCD
present(); //fonction pr?sentation
graph(); //fonction graphique
initsouris(); //alsation 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");
}
if(test==3)
{ //espace();
clrscr();
montre(); graph(); }
if(test==4)
{ setcolor(0); rectangle(415,25,620,80); settextstyle(2,0,7);
outtextxy(425,30," AFFICHAGE ");
outtextxy(450,50," MONTRE ");
}
else
{ setcolor(15); rectangle(415,25,620,80);
settextstyle(2,0,7);
outtextxy(425,30," AFFICHAGE ");
outtextxy(450,50," MONTRE ");
}
if(test==5)
{ unit(); }
if(test==6)
{ setcolor(0); rectangle(5,425,245,475); settextstyle(2,0,7);
outtextxy(10,425," BOITE DE CONTROL ");
outtextxy(10,450,"( REGISTRE D'ETAT ) ");
}
else
{ setcolor(15); rectangle(5,425,245,475);
settextstyle(2,0,7);
outtextxy(10,425," BOITE DE CONTROL ");
outtextxy(10,450,"( REGISTRE D'ETAT ) ");
}
//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";
outcmd(0x80); //Ecriture sur la 1?re ligne
for(i=0;i<strlen(p19);i++) outdata(p19[i]);
outcmd(0xc0); //Ecriture sur la 2?me ligne
for(i=0;i<strlen(p20);i++) outdata(p20[i]);
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 //////////////////////////////////////////////
Conclusion
Ce projet a été pour nous une réussite dans le sens où nous avons atteint nos ambitions initiales. Rien n’a été revu à la baisse par rapport au cahier des charges, ce qui représente pour nous une grande satisfaction. Nous n’avons pas entièrement détaillé la réalisation, car cela nous paraissait trop long, trop compliqué, et pas forcément intéressant à expliquer. Nous préférons vous laissez juger par vous-même de notre réalisation en jouant. Nous avons pris un grand plaisir à réaliser ce projet, et nous avons pu apprendre grâce a celui-ci à utiliser le turbo c de manière ludique.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Afficheur LCD et le langage C [ par Linuss ]
Bonjour à tous, j'ai un afficheur lcd 2*16, mais je ne sais pas comment faire pour y afficher un texte... j'ai bien de la doc des
programmation afficheur lcd 2*16 pour pic 16f876 [ par academie ]
bonjours svp est ce que quelqu"un peut m'aider dans la programmation du 16f876 pour afficher, le nom et quota préenregistrés, dans le pic ,de 2 perso
programmation pic16f877a + afficheur LCD [ par ghassen87 ]
salut a tt je suis débutant , je suis entrain de programmer une pic 16f877a en language pic c. mon objectif c'est d'afficher à partir d'une tensio
afficheur 7 segments [ par omrani007 ]
comment programmer un pic16f876 pour saisir un nombre sur 5 afficheurs 7 segments?aidez moi s'il vous plais!
multiplexage de 5 afficheur 7segment [ par omrani007 ]
comment afficher un nombre sur 5 afficheur 7segment?voila le programme du saisie d'un seul chiffre:#include "C:\clavier16touches\testclavier.h"#includ
placer des données d'une base de données dans une eeprom [ par amoura2009 ]
salut tout le monde, je veux copier ma base de données (faite avec mysql et contient 2 tableaux :rendezvous et medicaments chacun d'eux contient 2 co
affichage d'un grand chiffre sur LCD 2X16 PIC 16f877 [ par ramosecur ]
tighilt ferhat salut tout le monde;* voila , je voulais affiché un chiffre de ce format XXXXXXXX.YYYYY, sur un LCD 2X16, en utilisant un 16F877,et je
Coldfire 5282, Ecrire sur un bit d'un port . [ par dimitryagain ]
Bonsoir a tous,Voila je suis en ce moment en projet sur une Coldfire 5282 . Pour mettre en ½uvre un LCD sur une carte fille je passe par un port paral
afficheur de leds [ par falco94 ]
Bonjours, j'ai un problème. Je dois envoyé une application cpp (la coupilation est un message sur un afficheur de leds), et je dois envoyer se message
Programmation du PIC 16F87 pour afficher une tension sur LCD [ par Maisa ]
j'ai des difficultés au niveau de programmation et je veut un programme pour le PIC 16F877 (sur 4 bits) pour afficher sur un écran LCD "2*16" une tens
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Touch HD
Entre 25€ et 605€
|