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

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

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 24-05-2014, 06:20 PM المشاركة 1   
Smile ساعة بسيطة Twitter FaceBook Google+



السلام عليكم

ساعة بسيطة وبدون مواصفات





الكود


كود:
#define         is        ==
const char data_seg[]={63,6,91,79,102,109,125,7,127,111};
char x=0,hu=0,mnt=0,se=0;
void interrupt()
{
 if(x is 0){porta=5;portb= data_seg[se%10];delay_ms(2);portb=0;}
 if(x is 1){porta=4;portb=data_seg[se/10];delay_ms(2);portb=0; }
 if(x is 2){porta=3;portb=data_seg[mnt%10];delay_ms(2);portb=0;}
 if(x is 3){porta=2;portb=data_seg[mnt/10];delay_ms(2);portb=0;}
 if(x is 4){porta=1;portb=data_seg[hu%10 ];delay_ms(2);portb=0;}
 if(x is 5){porta=0;portb=data_seg[hu/10 ];delay_ms(2);portb=0;}
 x++;
 if(x is 6)x=0;
 intcon=32;
 tmr0=217;
  if(se is 60){se=0;mnt++;}if(mnt is 60){mnt=0;hu++;}if(hu is 13)hu=0;
 }
void init()
          {cmcon=7;
           trisa=240;
           porta=0;
           trisb=0;
           portb=0;
           intcon=160;
           option_reg=133;
          }
void main()
{
  init();
  while(1)
         {
          se++;
          delay_ms(500);
         }

}


تحميل الملف من هنا


اعلانات

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 25-05-2014, 07:04 PM المشاركة 2   
افتراضي


سنضيف اربع سويشات الى الدائرة اثنان منها لزيادة ونقصان الدقائق والاخرى لساعات بهذا الشكل




الكود بعد الاضافة


كود:
#define         is        ==
#define         preseed    0
#define         sw1       porta.f4
#define         sw2       porta.f5
#define         sw3       porta.f6
#define         sw4       porta.f7

const char data_seg[]={63,6,91,79,102,109,125,7,127,111};
char x=0,hu=0,mnt=0,se=0;
int y=0;
void interrupt()
{
 if(x is 0){porta=5;portb= data_seg[se%10];delay_ms(2);portb=0;}
 if(x is 1){porta=4;portb=data_seg[se/10];delay_ms(2);portb=0; }
 if(x is 2){porta=3;portb=data_seg[mnt%10];delay_ms(2);portb=0;}
 if(x is 3){porta=2;portb=data_seg[mnt/10];delay_ms(2);portb=0;}
 if(x is 4){porta=1;portb=data_seg[hu%10 ];delay_ms(2);portb=0;}
 if(x is 5){porta=0;portb=data_seg[hu/10 ];delay_ms(2);portb=0;}
 x++;
 if(x is 6){x=0;y++;} if(y is 32){se++;y=0;}
 intcon=0b00100000;
 tmr0=217;
  if(se is 60){se=0;mnt++;}if(mnt is 60){mnt=0;hu++;}if(hu is 13)hu=0;
 }
void init()
          {cmcon=7;
           trisa=240;
           porta=0;
           trisb=0;
           portb=0;
           intcon=160;
           option_reg=133;
          }
void main()
{
  init();
  while(1)
         {
          if(sw1 is preseed){delay_ms(1);while(sw1 is preseed);delay_ms(1);mnt++;if(mnt is 60)mnt=1;}
          if(sw2 is preseed){delay_ms(1);while(sw2 is preseed);delay_ms(1);mnt--;if(mnt is 255)mnt=59;}
          if(sw3 is preseed){delay_ms(1);while(sw3 is preseed);delay_ms(1);hu++;if(hu is 13)hu=0;}
          if(sw4 is preseed){delay_ms(1);while(sw4 is preseed);delay_ms(1);hu--;if(hu is 255)hu=12;}


         }

}

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

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 25-05-2014, 07:24 PM المشاركة 3   
افتراضي


السلام عليكم
جزاك الله خيرا أخي عمل جميل يستخدم مهارات برمجية مع الشرح ممكن تكون بمثابة درس رائع في البرمجة


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 25-05-2014, 07:31 PM المشاركة 4   
افتراضي


السلام عليكم
جزاك الله خيرا أخي عمل جميل يستخدم مهارات برمجية مع الشرح ممكن تكون بمثابة درس رائع في البرمجة
وعليكم السلام ورحمة الله ان شاء الله سيكون هناك شرح باذن الله


Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 25-05-2014, 08:12 PM المشاركة 5   
افتراضي


اعانك الله أستاذ سعيد قادر ، شكرا أخي الكريم


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 26-05-2014, 07:48 PM المشاركة 6   
افتراضي


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





الكود


كود:
#define         is        ==
#define         preseed    0
#define         sw1       porta.f4
#define         sw2       porta.f5
#define         sw3       porta.f6
#define         sw4       porta.f7
#define         on        1
#define         off       0
const char data_seg[]={63,6,91,79,102,109,125,7,127,111};
char x=0,hu=0,mnt=0,se=0,sec=0,mntt=0,hur=0,slect=0;
int y=0;
void interrupt()
{if(sec is on )
 {if(x is 0){porta=5;portb= data_seg[se%10];delay_ms(2);portb=0;}
 if(x is 1){porta=4;portb=data_seg[se/10];delay_ms(2);portb=0; } }
 //****************************************************************
 
 if(mntt is on)
 {if(x is 2){porta=3;portb=data_seg[mnt%10];delay_ms(2);portb=0;}
 if(x is 3){porta=2;portb=data_seg[mnt/10];delay_ms(2);portb=0;}}
 //****************************************************************
 
 if(hur is on )
 {if(x is 4){porta=1;portb=data_seg[hu%10 ];delay_ms(2);portb=0;}
 if(x is 5){porta=0;portb=data_seg[hu/10 ];delay_ms(2);portb=0;}}
 //****************************************************************

 x++;
 if(x is 6)
 {x=0;y++;} 
 if(y is 32){se++;y=0;}

//******************************************************************
 intcon=0b00100000;
 tmr0=217;
  if(se is 60)
  { 
    se=0;mnt++;
  }
    if(mnt is 60){mnt=0;hu++;}
    if(hu is 13)hu=0;
    if(sw1 is preseed)
  {
    delay_ms(1);
    while(sw1 is preseed);
    delay_ms(1);slect++;
    if(slect is 4) 
    slect =1;
   }

 }
 //***************************************************************
void init()
          {cmcon=7;
           trisa=240;
           porta=0;
           trisb=0;
           portb=0;
           intcon=160;
           option_reg=133;
          }
 //***************************************************************
void main()
{
  init(); sec=on;mntt=on;hur=on;
  while(1)
         {
            if(slect is 1){
            hur=off;sec=off;mntt=on;
            if(sw2 is preseed)
           {
            delay_ms(1);
            while(sw2 is preseed);
            delay_ms(1);mnt++;
            if(mnt is 60)mnt=0;
           }
           if(sw3 is preseed)
           {
            delay_ms(1);
            while(sw3 is preseed);
            delay_ms(1);mnt--;
            if(mnt is 255)mnt=59;
            }
                     }
//*******************************************************

          if(slect is 2)
          {
           hur=on;sec=off;mntt=off;
           if(sw2 is preseed)
           {
            delay_ms(1);
            while(sw2 is preseed);
            delay_ms(1);hu++;
            if(hu is 13)hu=0;
           }
//*******************************************************
          if(sw3 is preseed)
          {
           delay_ms(1);
           while(sw3 is preseed);
           delay_ms(1);hu--;
           if(hu is 255)hu=12;
          }
//********************************************************

         if(slect is 3){sec=on;mntt=on;hur=on;}
          }
         }
}


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 26-05-2014, 08:20 PM المشاركة 7   
افتراضي


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


تــــــــــــــحميل


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:151
قديم 27-05-2014, 06:12 PM المشاركة 8   
افتراضي


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







الكود بعد الاضافة




كود:
#define         is        ==
#define         preseed    0
#define         sw1       porta.f4
#define         sw2       porta.f5
#define         sw3       porta.f6
#define         sw4       porta.f7
#define         on        1
#define         off       0
#define         dp        portb.f7
const char data_seg[]={63,6,91,79,102,109,125,7,127,111};
char x=0,tt=0,hu=1,mnt=0,se=0,sec=0,mntt=0,hur=0,slect=0;
int y=0;
void interrupt()
{if(sec is on )
 {if(x is 0)
           {
            porta=5;
            portb= data_seg[se%10];
            delay_ms(2);
            portb=0;
           }
 if(x is 1)
          {
            porta=4;
            portb=data_seg[se/10];
            delay_ms(2);
            portb=0;
           } }
 //****************************************************************
 
 if(mntt is on)
 {if(x is 2)
           {
             porta=3;
             portb=data_seg[mnt%10];
             delay_ms(2);
             portb=0;
             dp=tt;
            }
 if(x is 3)
           {
              porta=2;
              portb=data_seg[mnt/10];
              delay_ms(2);
              portb=0;
            }}
 //****************************************************************
 
 if(hur is on )
 {if(x is 4)
           {
             porta=1;
             portb=data_seg[hu%10 ];
             delay_ms(2);
             portb=0;
             dp=on;
           }
 if(x is 5)
           {
             porta=0;
             portb=data_seg[hu/10 ];
             delay_ms(2);
             portb=0;
            }}
 //****************************************************************

 x++;
   if(x is 6)
            {x=0;y++;}
   if(y is 32)
            {se++;y=0;tt++;}
 if(tt is 2)tt=0;
 
//******************************************************************
 intcon=0b00100000;
 tmr0=217;
  if(se is 60)
  { 
    se=0;mnt++;
  }
    if(mnt is 60){mnt=0;hu++;}
    if(hu is 13)hu=1;
    if(sw1 is preseed)
  {
    delay_ms(1);
    while(sw1 is preseed);
    delay_ms(1);slect++;
    if(slect is 4) 
    slect =1;
   }

 }
 //***************************************************************
void init()
          {cmcon=7;
           trisa=240;
           porta=0;
           trisb=0;
           portb=0;
           intcon=160;
           option_reg=133;
          }
 //***************************************************************
void main()
{
  init(); sec=on;mntt=on;hur=on;tt=1;
  while(1)
         {
           if(slect is 1)
                            {
                              se=0;
                              dp=off;
                              hur=off;
                              sec=off;
                              mntt=on;
           if(sw2 is preseed)
                            {
                              delay_ms(1);
                              while(sw2 is preseed);
                              delay_ms(1);
                              mnt++;
            if(mnt is 60)mnt=0;
           }
           if(sw3 is preseed)
           {
            delay_ms(1);
            while(sw3 is preseed);
            delay_ms(1);se=0;mnt--;
            if(mnt is 255)mnt=59;
            }
                             }
//*******************************************************

          if(slect is 2)
          {   se=0;  dp=off;
           hur=on;sec=off;mntt=off;
           if(sw2 is preseed)
           { dp=off;
            delay_ms(1);
            while(sw2 is preseed);
            delay_ms(1);hu++;
            if(hu is 13)hu=1;
           }
//*******************************************************
          if(sw3 is preseed)
          {
           delay_ms(1);
           while(sw3 is preseed);
           delay_ms(1);se=0;hu--;
           if(hu is 255)hu=12;
          }
//********************************************************


          }
if(slect is 3){sec=on;mntt=on;hur=on;}  }
}

إضافة رد

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

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

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


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

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