Code :
//----------------------------------------------------------------------------| //****************************************************************************| //****************** procedure de commande de rotation du moteur *************| //********************** courant continu dans les deux sens ******************| //*********************** + commande variation de vitesse ********************| //*************************** PROGRAMME en C ( CCS ) *************************| //*********************** Réalisé par : Chehaibi Ahmed ***********************| //********************* Mastère Pro ISSAT Kairouan 2010 **********************| //----------------------------------------------------------------------------| //----------------------------------------------------------------------------| //******************* Paramétrage du PIC (Initialisation) ********************| //----------------------------------------------------------------------------| #include <16F876.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,XT, NOPUT, NOPROTECT, BROWNOUT, LVP, NOCPD, NOWRT, NODEBUG #include <LCDB.C> //j'ai modifié le LCD.C original afin de le brocher sur le portb //allez dans LCD.C et cherchez ces deux lignes : // Un-comment the following define to use port B // #define use_portb_lcd TRUE //uncommenter la deuxiéme ligne (enlevez les //) #define Bouton1 PIN_C3 #define Bouton2 PIN_C4 //----------------------------------------------------------------------------| //********************** Procédure de conversion en % ************************| //----------------------------------------------------------------------------| void convert_to_pourcent( long int data, char volts[6]) { BYTE i; long int temp,div; div=1000; for(i=0;i<=2;i++) { temp=data/div; volts=(BYTE)temp+'0'; temp=div*(BYTE)temp; data=data-temp; div=div/10; } } //----------------------------------------------------------------------------| //******************* Procédure d'affichage de la vitesse ********************| //----------------------------------------------------------------------------| void display_data( long int data ) { char volt_string[6]; convert_to_pourcent( data, volt_string ); printf(lcd_putc,volt_string); lcd_putc(" % "); } //----------------------------------------------------------------------------| //**************************** Programme Initiale ****************************| //----------------------------------------------------------------------------| void main() {byte s,a; long int r; r=500;a=1; // r est nombre de tour du moteur output_c(0xF8); set_tris_c(0xF8); // définition des entrées sorties portC setup_adc_ports(NO_ANALOGS); //Pas besoin des entrées analogiques setup_adc(ADC_OFF); // Pas besoin du CAN sinon setup_adc(ADC_ON) setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //Initialisation du Timer1 setup_timer_2(T2_DIV_BY_16, 127, 1); //Initialisation du Timer2 lcd_init(); //Initialisation du LCD //------------------------------ Choix du sens ------------------------------| do { lcd_gotoxy(1,1); printf(lcd_putc,"Choix du sens:"); //Demande du choix du sens if (input(bouton1) ==0) { s=1; lcd_gotoxy(7,2);a=0; printf(lcd_putc,"sens avant");delay_ms(500);} //Si le pin C3 est à 1 (Bouton1 à 0) démarrer le sens avant if (input(bouton2) ==0) { s=0;lcd_gotoxy(7,2);a=0; printf(lcd_putc,"sens ariere");delay_ms(500);} //Si le pin C4 est à 1 (Bouton2 à 0) démarrer le sens arriére } while (a==1); //---------------------------- génération des MLI ---------------------------| //----------------------- et affichage du pourcentage -----------------------| do{ if (s==1) {setup_ccp1(CCP_PWM);set_pwm1_duty(r);lcd_gotoxy(1,2);display_data(r);} if (s==0) {setup_ccp2(CCP_PWM);set_pwm2_duty(r);lcd_gotoxy(1,2);display_data(r);} if (input(bouton1) ==0) { r=r+10;lcd_gotoxy(1,2);display_data(r);delay_ms(50);} if (input(bouton2) ==0) { r=r-10;lcd_gotoxy(1,2);display_data(r);delay_ms(50);} if (r> 1000 ) {r=0;} } while (true); } //----------------------------------------------------------------------------| //************************************* FIN **********************************| //----------------------------------------------------------------------------| |