begin process at 2012 02 12 08:23:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > AFFICHEUR LCD

AFFICHEUR LCD


 Description

Cliquez pour voir la capture en taille normale
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.




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   afficheur lcd
    • afficheurlcd.BAKTélécharger ce fichier [Réservé aux membres club]26 157 octets
    • afficheurlcd.CPPTélécharger ce fichier [Réservé aux membres club]Voir ce fichier26 205 octets
    • afficheurlcd.OBJTélécharger ce fichier [Réservé aux membres club]26 321 octets
    • EGAVGA.BGITélécharger ce fichier [Réservé aux membres club]5 554 octets
    • rapport_projetc.docTélécharger ce fichier [Réservé aux membres club]368 128 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MINI PROJET MICROCONTRÔLEUR THERMOMÈTRE HORLOGE

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTS MANAGER par eapaceinfo
Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RS232 ET PORT // par morphixx
Source avec Zip Source avec une capture MONPPM : UN AFFICHEUR .PPM par pgl10
Source avec Zip CALCULATRICE AVEC REPRESENTATION GRAPHIC par msavyo1
Source avec Zip CHIFFRE AU LETTRE MULTILANGAGE par msavyo1
Source avec Zip Source avec une capture MINI PROJET MICROCONTRÔLEUR THERMOMÈTRE HORLOGE par zmtechnologie

Commentaires et avis

Commentaire de Braiman le 22/12/2007 15:53:21

Recemment, j'ai programmé un microcontroleur pour qu'il gère un LCD. J'ai donc regardé ta source avec intéret.

Plusieurs choses me gène dans le code. Par exemple ta fonction convert, elle n'est utilisée nul part. Et puis la suite de if dedans n'est pas très belle. J'aurais plutôt mis dedans un truc du genre :
  if (n >= 0 && n <=9) return n + 48;
  return 0;


La fonction right n'est pas géniale non plus. Utilise plutôt l'opérateur modulo : return x % 10;


Pour la fonction left j'aurais aussi utiliser le modulo :
  // suppression du chiffre des unités : x - (x % 10) ou x - right(x) pour utiliser ta fonction
  // puis on divise par 10 ==> on obtient 0, 1, 2, ...
  x = (x - (x % 10)) / 10;

  // x est des secondes, minutes ou heures ==> sauf erreur jamais négatif et pas au dessus de 59
  // donc on retourne x, ça devrait suffire.
  return x;


Quand je programmais avec des outportb, j'utilisais des #define qui aide à comprendre ce qui est fait. Par exemple :
  #define LPT1_DATA     888 //Adresse du bus de données
  #define LPT1_STATE    889 //Adresse du registre d'état
  #define LPT1_CONTROL  890 //Adresse du registre de controle
  ...
  outportb(LPT1_CONTROL, 0x06); // ==> on voit tout de suite qu'on écrit dans le registre de controle


D'ailleur j'en profite pour poser une petite question : outportb n'est elle pas obsolete ? Cette fonction ne fonctionne plus très bien sous XP non ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Afficheur LCD et le langage C [ par Linuss ] Bonjour &#224; 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 effacement d'une caractère d'un afficheur lcd [ par marmouraa ] slt, je veux savoir comment programmer une touche d'une clavier matriciel 12 touches pour qu'elle me permet d'effacer la dernière lettre écrite sur un programme pic16F877 ccs c compiler [ par stefanovic ] #include #use delay (clock=4000000) #fuses XT,NOWDT,NOPROTECT,NOLVP #include #include #define use_portb_lcd TRUE #include //Affichage Sur LCD problème lecture de données avec Ds3231 [ par kimouelectronique ] Bonjour, je programme avec MikroC, j'ai essayer d'afficher l'heure et la date à partir du composant I²C:DS3231, le résultat est visualisé sur un affic Afficheur LCD sous 16F887 [ par RENTMEESTERS ] Bonjour à tous, J'ai un projet réunissant un PIC 16F887 et un afficheur LCD. J'ai donc un LCD.h que voici : [code=cpp]#define RS RB4 #d Programmation 16F877A + LCD (C) [ par ult1m4tum ] Messieurs, mesdames (bien qu'elles se fassent rare sur ce genre de forum) Je cherche a créer un code en C me permettant d'afficher un simple caractèr


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales