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

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 23-10-2012, 05:18 AM المشاركة 1   
افتراضي الساعة الرقمية بدون خداع بصري و باستخدام seg-7 Twitter FaceBook Google+



كود الميكروسي ..

كود:
#define mod_sw_dir       trisa.f5
#define mod_sw           porta.f5
#define inc_sw_dir       trisa.f4
#define inc_sw           porta.f4
#define disply_dir       trisb
#define disply           portb
#define en0_dir          trisa.f0
#define en1_dir          trisa.f1
#define en2_dir          trisa.f2
#define en3_dir          trisa.f3
#define en0               porta.f0
#define en1              porta.f1
#define en2              porta.f2
#define en3              porta.f3
 #define pressed           0
 #define is                ==
 #define free               1
 #define ohr_com_dir    trisa.f6
 #define ohr_com        porta.f6
 #define min_com_dir    trisa.f7
 #define min_com        porta.f7

 char x[]={63,6,91,79,102,109,125,7,127,111};
 char i,j;
 void set()
 {
  while(mod_sw is pressed){}

  while(mod_sw is free){min_com=0;ohr_com=1;while(inc_sw is pressed)
                                                                   {
                                                                   i++;if(i>12)i=1;en0=1;portb=x[i/10];delay_ms(250);
                                                                   en0=0;en1=1;portb=x[i%10];delay_ms(250);en1=0;
                                                                   }
                       }

  while(mod_sw is pressed){}
  while(mod_sw is free){ohr_com=0;min_com=1;while(inc_sw is pressed)
                                                                   {
                                                                   j++;if(i>59)j=0;en2=1;portb=x[j/10];delay_ms(250);
                                                                   en2=0;en3=1;portb=x[j%10];delay_ms(250);en3=0;
                                                                   }
                       }
  while(mod_sw is pressed){ohr_com=min_com=1;}
  return;
 }
void main()
 { cmcon=7;
 mod_sw_dir=inc_sw_dir=1;
 en0_dir=en1_dir=en2_dir=en3_dir=ohr_com_dir=min_com_dir=0;
 en0=en1=en2=en3=0;
 disply_dir=0;disply=0;
 while(1)
      {
       for(i=1;i<13;i++){
                         en0=1;portb=x[i/10];en0=0;
                         en1=1;portb=x[i%10];en1=0;
                          for(j=0;j<60;j++)
                                           {
                                            if(mod_sw is pressed)set();
                                            en2=1;portb=x[j/10];en2=0;
                                            en3=1;portb=x[j%10];en3=0;
                                            delay_ms(1000);

                                            
                                           }


                         
                        }
      
      
      
      }

}
ملفات المشروع كاملة ...
http://www.4shared.com/rar/Cag2AOcG/clock_573.html

اعلانات

الصورة الرمزية 3bkarino medo
3bkarino medo
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
الدولة: دمنهور البحيرة
المشاركات: 272
نشاط [ 3bkarino medo ]
قوة السمعة:0
قديم 23-10-2012, 11:47 AM المشاركة 2   
افتراضي


بارك الله فيك استاز حيدر ولكن ما معني #define

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

الصورة الرمزية fathi-mohmed
fathi-mohmed
:: مهندس متميز ::
تاريخ التسجيل: Aug 2010
الدولة: القاهرة
المشاركات: 518
نشاط [ fathi-mohmed ]
قوة السمعة:0
قديم 23-10-2012, 07:00 PM المشاركة 3   
افتراضي


الف شكر استاذ حيدر
أخي 3bkarino medo
كلمة #define هي استدعاء لمكتبة تعليمات خاصة بشيء معين علي سبيل المساْل للرموت كنترول


الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:98
قديم 23-10-2012, 11:21 PM المشاركة 4   
افتراضي


الف شكر استاذ حيدر
أخي 3bkarino medo
كلمة #define هي استدعاء لمكتبة تعليمات خاصة بشيء معين علي سبيل المساْل للرموت كنترول
الف شكر للمهندس حيدر

=========================
شكرا للاخ فتحى على اجتهادك ولكن للتوضيح اكثر

بخصوص ال #define
هى لا تخص طلب المكتبة ولكن هى تستخدم (( للتخصيص )) او اعطاء البن اسم اخر .
اى قمنا بتخصيص البن رقم كذا للعمل كذا .
وداخل الكود نقوم بوضع الاسم البديل بدلا من رقم البن
وهى لابد ان تاخذ اسماء معينة فى حالة ارتباطها بمكتبة معينة كمثال مكتبة ال lcd فيتم تحديد اسماء معينة لكل بن متصل بالال سى دى .
==================================
اما بالنسبة لاستدعاء المكتبات
فيكون شكلها كالتالى

فلنفرض ان المكتبة تسمى xxxx
سيكون الاستدعاء كالتالى
كود:
int_xxxx();



بالتوفيق للجميع ان شاء الله


التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 23-10-2012 الساعة 11:27 PM

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 24-10-2012, 05:28 AM المشاركة 5   
افتراضي


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


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,524
نشاط [ wleed antar ]
قوة السمعة:146
قديم 24-10-2012, 01:20 PM المشاركة 6   
افتراضي


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

جزاك الله خيرا أخى حيدر على الموضوع ،

ولكن عندما قمت بفتح المرفقات وجدت أربع قطع 7-seg

اثنان للثوانى واثنان للساعات بمعنى اثنان بسرعة الثوانى واثنان يقومان بالعد حتى رقم 12 فقط

فإذا كان التصميم بدون عداد ثوانى فإن السرعة الحالية يجب ان تتأخر بمقدار 60 ثانية

أردت التذكرة
وكل عام وأنتم بخير
ومنتظرين الشرح إن شاء الله


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 24-10-2012, 03:13 PM المشاركة 7   
افتراضي


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


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 25-10-2012, 08:01 AM المشاركة 8   
افتراضي


1- بالنسبة للامر
كود:
#define
فهو لتعريف اوامر الميكروسي و اعطائها صيغة اخرى مفهومة .. مثلا عندما نكتب الامر التالي :
كود:
#define  mod_switch   porta.f0
فمعناه اننا نقول للميكروسي عندما تشاهد الامر mod_switch ابدله بالامر porta.f0 .

2- المتكاملة 573 فيها ميزة جميلة جدا . و هي ان خرجها يكون نفس دخلها اذا كان طرف enable فيها مفعل (1) و لا يتغير خرجا اذا كان enable غير مفعل (0) .و بذلك يمكننا اضهار الساعات و ايقاف التفعيل للمتكاملتين الخاصتين بهما و يكون التفعيل مرة واحدة كل ساعة ...
و كذلك بالنسبة للدقائق و يكون التفعيل مرة واحدة لكل دقيقة و كذلك بالنسبة للثواني اذا اردنا اضافة عداد الثواني ...
و بهذه الطريقة ستاخذ كل سفن سكمنت قيمتها من المتكاملة المتصله بها و تحافظ عليها الى ان ياتي دورها في التغيير و لن نحتاج الى الخداع البصري في تشغيل السفن سكمنت بسرعة عاليه .

3- ملفات المشروع جاهزة للتنفيذ و كاملة مع اضافة ليد الى الطرف b7 كمؤشر للثواني
http://www.4shared.com/rar/HBU07JIx/clock_573.html

4- اقدم شكري الى جميع اخواني الذين ساهموا في الرد على الموضوع و ارجو ان اكون وفقت في شرح المشروع ... و كذلك اقدم شكري الى الاخ و المهندس الرائع احمد سمير فايد الذي ابدع في شرح هذه الدروس في دورته ....

إضافة رد

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

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

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


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

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