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

   

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 09-05-2019, 01:13 AM المشاركة 41   
افتراضي



كود:
#include <mega8.h>  //لتعريف البرنامج بالمايكرو الذي نتعامل معه من اجل اضافة مكتبته الخاصة
#include <stdlib.h> //مكتبة خاصة بعمليات تحويل الارقام الطويلة الى سلسلة رقمية
#include <delay.h>  //مكتبة خاصة بالتاخير الزمني

// Alphanumeric LCD Module functions
#include <alcd.h>   // LCDمكتبة خاصة بشاشة                
unsigned char comber[10],x=0,y=0,w=0,contr=0,conter1=0,LCD_X=3,LCD_Y=1,tem=0,flib=0; //مجموعة متحولات 8 بت
unsigned long int z=0,z1=0,z2=0; //مجموعة متحولات 32 بت
bit new=0,new1=0;  // متحولات من النوع بت
eeprom long int passwrd,passwrd1; // متحولات في الذاكرة الدائمةلحفظ القيم فيها


void pass(unsigned char new_pas) 
 {
  switch (new_pas)
   {
     case 1 :   //اختبار الضغط على # فعند الضغط سيتم مسح الشاشة وطلب الباسوورد القديم 
           { 
             z=0; //المتحول الذي نخزن به الارقام بشكل مؤقت
             lcd_clear(); //تعليمة مسح الشاشة
             lcd_gotoxy(2,0); //تعليمة مكان الكتابة على الشاشة
             lcd_puts("PASSWORD OLD");break; //تعليمة كتابة سلسلةاحرف
             
           }
           
     case 2 : 
           {
             if((z==passwrd)||(z==passwrd1&&new1==1)) //بعد وضع الباسورد القديم او الباسوورد الاحتياطي اذا كان صحيحا سيتم
                                                      //السماح لنا ادخال الباسوورد الجديد
              { 
                z=0; 
                w=0; 
                lcd_clear();
                lcd_gotoxy(2,0);
                lcd_puts("New Password");break;
               
              } 
              
            else if(z!=passwrd&&new1==0)  //اما اذا كان الباسوورد خطأ سيعطي كلمة خطأوطلب الباسوورد القديم
             { 
               z=0; 
               w++; //متحول لزيادة عداد المحاولات الخاطئة
               contr=1;
               lcd_clear();
               lcd_gotoxy(5,0);
               lcd_puts("ERROR");
               delay_ms(2000); //تعليمة تاخير لمدة ثانيتين
               lcd_clear();
               lcd_gotoxy(2,0);
               lcd_puts("PASSWORD OLD");break;
             } 
            
            
           }
           
     case 3 :
     
             { 
               
               z1=z; //نقل الباسوورد الجديد الى متحول جديد وطلب اعادة كتابته مرة اخرى
               w=0;
               lcd_clear();
               lcd_gotoxy(5,0);
               z=0;
               lcd_puts("REPEAT");break; 
             } 
             
     case 4 : 
           
             {
               z2=z; // نقل الباسورد الجديد مرة اخرى الى متحول اخر من اجل مقارنة المتحولين مع بعض
               z=0;
               if(z1==z2) // ثم يعود للعرض الطبيعيDONE اذا كان نتيجة مقارنة المتحولين صحيحة سيتم عرض كلمة 
                { 
                 flib=0;
                 passwrd=z2; //الاحتفاظ بالباسووردالجديد بالذاكرة الدائمة
                 contr=0;
                 new=0;
                 new1=0;
                 w=0;
                 lcd_clear();
                 lcd_gotoxy(6,0);
                 lcd_puts("DONE");
                 delay_ms(2000);
                 lcd_clear();
                 lcd_gotoxy(1,0);
                 lcd_puts("INTER PASSWORD");break; 
                }
               else if(z1!=z2)  //اذا كانت نتيجةالمقارنة خاطئة سيطلب من المستخدم اعادة كتابة الباسورد الجديد مرتين
                {
                 contr=2;
                 z=0;
                 lcd_clear();
                 lcd_gotoxy(2,0);
                 lcd_puts("New Password");break;
                } 
             } 
             
           
   }; 
 }

///////////////////////////////////////////////////////////////////////
char keybad()  //تابع لقرائة حالة الكيبادواختبار الزر المضغوط
  {
    char temp=20; //مخزن مؤقت لوضع القيمة فيه عند ضغط احد الكبسات
    DDRB.0=1;DDRB.1=0;DDRB.2=0;   //وضع صفرعلى العامود الاول وقرائة حالة المداخل عند الاسطر في الكيباد
    if(!PINB.3)temp='3';        //اذا كانت حالة المدخل الاول اي السطر الاول قيمته صفر فهذا يعني اننا ضغطنا 
                                //على الرقم 3 في الكيباد ونفس العملية بالنسبة لباقي الكبسات على نفس العامود
    if(!PINB.4)temp='6';
    if(!PINB.5)temp='9';
    if(!PINB.6)temp='#';
    
    DDRB.0=0;DDRB.1=1;DDRB.2=0;
    if(!PINB.3)temp='2';
    if(!PINB.4)temp='5';
    if(!PINB.5)temp='8';
    if(!PINB.6)temp='0';
    
    DDRB.0=0;DDRB.1=0;DDRB.2=1;
    if(!PINB.3)temp='1';
    if(!PINB.4)temp='4';
    if(!PINB.5)temp='7';
    if(!PINB.6)temp='*';
    return temp;
  }
 //////////////////////////////////////////////////////////////////////////////////
void main(void)
{

PORTB=0xF8;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0xC0;
DDRD=0x3F;


ACSR=0x80;
SFIOR=0x00;



// Alphanumeric LCD initialization  ترتيب وصل اقطاب الشاشة مع المايكروكونترولر
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 5
// RD - PORTC Bit 6
// EN - PORTC Bit 4
// D4 - PORTC Bit 3
// D5 - PORTC Bit 2
// D6 - PORTC Bit 1
// D7 - PORTC Bit 0
// Characters/line: 16
lcd_init(16); //تعريف الشاشة على انها ذات 16 محرف
lcd_gotoxy(1,0); //مكان الكتابة على الشاشة 
lcd_puts("INTER PASSWORD"); //طلب ادخال الباسوورد لفتح الخزنة
////////////////////////////////////////////////////////////////////////
while (1)
      { 
        if(PIND.6==0)passwrd=z; //تخزين قيمة الباسورد الاساسي اول مرة في الذاكرة الدائمةيكون بكتابة 
                                //الرقم والضغط على كبسة مؤقتة في المايكرو
        if(PIND.7==0)passwrd1=z; //تخزين قيمة الباسورد الاحتياطي اول مرة في الذاكرة الدائمة يكون بكتابة 
                                 //الرقم والضغط على كبسة مؤقتة اخرى في المايكرو
        x=keybad(); // X قرائة حالة الكيباد باستمرار ووضع القيمة في المتحول 
        
        if(y!=x) //من اجل كتابة الرقم مرة واحدة عند الضغط على اي كبسة 
         {        
           delay_ms(200); // تاخير زمني قبل الكتابة في المتحول لحين استقرار ضغطة اليد على الكبسة
           y=x;
           if(x=='#'&&new1==0)flib++;//للتبديل بين طلب ادخال باسورد جديد او العودة للعرض العادي
           
          if(flib==1&&x=='#') //لطلب ادخال باسوورد جديد
           { 
             
             LCD_X=3;
             new=1;
             contr=1;
             conter1=0;
             PORTD.3=1;
             delay_ms(250);
             PORTD.3=0;
             pass(contr);
             w=0; 
             z=0;
             
             new1=0;
           }
          if(flib==2&&x=='#') //للعودة للعرض العادي
           { 
             flib=0;
             LCD_X=3;
             new=0;
             contr=0;
             conter1=0;
             PORTD.3=1;
             delay_ms(250);
             PORTD.3=0;
             lcd_clear();
             lcd_gotoxy(1,0);
             lcd_puts("INTER PASSWORD");
             w=0;
             z=0;
           } 
           
           if(x=='*'&&new==1&&z!=0) //عند الضغط على النجمة في حال تبديل الباسورد سيتم استدعاء تابع من الاعلى لفحص 
            {                       //النتيجة ووضع الحالة على الشاشة
              LCD_X=3;
              contr++;
              conter1=0;
              PORTD.3=1;
              delay_ms(250);
              PORTD.3=0;
              pass(contr);
              z=0;
             
                  
            }
          /////////////////////////////////////

           if(x=='*'&&new==0&&z!=0) //عند الضغط على النجمة في حال محاولة فتح الخزنة اذا كانت القيمة الموجودة
                                    //تساوي القيمة الموجودة في الذاكرة الدائمة سيتم فتح الخزنة Zفي المتحول
            {                       //ثم العودة للعرض بالشكل العاديGOODوالكتابة على الشاشة 
               PORTD.3=1;
               delay_ms(250);
               PORTD.3=0;
              if(z==passwrd&&new1==0&&z!=0)
              { 
                z=0;
                w=0;
                LCD_X=3;
                conter1=0;
                lcd_clear();
                lcd_gotoxy(6,0);
                lcd_puts("GOOD");
                PORTD.0=1; 
                delay_ms(2000); 
                PORTD.0=0;
                lcd_gotoxy(1,0);
                lcd_puts("INTER PASSWORD");
              }
             else if(z==passwrd1&&new1==1&&z!=0)//تبديل الباسوورد باستخدام الباسورد الاحطياطي في حال نسينا الاصلي
                {
                  LCD_X=3;
                 new=1;
                 contr=2;
                 conter1=0;
                 PORTD.3=1;
                 delay_ms(250);
                 PORTD.3=0;
                 pass(contr);
                 w=0; 
                 z=0;
                }
               
              else if(z!=passwrd1&&new1==1)//لوضع خطأاذا كان الباسورد الاحتياطي الذي ندخله خاطئ والمحاولة مرة اخرى 
               {
                 z=0; 
                 w++;
                 LCD_X=3;
                 conter1=0;
                 
                 lcd_clear();
                 lcd_gotoxy(5,0);
                 lcd_puts("ERROR");
                 delay_ms(2000);
                 lcd_clear();
                 lcd_gotoxy(1,0);
                 lcd_puts("PASSWORD BACKUP");
               } 
                
               else if(z!=passwrd&&new1==0) //لوضع خطأاذا كان الباسوردالاصلي الذي ندخله خاطئ والمحاولة مرة اخرى 
               {                            
                 w++; 
                 z=0;
                 if(w<3)
                 {
                  LCD_X=3;
                  conter1=0;
                  lcd_clear();
                  lcd_gotoxy(5,0);
                  lcd_puts("ERROR");
                  PORTD.2=1;
                  delay_ms(2000);
                  PORTD.2=0;
                  lcd_gotoxy(1,0);
                  lcd_puts("INTER PASSWORD"); 
                 }
                ///////////////////////////////////// 
                 
                  ////////////////////////////
               }
            } 
             
            if(w==3)  //في حال ادخلنا باسورد خاطئ ثلاث مرات سنمنع من المحاولة مرة اخرى لمدة 10 دقائق
                  {   //واضائة ليد الانتظار وكتابة على الشاشة
                   LCD_X=3; 
                   conter1=0;
                   PORTD.1=1;
                   lcd_clear();
                   lcd_gotoxy(4,0);
                   lcd_puts("WAITING");
                    for (tem=0;tem<10;tem++)
                      { 
                       delay_ms(60000);
                      };
                       
                   PORTD.1=0;
                   lcd_gotoxy(1,0);
                   lcd_puts("INTER PASSWORD");
                   w=0;
                   new1=0;
                  }
                  
           if(x!=20&&x!='*'&&x!='#'&&conter1<8) //لتخزين الارقام المدخلة بشكل مؤقت في المتحول وادخال 8ارقام كحد اقصى
              {                                 //ووضع نجوم بدل الارقام من اجل عدم رؤية احد للارقام عند كتابتها
               LCD_X++;                                 
               delay_ms(200);
               z=(z*10)+x;                 
               ltoa(z,comber);
               conter1++;
               lcd_gotoxy(LCD_X,LCD_Y);
               lcd_puts("*");
               PORTD.3=1;
               delay_ms(250);
               PORTD.3=0;
              }
          //////////////////////////////////////
         }
         
         if(PINB.7==0&&new1==0) //للانتقال الى تبديل الباسورد بالاستعانة بالباسورد الاحتياطي في حال نسينا الاصلي 
            { 
             z=0;
             w=0;
             new1=1;
             lcd_clear();
             lcd_gotoxy(1,0);
             lcd_puts("PASSWORD BACKUP");
             PORTD.3=1;
             delay_ms(250);
             PORTD.3=0; 
             
             new=0;
             contr=0;
           }
           
           
      }
}

اعلانات

rinoum123456
:: مهندس ::
تاريخ التسجيل: May 2014
المشاركات: 44
نشاط [ rinoum123456 ]
قوة السمعة:
قديم 09-05-2019, 01:14 AM المشاركة 42   
افتراضي


اخي انا اريد شرح مختصر لطريقة فتح البرنامج وكتابة الكود طبعا نسخ لصق لغاية ما احفظه كملف hex لتشغيله على البروتس
مشكلتي ان برنامج CodeVisionAVR معقد ام اعرف طريقة لصق الكود به واخراجه كملف hex

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

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 09-05-2019, 01:29 AM المشاركة 43   
افتراضي


مظبوط اخي في شغلات مابيتعرف عليها البرنامج اذا عملتلها نسخ لصق على سبيل المثال مكتبة LCD مشان هيك لازم تفتح مشروع جديد (New project)وتحدد البارامترات تبعك من مداخل ومخارج وشاشة العرض وتعمل Generate program ,save and exit بعدين فيك تنسخ وتلصق بالبرنامج لح ابعتلك بعض الصور


rinoum123456
:: مهندس ::
تاريخ التسجيل: May 2014
المشاركات: 44
نشاط [ rinoum123456 ]
قوة السمعة:
قديم 09-05-2019, 01:51 AM المشاركة 44   
افتراضي


خلاص اخي وجدت الحل شكرا لك لا داعي لتعبك مشكور


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 09-05-2019, 02:09 AM المشاركة 45   
افتراضي


https://up.top4top.net/downloadf-1223ky0501-rar.html
هي صور تشرح شوي عن البرنامج .
العفو اي خدمة تكرم عينك


rinoum123456
:: مهندس ::
تاريخ التسجيل: May 2014
المشاركات: 44
نشاط [ rinoum123456 ]
قوة السمعة:
قديم 09-05-2019, 10:53 AM المشاركة 46   
افتراضي


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


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 09-05-2019, 07:29 PM المشاركة 47   
افتراضي


أحمد عزيز
هذا حسابي على الفيس


rinoum123456
:: مهندس ::
تاريخ التسجيل: May 2014
المشاركات: 44
نشاط [ rinoum123456 ]
قوة السمعة:
قديم 09-05-2019, 10:38 PM المشاركة 48   
افتراضي


أحمد عزيز
هذا حسابي على الفيس
يوجد الكثير من الاشخاص بنفس الاسم



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