قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

covaco
:: مهندس ::
تاريخ التسجيل: Jan 2012
المشاركات: 2
نشاط [ covaco ]
قوة السمعة:0
قديم 10-07-2012, 03:22 PM المشاركة 1   
افتراضي مشكل stepper motors, Lcd, keypad project pic Twitter FaceBook Google+



المشروع عبارة عن طريقة اوتوماتيكية لاخذ فيم بطاقات E1 التي تستعملها شركات الاتصال للربط الاتصال بالشبكة,

المشروع يقدم احتمالين اما ان يختار التقني ان يقوم بعملية اخذ قيم جميع الــ pin فنقوم ببدا عملة اوتوماتكية لاخذجميع القيم الاربع و الستون ( الا اني في المشروع اكتفية بخمس فقط للتجريب j=5 ) و اما ان يختار التقني المود اليدوي و بذلك يدخل فيمة ال pin الذي يريد اخذ قيمته فيتوجه ال motor الى المكان المحدد و يعود بعد ان يتنطر 20 تانية ( اخذت 2 توان في المشروع فقط للتجريب و لكي لا يكول الانتظار )

المشكل كالاتي, عندما اقوم بتخريب المود اوتوماتيك لوحده فهو يعملة و عنمدا اقوم بتجريب المود يدوي فقه يعمل لكن عندما اجمع المودين و اقوم بعملة اختيار لواحد منهما فانا اواجه مشكل, و عندما احل مشكل يظهر مشكل اخير بالاخص في lcd فتختفي كتابة و تظهر اخرى و في بعض الاحيان تظهر حروف غريبة

ان تكرمتم ان تلقوا نظرة على الكود و ان كان اي شئ غير صحيح ارجوا اخباري
للاشارة استعمل mikroc pro لتجمة الكود و isis للمعاينة

و هنا صورة للمشروع link


و هنا الكود

كود:
// LCD module connections
sbit LCD_RS at RC4_bit;
sbit LCD_EN at RC5_bit;
sbit LCD_D4 at RC0_bit;
sbit LCD_D5 at RC1_bit;
sbit LCD_D6 at RC2_bit;
sbit LCD_D7 at RC3_bit;

sbit LCD_RS_Direction at TRISC4_bit;
sbit LCD_EN_Direction at TRISC5_bit;
sbit LCD_D4_Direction at TRISC0_bit;
sbit LCD_D5_Direction at TRISC1_bit;
sbit LCD_D6_Direction at TRISC2_bit;
sbit LCD_D7_Direction at TRISC3_bit;
// End LCD module connections

// Keypad module connections
char keypadPort at PORTD;
// End Keypad module connections

// Variables
int kc,kp,a,aa;
int tab[10];

int i=0,j=0,k=0,l=0,var=0,pos,resu,temp;
char affi[5];


// Declaration des fonctions

int choix();
int test();

void init();
void automatique();
void manuel();

void forward_m1();
void backward_m1();
void up_m2();
void down_m2();


void main()
{


init();

do{
Lcd_Out(1,5,"**Menu**");
Lcd_Out(2,5,"<Entree>");
}while(test()!=35);

Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1, 2, "**Mode Autom**");
Lcd_Out(2, 1, "<Next>");
Lcd_Out(2, 9, "<Entree>");

aa=choix();

switch (aa)
 { case 1: {
 automatique();
 break;
 }
   case 0: {
 manuel();
 break;
 }
 }

Lcd_Cmd(_LCD_CLEAR);

}

void init(){

ANSEL  = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;

TRISB = 0x00;
PORTB = 0x00;
TRISC = 0x00;

Keypad_Init();
Lcd_Init();

Lcd_Cmd(_LCD_CLEAR);
//Lcd_Cmd(_LCD_CURSOR_OFF);

}

int test(){
    kc = 0;
    do
      kc = Keypad_Key_Click();
    while (!kc);

    switch (kc)
    {
      case 1: kc = 49; break; // 1
      case 2: kc = 50; break; // 2
      case 3: kc = 51; break; // 3
      case 5: kc = 52; break; // 4
      case 6: kc = 53; break; // 5
      case 7: kc = 54; break; // 6
      case 9: kc = 55; break; // 7
      case 10: kc = 56; break; // 8
      case 11: kc = 57; break; // 9
      case 13: kc = 42; break; // *
      case 14: kc = 48; break; // 0
      case 15: kc = 35; break; // #

    }

    return kc;
}

int choix(){

    a=1;
    do{
    do
    kp = Keypad_Key_Click();
    while (!kp);

    switch (kp)
    {
      case 13: {
      if(a==0){

      Lcd_Out(1, 2, "**Mode Autom**");
      Lcd_Out(2, 1, "<Next>");
      Lcd_Out(2, 9, "<Entree>");
      a=1;
      }
      else{
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Out(1, 2, "**Mode Manue**");
      Lcd_Out(2, 1, "<Next>");
      Lcd_Out(2, 9, "<Entree>");
      a=0;
      }
      kp = 42; break; // *
      }

      case 15: kp = 35; break; // #

    }

    }while(kp!=35);

    return a;

}

void automatique(){

     Lcd_Cmd(_LCD_CLEAR);
     Lcd_Out(1, 2, "**Mode Autom**");
     Lcd_Out(2,2,"PIN NUMERO: ");
     j=0;
     while(j<3){
      j++;
      forward_m1();
      
      ByteToStr(j, affi);
      Lcd_Out(2,14,Ltrim(affi));
      
      down_m2();
      up_m2();
      }
      
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_FIRST_ROW);
    Lcd_Out_CP(" **Mode Autom**");
    Lcd_Cmd(_LCD_SECOND_ROW);
    Lcd_Out_CP("mise a zero...");
    
    j++;
    while(j>0){
    backward_m1();
    j--;
    }

}

void manuel(){

    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1, 2, "**Mode Manue**");
    Lcd_Out(2,2,"ALLER A : ");
    
    var=0;
    pos=12;
    do{
    tab[var]=test();

    if(tab[var]!=35){
      if(tab[var]!=42){
         Lcd_Chr(2,pos,tab[var]);
         if(pos<13)  pos++;
      }
      else{
      Lcd_Out(2,12,"  ");
      pos=12;
      var=-1;
      }
    }
    var++;
    }while(tab[var-1]!=35);

    resu=0;
    if(tab[1]!=35){
    resu=((tab[0]-48)*10)+tab[var-2]-48;
    }
    else{
    resu=(tab[0]-48);
    }
    temp=resu;
    
    while(resu){
    forward_m1();
    resu--;
    }
    down_m2();
    up_m2();

    Lcd_Out(1, 2, "**Mode Manue**");
    Lcd_Out(2,2,"Mise a zero...");
    
    while(temp){
    backward_m1();
    temp--;
    }
}

void forward_m1(){

switch (i){
       case 0:
       {
       PORTB=0x60;                             // 090 degree
       delay_ms(500);
       i++;
       break;
       }
       case 1:
       {
       PORTB=0xC0;                             // 180 degree
       delay_ms(500);
       i++;
       break;
       }
       case 2:
       {
       PORTB=0x90;                             // 270 degree
       delay_ms(500);
       i++;
       break;
       }
       case 3:
       {
       PORTB=0x30;                            // 000 degree
       delay_ms(500);
       i=0;
       break;
       }
}
}

void backward_m1(){

switch (l){
       case 0:
       {
       PORTB=0x90;                             // 090 degree
       delay_ms(500);
       l++;
       break;
       }
       case 1:
       {
       PORTB=0xC0;                             // 180 degree
       delay_ms(500);
       l++;
       break;
       }
       case 2:
       {
       PORTB=0x60;                             // 270 degree
       delay_ms(500);
       l++;
       break;
       }
       case 3:
       {
       PORTB=0x30;                            // 000 degree
       delay_ms(500);
       l=0;
       break;
       }
}
}

void down_m2(){

       PORTB=0x0C;                             // 180 degree
       delay_ms(2000);                         // 20s de mesure

}
void up_m2(){

       PORTB=0x03;                             // 000 degree
       delay_ms(1000);                           // temps d'attent pour passer au next pin

}

اعلانات

covaco
:: مهندس ::
تاريخ التسجيل: Jan 2012
المشاركات: 2
نشاط [ covaco ]
قوة السمعة:0
قديم 12-07-2012, 01:45 AM المشاركة 2   
افتراضي


يا ريت لو تلقون نظرة على الكود !!

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 15-07-2012, 10:56 AM المشاركة 3   
افتراضي


بسم الله الرحمن الرحيم
اعذرنى اخى انا لم افهم اى شىء
اشرح ما تريدة جيدا وسوف احاول ان شاء الله ان انفذة اذا استطعت

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 10:03 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025