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

   

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 08-03-2016, 08:22 PM المشاركة 9   
افتراضي



السلام عليكم ورحمة الله وبركاته.
إذا كنا سنفكر بالطريقة التي يفكر بها الأخ عبد الله حجازي فلتكن هناك شاشة LCD وأزرار أو كيباد بحيث نقلب رقم القطعة التي تظهر على الشاشة ثم نختارها ثم تظهر النتيجة على الشاشة أن القطعة تعمل أو لا تعمل أو فشل الاختبار.

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 08-03-2016, 08:37 PM المشاركة 10   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم ورحمه الله

انا اتفق معك فى هذا المشروع ..

اقترح عمل برنامج يختبر عدد كبير من المتكاملات المنطقيه والعدادات مثل CD4017 وايضااا الترنزوسترات والموسيفت والأبتوكبلر والريلهات والمكثفات الكيمائيه والسراميكى وغيرها من القطع الألكترونيه ... الخ ..


فكرة البرنامج أو المشروع مقسمه الى قسمين سوفت وير وهارد وير ... وانا معك ان شاء الله فى انشاء الأثنين سوفت و هارد ...

الفكرة هنا .. هى عمل برنامج يحمل مكتبه لعائلة متكامله العداد مثل Cd4017 أو CD4015 .. والمستخدم يختار رقم المتكامله المراد قياسها ..

وفكرة البرنامج هتكون ك الأتى لو المستخدم أختار مثلا العداد CD4017 ... وضغط على مفتاح مخصص فى البرمجه لبدأ تشغيل البرنامج .. او خلينا نقول لبدأ اختبار العنصر .. وطبعاااا كلنا عارفين أن أى قطعة الكترونيه مصممه لكى تقوم بوظيفه معينه .. ونحن هنا نتكلم عن العداد CD4017 .... الميكرو هيذود العداد CD4017 بالطاقة اللازمه لتشغيله وايضااا سيوفر الميكرو نبضات الساعة للعداد .. وفى قسم الهارد وير سيتم ربط عدد من اليدات مع ارجل العداد CD 4017 .. وايذا بدأ العداد ب اضائة الليدات بشكل منفرد أى ازاحة اليد الى الوصول لليد رقم 10 سيكون العداد فى هذة الحاله سليم ...


وبنفس الفكرة هيتم قرأة الداتا شيت لكل عنصر الكترونى شائع الإستخدام فى الدوائر الإلكترونيه ... ومعرفة وظيفه هذا العنصر .. وبعد معرفة وظيفة هذا العنصر الإلكترون المراد أختبارة سيتم كتابه .. برنامج للميكرو للتعامل مع هذا العنصر ..

وايضاااا سيكون فى مكونات مساعدة للميكرو تختبر هذة العناصر مثلا نضع ليد لأختبار الترنزوستر والميكرو يقوم بتغذيه الترنزوستر و فتح وغلق قاعدة الترنزوستر و بالتالى لو اليد اشتغل بطريقه متقطعى أى فلاش سيكون الترنزوستر سليم .. اما لو اليد ظل متوج بصفة دائمه سيكون عطلان .. وايضا لو لم يستجيب الترنزوستر سيكون عطلان ....


وايضااا فى قسم الهارد وير .. سيتم تصميم اماكن فى البورده لوضع الترنزوسترات .. ومكان أخر لوضع المتكاملات ذات الأربع ارجل .. ومكان أخر للمتكاملات ذات ال 8 ارجل ... وهكذا نخصص اماكن فى البورد مجهزة لتركيب العناصر المراد قياستها ..

مع مراعاة كتابة تعليمات على البوردة للأماكن والعناصر المدعومه من خلال هذا المكان ..


وليكن مثلا نخصص سوكت مكون من ثلاث اطراف ونخصصه لقياس الترنزوسترات ...

ومن خلال السوفت وير سيتم التعامل مع جميع الترنزوسترات حسب القطبيه والقاعدة ومرعاة هذة الفنيات ..


ويكون جهاز شامل للهواة والفنيين يوفر الوقت والمجهود فى قياس واختبار العناصر الإلكترونيه ..
أن شاء الله يكون فى نفع للناس وصدقه جاريه تنفعنا .. يوم لا ينفع مال ولا بنون الا من اتى الله بقلب سليم..


وأما ما ينفع الناس فيمكث في الأرض..

خير الناس من ينفع الناس


انا معك فى تنفيذ هذا الجهاز وأن شاء الله هيتم تطويرو ليضم عدد كبير من العناصر الإلكترونيه ...






التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 08-03-2016 الساعة 08:51 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
نشاط [ مشتاق الله ]
قوة السمعة:
قديم 09-03-2016, 01:34 AM المشاركة 11   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته


اخى العزيز عبدالله فكرة جميلة , و هنصوت عليها من الان فاذا اشترك فيها
6 اخوة فاكثر نبدا ان شاء الله نضع لها معالم و خطة و نبدأ فيها .
و اذا كان من الاخوة من عنده فكرة اخرى فليعرضها و نصوت عليها ايضا.


و ما توفيقى الا بالله

لا يؤدى الحق الى باطل
ولا يؤدى الباطل الى حق
الوسيلة الحق تؤدى لغاية حق




محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 09-03-2016, 05:51 AM المشاركة 12   
افتراضي


السلام عليكم ورحمة الله وبركاته.
إذا كنا سنفكر بالطريقة التي يفكر بها الأخ عبد الله حجازي فلتكن هناك شاشة LCD وأزرار أو كيباد بحيث نقلب رقم القطعة التي تظهر على الشاشة ثم نختارها ثم تظهر النتيجة على الشاشة أن القطعة تعمل أو لا تعمل أو فشل الاختبار.
كتبت ذلك أمس وظهر متأخرا بسبب ضبط ساعة المنتدى.


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 09-03-2016, 10:16 AM المشاركة 13   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم ورحمة الله وبركاته.
إذا كنا سنفكر بالطريقة التي يفكر بها الأخ عبد الله حجازي فلتكن هناك شاشة LCD وأزرار أو كيباد بحيث نقلب رقم القطعة التي تظهر على الشاشة ثم نختارها ثم تظهر النتيجة على الشاشة أن القطعة تعمل أو لا تعمل أو فشل الاختبار.
السلام عليكم ورحمه الله وبركاته


مرحباااا بك اخى .. محمد عيسى ..


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


وتظهر النتائج على شاشة LCD ويظهر عدد 2 رسائل رسالة تأكد أن تم اختبار الترنزوستر بنجاح وهو جيد ... ورساله اخر تظهر فى حاله عدم قرأة الترنزوستر أو أن الترنزوستر لا يعمل ...


وهذة صورة المشروع












كود:
      #define Red


     // Lcd pinout settings
      sbit LCD_RS at RB0_bit;
      sbit LCD_EN at RB1_bit;
      sbit LCD_D7 at RB5_bit;
      sbit LCD_D6 at RB4_bit;
      sbit LCD_D5 at RB3_bit;
      sbit LCD_D4 at RB2_bit;

    // Pin direction
      sbit LCD_RS_Direction at TRISB0_bit;
      sbit LCD_EN_Direction at TRISB1_bit;
      sbit LCD_D7_Direction at TRISB5_bit;
      sbit LCD_D6_Direction at TRISB4_bit;
      sbit LCD_D5_Direction at TRISB3_bit;
      sbit LCD_D4_Direction at TRISB2_bit;

      int X =0 , E=0, Y=0 , j=0;







     void transistor_NPN()
   {
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,1,"transistor NPN");
      lcd_out(2,1,"Click OK to test");
        E=1;
   }



     void transistor_PNP()
   {

   
      portc = 8;

    for(Y=0;Y<15;Y++)
  {

    porte.f1 = 1; delay_ms(400);
    porte.f1 = 0; delay_ms(400);
    
   if(portd.f4==1)
   {
    j++; delay_ms(20);

   }
  }
  
     if(j==15)
  {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"The test was");
    lcd_out(2,1,"successfully");
    delay_ms(5000);
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,2,"Transistors");
    lcd_out(2,5,"good");
    delay_ms(5000);
  }
  
    if(j<15)
  {
    for(Y=0;Y<3;Y++)
  {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,5,"Error");
    delay_ms(3000);
    lcd_out(1,5,"not find");
    lcd_out(2,2," Transistor");
    delay_ms(5000);
    j=0;
  }
  }

    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"End the test");
    lcd_out(2,1,"press Restart");
    j=0;

  
 }


          void main() {
          Lcd_Init();
         adcon1=0x06;
        
      trisb=0; portb=0;
      trisd=255; portd=0;
      trisc=0; portc=0;
      trisa=0; porta=0;
      trise=0; porte=0;





        Lcd_Cmd(_LCD_CURSOR_OFF); // cursor off
        Lcd_Cmd(_LCD_CLEAR);

        lcd_out(1,3," Hello your ");
        lcd_out(2,1,"devicein testsr");
        delay_ms(2000);
        lcd_out(1,2," Choose Items ");
        lcd_out(2,1,"transistor_OR_IC");

              while(1){

       if(portd.f1==0){ delay_ms(250);X++;  }
       if(portd.f2==0){ delay_ms(250);X--; }
       
       if(portd.f3==0)
    {
        X =0; E=0; Y=0;
         porte.f1 = 1;
        
        Lcd_Cmd(_LCD_CLEAR);
        lcd_out(1,3," Hello your ");
        lcd_out(2,1,"devicein testsr");
        delay_ms(2000);
        lcd_out(1,2," Choose Items ");
        lcd_out(2,1,"transistor_OR_IC");
       
    }



     if(X==1&&E==0)
     {

       Lcd_Cmd(_LCD_CLEAR);
       lcd_out(1,3,"OK FOR TEST");E=1;
       lcd_out(2,1,"transistor PNP");

     }

      if(X==2&&E==1)
     {

      lcd_out(2,1,"transistor NPN"); E=2;

     }

    if(X>2)
    
    {
     X=0; E=0;
    }

    if(portd.f0==0&&X==1)
    
   {
    transistor_PNP();
   }




  }
}

الكود يختبر الترنزوستر PNP فقط وجارى تكملة البرنامج ليختبر النوع الأخر وهو NPN ......

وغدااا ان شاء الله سيتم رفع الكود وملف المحاكاة


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


وأسف لضيق الوقت نكمل غدااا ان شاء الله



..


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 09-03-2016 الساعة 10:23 AM

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 12-03-2016, 07:49 AM المشاركة 14   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم ورحمه الله وبركاته


احمد لله انتهيت من برنامج التعامل مع جميع الترنزوسترات PNP __ NPN __ البرنامج يختبر الترنزوسترات ويظهر حالة الترنزوستر على الشاشة .. ان كان سليم أم غير موجود أو عطلان ..


وان شاء الله سيتم تكملة البرنامج للتعامل مع عدد من المتكاملات ..


صور تظهر مراحل تشغيل البرنامج و التعرف على الرسائل التى يعرضها البرنامج .... فى حالة قياس الترنزوسترات ..

البرنامج يخبرك برسائل تفيد حالة الترنزوستر ..

1 __ رسالة ترحيبيه لبدأ عمل البرنامج ..

2 ___ رسالة تنبهك ان تختار عائله الترنزوستر ... PNP >>> NPN

3 __ رسالة تطلب منك الضغط على مفتاح الفحص لبدأ اختبار الترنزوستر

4 __ رسالة تفيد بأن عملية الفحص جاريه ..

5 __ رسالة تفيد بأن الترنزوستر جيد .. أو الترنزوستر لا يعمل أو الترنزوستر غير موجود ..

6 __ رسالة تفيد بأن عملية الفحص انتهت بنجاح ..

7 __ رسالة تطلب منك أن تضغط على مفتاح ريستارت لبدأ استعداد البرنامج لفحص ترنزوستر أخر ..


والأن مع صور البرنامج وهو يعمل


رسالة ترحيبيه



رسالة تنبهك ان تختار عائله الترنزوستر ... PNP >>> NPN





رسالة تطلب منك الضغط على مفتاح الفحص لبدأ اختبار الترنزوستر




رسالة تفيد بأن عملية الفحص جاريه ..









رسالة تفيد بأن عملية الفحص انتهت بنجاح ..




رسالة تفيد بأن يوجد خطأ فى قرأة الترنزوستر




رسالة تفيد بأن الترنزوستر غير موجود أو لايعمل ...



رسالة تطلب منك أن تضغط على مفتاح ريستارت لبدأ استعداد البرنامج لفحص ترنزوستر أخر ..





المشروع كامل للتحميل ...


https://drive.google.com/file/d/0Bxg...ew?usp=sharing



كود البرنامج


كود:
      #define Red


     // Lcd pinout settings
      sbit LCD_RS at RB0_bit;
      sbit LCD_EN at RB1_bit;
      sbit LCD_D7 at RB5_bit;
      sbit LCD_D6 at RB4_bit;
      sbit LCD_D5 at RB3_bit;
      sbit LCD_D4 at RB2_bit;

    // Pin direction
      sbit LCD_RS_Direction at TRISB0_bit;
      sbit LCD_EN_Direction at TRISB1_bit;
      sbit LCD_D7_Direction at TRISB5_bit;
      sbit LCD_D6_Direction at TRISB4_bit;
      sbit LCD_D5_Direction at TRISB3_bit;
      sbit LCD_D4_Direction at TRISB2_bit;

      int X =0 , E=0, Y=0 , j=0;
      
  //************************************//

     void transistor_NPN()
 {
   
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,1,"transistor NPN");
      lcd_out(2,2," >> test << ");

      /*lcd_out(2,1,"Click OK to test");*/

      portc = 1;
    for(Y=0;Y<7;Y++)
 {
    porte.f0 = 0; delay_ms(400);
    porte.f0 = 1; delay_ms(400);
    if(portd.f5==0)
    
    {
     j++; delay_ms(20);
    }
   
 }
//********************************//
     if(j==7)
  {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"The test was");
    lcd_out(2,1,"successfully");
    delay_ms(5000);
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,2,"Transistors");
    lcd_out(2,5,"good");
    delay_ms(5000);
  }
//*********************************//
    if(j<7)
{
    for(Y=0;Y<3;Y++)
  {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,5,"Error");
    delay_ms(2000);
    lcd_out(1,5,"not find");
    lcd_out(2,2," Transistor");
    delay_ms(2000);
    j=0;
  }
 }
//********************************//
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"End the test");
    lcd_out(2,1,"press Restart");
    j=0;
}
//************ end void ***********//

//-------------==============-------------//
 
      void transistor_PNP()
{
  
      Lcd_Cmd(_LCD_CLEAR);
      lcd_out(1,1,"transistor PNP");
      lcd_out(2,2," >> test << ");
  
  
      portc = 8;
    for(Y=0;Y<7;Y++)
    
 {
    porte.f1 = 1; delay_ms(400);
    porte.f1 = 0; delay_ms(400);
    
   if(portd.f4==1)
   {
    j++; delay_ms(20);

   }
 }
  
     if(j==7)
   {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"The test was");
    lcd_out(2,1,"successfully");
    delay_ms(5000);
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,2,"Transistors");
    lcd_out(2,5,"good");
    delay_ms(5000);
   }
//*******************************//
    if(j<7)
 {
    for(Y=0;Y<3;Y++)
    {
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,5,"Error");
    delay_ms(3000);
    lcd_out(1,5,"not find");
    lcd_out(2,2," Transistor");
    delay_ms(5000);
    j=0;
    }
  }
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,1,"End the test");
    lcd_out(2,1,"press Restart");
    j=0;
}
//------------- end void -----------------//

//**********>>>>>>>><<<<<<<<<<<***********//

           void main() {
           Lcd_Init();
           adcon1=0x06;
       trisb=0; portb=0;
       trisd=255; portd=0;
       trisc=0; portc=0;
       trisa=0; porta=0;
       trise=0; porte=0;
//***************************************//

    Lcd_Cmd(_LCD_CURSOR_OFF); // cursor off
    Lcd_Cmd(_LCD_CLEAR);
    lcd_out(1,3," Hello your ");
    lcd_out(2,1,"devicein testsr");
    delay_ms(2000);
    lcd_out(1,2," Choose Items ");
    lcd_out(2,1,"transistor_OR_IC");

              while(1){

    if(portd.f1==0){ delay_ms(250);X++;  }
    if(portd.f2==0){ delay_ms(250);X--; }
       
       if(portd.f3==0)
    {
     X =0; E=0; Y=0;
     porte.f1 = 1;
     Lcd_Cmd(_LCD_CLEAR);
     lcd_out(1,3," Hello your ");
     lcd_out(2,1,"devicein testsr");
     delay_ms(2000);
     lcd_out(1,2," Choose Items ");
     lcd_out(2,1,"transistor_OR_IC");
     }
//************************************//

     if(X==1&&E==0)
     
    {
     Lcd_Cmd(_LCD_CLEAR);
     lcd_out(1,3,"OK FOR TEST");E=1;
     lcd_out(2,1,"transistor PNP");
    }
//***********************************//
      if(X==2&&E==1)
      
    {
     lcd_out(2,1,"transistor NPN"); E=2;
    }
//************************************//
    if(X>3)
    
    {
     X=0; E=0;
    }
//*********************//

    if(portd.f0==0&&X==1)
    
   {
    transistor_PNP();
   }
//*********************//

    if(portd.f0==0&&X==2)

   {
    transistor_NPN();
   }
  }
   //---------  END PROGRAM TEST transistor  -----------//


  
//********************    PROGRAM (  IC  )  ************************//
 
    if(portd.f4==1){
   
      while(1){
      
      
      
      
      
      
      

    }

  }
}

سيتم تكملة البرنامج لقياس عدد من المتكاملات ..



تحياتى للجميع ..


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 12-03-2016 الساعة 07:59 AM

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 13-03-2016, 12:15 AM المشاركة 15   
افتراضي


السلام عليكم ورحمة الله وبركاته.
أنا حتى الآن لم أتقن التعامل مع الشاشات... لهذا لا يمكنني الآن أن التفاعل معكم إلا عن بعد وفي صمت.


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 13-03-2016, 03:42 AM المشاركة 16   
افتراضي اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


السلام عليكم ورحمة الله وبركاته.
أنا حتى الآن لم أتقن التعامل مع الشاشات... لهذا لا يمكنني الآن أن التفاعل معكم إلا عن بعد وفي صمت.
السلام عليكم ورحمه الله وبركاته..



شكرااا لك أخى الكريم ...

بالمنسبه التعامل مع الشاشات ستجدة سهل جداااا ان شاء الله ..

لأن ميكروسى برو يوفر لك جميع الدوال والتعليمات التى تسهل لك التعامل مع الشاشات ...


اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما


أخى الكريم محمد عيسى ..

انا هرفعلك كتاب يشرح لك وبالتفصيل طريقه التعامل مع الشاشات ..


اليك الروابط أخى ..


https://drive.google.com/file/d/0Bxg...ew?usp=sharing




ودة برنامج بسيط لتوضيح فكرة التعامل مع الشاشات ..


كود:
       // Lcd pinout settings
      sbit LCD_RS at RB0_bit;
      sbit LCD_EN at RB1_bit;
      sbit LCD_D7 at RB5_bit;
      sbit LCD_D6 at RB4_bit;
      sbit LCD_D5 at RB3_bit;
      sbit LCD_D4 at RB2_bit;

    // Pin direction
      sbit LCD_RS_Direction at TRISB0_bit;
      sbit LCD_EN_Direction at TRISB1_bit;
      sbit LCD_D7_Direction at TRISB5_bit;
      sbit LCD_D6_Direction at TRISB4_bit;
      sbit LCD_D5_Direction at TRISB3_bit;
      sbit LCD_D4_Direction at TRISB2_bit;


      int x =0  ;
     char txt1[] = "mikroElektronika";
     char txt2[] = "LCD TEST";

      

      


        void main() {
        Lcd_Init();
        adcon1=0x06;
        trisb=0; portb=0;
        trisd=3; portd=0;

    Lcd_Cmd(_LCD_CURSOR_OFF); // cursor off
    Lcd_Cmd(_LCD_CLEAR);
        
        
        
        

    lcd_out(1,4," Welcome ");
    
    lcd_out(2,1,"ABDALLA HYGAZY");
    
     delay_ms(2000);
     
     Lcd_Cmd(_LCD_CLEAR);
     
     lcd_out(1,1,txt1);
     lcd_out(2,5,txt2);
               while(1){


        if(portd.f0==0){delay_ms(250);X++;};

   //***************************************//



       if( X==1 ) 
       { Lcd_Cmd(_LCD_CLEAR);
       lcd_out(1,1,"0123456789"); 
        lcd_out(2,1,"10 11 12 13 14 ");
        X=2;
       };
       
       
       if( X==3 )
       { Lcd_Cmd(_LCD_CLEAR);
       lcd_out(1,1,"ABCDEFGHIJKLMNOP");
        lcd_out(2,1,"QRSTUVWXYZ");
          X=4;
        
        };
       
       
       if( X==5 )
       { Lcd_Cmd(_LCD_CLEAR);   
       lcd_out(1,1,"*!?/><:+-*&%$^{}"); 
        X=6;
       
       };
       
       
       if( X==7 )
       { Lcd_Cmd(_LCD_CLEAR);    
       lcd_out(1,3,"ABDALLA"); 
       X=8;
       
       };
       
       if(x==9){x=0;};

  }
 }




شرح البرنامج ...




نبدأ بتحديد اطراف الشاشة الموصلع على الميكرو من خلال التعريف التالى


كود:
// Lcd pinout settings
      sbit LCD_RS at RB0_bit;
      sbit LCD_EN at RB1_bit;
      sbit LCD_D7 at RB5_bit;
      sbit LCD_D6 at RB4_bit;
      sbit LCD_D5 at RB3_bit;
      sbit LCD_D4 at RB2_bit;

    // Pin direction
      sbit LCD_RS_Direction at TRISB0_bit;
      sbit LCD_EN_Direction at TRISB1_bit;
      sbit LCD_D7_Direction at TRISB5_bit;
      sbit LCD_D6_Direction at TRISB4_bit;
      sbit LCD_D5_Direction at TRISB3_bit;
      sbit LCD_D4_Direction at TRISB2_bit;

هذا الأمر مهم جدااا .. لأنه يحجز اطراف الميكرو الموصله مع الشاشة وتكون هذة الأطراف مخصصه للشاشه فقط وفى الغالب يستخدم المبرموجون البوت B للربط مع الشاشه هذا لأن البورت B يتميز بأن اطرافة متجاورة ومنسقه جنب بعض ويسهل عمليه الهارد وير ..


.......

وهذة الداله تخبر الميكرو أن يوجد شاشه موصله .. وتعمل تهيئة للشاشه ..


وهذة الدالة توضع مباشرة بعد الدالة الرائسية للبرنامج


كود:
 Lcd_Init();


وطبعاااا هذة التعليمات معروفه ومفهومه .. وهى لتهيئه بورتات الميكرو ام دخل او خرج ..


كود:
 trisb=0; portb=0;
        trisd=3; portd=0;


وهذة التعليمه لإقاف أخر خانة للكتابة فى الشاشة ويمكنك مسحها من الكود ولاحظ الفرق ..
كود:
 Lcd_Cmd(_LCD_CURSOR_OFF); // cursor off
وايضااا هذة التعليمه مهمه جدااا فى التعامل مع الشاشات ..
فهى تمسح البينات الموجودة على الشاشة وتستخدم عندما تكون الشاشة مكتوب عليها بينات وتريد ادخال او كتابة بينات اخرى على الشاشة ف تستخد هذة التعليه لمسح الكتابة الموجوده فى الشاشة ..
Lcd_Cmd(_LCD_CLEAR);
وهذا الأمر يطبع الكلام على الشاشة مباشر ..
كود:
lcd_out(1,4," Welcome ");
ولاحظ وجود رقمان فى هذا الأمر الرقم الأول هو رقم الصف فى الشاشة والرقم الثانى هو رقم العمود فى الشاشة ..

وللتوضيح اكثر نحن هنا نستخدم شاشة 2 * 16 مربع او بيكسل ..

وهذة الصور توضح اكثر اطراف الشاشة




وهذة الصورة توضح عدد المربعات الموجودة فى هذة الشاشة




لو تلاحظ يوجد صفان كل صف مكون من 16 مربع وبيتم أختيار المربع الذى تبدأ الكتابه عليه من خلال هذة التعليمه ..
كود:
lcd_out(1,4," Welcome ");
لو تلاحظ أن كلمة "Welcome" مكونة من 7 حروف وانت تريد ان تظهر هذة الكلمه فى منتصف الشاشة فى الصف الأول هتكتب التعليمه دى ..
كود:
lcd_out(1,4," Welcome ");
رقم واحد يخبر الشاشه انه تم اختيار الصف الأول للكتابه علية ورقم اربعة يخبر الشاشة انه سوف يتجاهل اربع اعمدة من الصف الأول وبعد ذالك يكتب كلمة "Welcome" مباشر بعد العمود الرابع ..


ويوجد طريقة اخرى للكتابه على الشاشة مثلا لو عندك عبارة او رسالة هتستخدمها فى اكثر من موقع فى البرنامج يبقى افضل طريقه هى الإعلان عن متغير واسناد العبارة اوالرساله لهذا المتغير .. ولكن يجب المتغير يكون من نوع
كود:
 char
وبيتم الأعلان عنة بهذة الطريقة


كود:
   
 char txt1[] = "mikroElektronika"; 

 void main() {

Lcd_Init();

Lcd_Cmd(_LCD_CURSOR_OFF); // cursor off
    Lcd_Cmd(_LCD_CLEAR);

lcd_out(1,1,txt1);

ولاحظ ان تم اسناد قيمة المتغير للعرض على الشاشة من خلال هذا الأمر
كود:
 lcd_out(1,1,txt1);

ودة رابط للبرنامج وملف المحاكاة للتجربة والتعديل على البرنامج لتتعرف على اهمية التعليمات التى تم شرحها

https://drive.google.com/file/d/0Bxg...ew?usp=sharing


ان شاء الله هرفعلك دروس أخرى وتحت امرك أخى الكريم .. انت لك الفضل الكبير على .. بارك الله فيك ...

وبالتوفيك


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 13-03-2016 الساعة 05:28 AM


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