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

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

الصورة الرمزية عطية حسن محمود
عطية حسن محمود
:: عضو ذهبي و مشرف سابق لورشة صيانة التلفزيون ::
تاريخ التسجيل: Aug 2005
المشاركات: 1,073
نشاط [ عطية حسن محمود ]
قوة السمعة:123
قديم 30-05-2009, 05:08 PM المشاركة 1   
افتراضي برنامج لقياس سعة المكثفات Twitter FaceBook Google+



وجدت هذا البرنامج واكيد حينفع لعمل افوميتر بدمجه مع الفولتميتر ولاحقا ساضيف الاومميتر ليكتمل البرنامج
الكود
كود:
// Capacitance 10pF to 65,000 ?F
 
char Calibre ;
// Prototypes of the functions
void Accueil();
unsigned int GetRC() ;
void WordToLCD(unsigned int W) ;
void ChangeCalibre();
void faultyCalib() ;
void AfficheCalibre() ;
//-----------------------------------------------------------------------
void main()
{
  unsigned int Capa ;
  // Initialization
  CMCON = 7 ;                       // no comparators
  Lcd_Config(&portb,4,5,6,3,2,1,0); // pin for LCD
  Lcd_Cmd(Lcd_CURSOR_OFF);          // no cursor
  trisb.f7 = 1 ;
  Calibre = 'u' ;
  trisa.f4 = 0 ;                    // decharger Cx
  trisa.f2 = 1 ;                    //push button
  trisa.f0 = 0 ;
  porta.f0 = 1 ;
  porta.f4 = 0 ;                    // decharger Cx
  Accueil();
  // Loop measurement
  while(1)
  {
    if(!porta.f2)
       ChangeCalibre();
    else
    {
      Lcd_Out(2,2,"Measurement in progress..");
      Capa = GetRC();
      Lcd_Cmd(Lcd_Clear);
      Lcd_Out_Cp("Cx = ");
      if(Capa)
      {
        if(Calibre == 'u')
           Capa /= 10 ;
        WordToLcd(Capa);
        Lcd_Chr_Cp(' ');
        Lcd_Chr_Cp(Calibre);
        Lcd_Chr_Cp('F');
        AfficheCalibre();
        delay_ms(2000);
      }
    }
  }
}
//------------------------------------------------------------------------
void Accueil()
{
   Lcd_Out_Cp("*** Capacitance ***");
   AfficheCalibre();
   Delay_ms(3000);
   Lcd_Cmd(Lcd_Clear);
}
//------------------------------------------------------------------------
unsigned int GetRC()
{
  unsigned int RC ;
  RC = 0 ;
  porta.f0 = 1 ;
  trisa.f0 = Calibre == 'p' ? 1 : 0 ;
  trisa.f4 = 1 ;    // RA4 input
  if(Calibre == 'u')
    while(1)
    {
      delay_us(218) ;
      if(porta.f4)
        break ;
      RC++ ;
      if(!RC)
        break ;
    }
  else
    while(1)
    {
      if(porta.f4)
        break ;
      RC++ ;
      if(!RC)
        break ;
    }
  trisa.f0 = 1 ;
  porta.f4 = 0 ;    //RA4 output to 0
  trisa.f4 = 0 ;    //discharges the capacitor
  if (!RC)
     faultyCalib();
  return RC ;
}
//------------------------------------------------------------------------
void faultyCalib()
{
  Lcd_Cmd(Lcd_Clear);
  Lcd_Out_Cp("faulty calibre..") ;
  AfficheCalibre();
  delay_ms(2000) ;
}
//------------------------------------------------------------------------
void WordToLCD(unsigned int W)
{
  char delta,str[6] ;
  delta = 0 ;
  WordToStr(W,str) ;
  while(str[delta] == ' ')
     delta++ ;
  Lcd_Out_Cp(str+delta);
}
//-------------------------------------------------------------------------
void ChangeCalibre()
{
   // new class
   switch(Calibre)
   {
   case 'p' : {
               Calibre = 'n' ;
               break ;
              }
   case 'n' : {
               Calibre = 'u' ;
               break ;
              }
   default  : Calibre = 'p' ;
   }
   // View
   Lcd_Cmd(Lcd_Clear);
   AfficheCalibre();
   delay_ms(2000);
}
//--------------------------------------------------------------------------
void AfficheCalibre()
{
   Lcd_Out(2,2,"(Calibre 6500");
   if(Calibre != 'u')
     Lcd_Chr_Cp('0');
   Lcd_Chr_Cp(' ');
   Lcd_Chr_Cp(Calibre);
   Lcd_Chr_Cp('F');
   Lcd_Chr_Cp(')');
}
//--------------------------------------------------------------------------

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 30-05-2009, 07:32 PM المشاركة 2   
افتراضي


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

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

الصورة الرمزية عطية حسن محمود
عطية حسن محمود
:: عضو ذهبي و مشرف سابق لورشة صيانة التلفزيون ::
تاريخ التسجيل: Aug 2005
المشاركات: 1,073
نشاط [ عطية حسن محمود ]
قوة السمعة:123
قديم 31-05-2009, 01:07 PM المشاركة 3   
افتراضي


تفضل اخى حيدر
الملف كله بالبروتوس والمايكروسى



الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 31-05-2009, 04:20 PM المشاركة 4   
افتراضي


شكرا لك اخي عطية
البرنامج شغال 100% وممتاز جدا والكود فيه مفيد جدا
شكرا لك بارك الله فيك

حيدر علاج حسن

أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 195
نشاط [ أشرف الخطيب ]
قوة السمعة:0
قديم 02-06-2009, 07:36 PM المشاركة 5   
افتراضي


بارك الله فيك أستاذ عطية وجزاك خيرا

ننتظر إن شاء الله المزيد من تلك البرامج القيمة

وإن شاء الله سنحاول مناقشة الكود لتعم الفائدة بإذن الله


الصورة الرمزية fathiidriss
fathiidriss
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2005
الدولة: ليبيا
المشاركات: 58
نشاط [ fathiidriss ]
قوة السمعة:0
قديم 03-06-2009, 09:54 PM المشاركة 6   
افتراضي


بارك الله فيك أستاذ عطية وجزاك خيرا

ننتظر إن شاء الله المزيد من تلك البرامج القيمة

وإن شاء الله سنحاول مناقشة الكود لتعم الفائدة بإذن الله
اضافه جيده وموضوع جميل وعملي جدا مشكور الاخ عطيه

إضافة رد

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

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

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


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

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