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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 07-03-2016, 11:35 AM المشاركة 1   
افتراضي مشروع أضواء مبرمجة متحركة بعدة نماذج والميكروكونترولر PIC12F675 : Twitter FaceBook Google+



مشروع أضواء مبرمجة متحركة بعدة نماذج والميكروكونترولر PIC12F675 :
الدائرة الكهربية :




1- دالة الإعدادات و الدالة الرئيسية وداخلها الحلقة الغير منتهية ، نبدأ الحلقة الغير منتهية بقراءة الجهد التناظرى من على الطرف المتصل بطرف المقاومة المتغيرة GP0/AN0(pin 7) وتحويله إلى عدد من 0 إلى 1024 وحفظ هذه القيمة فى متغير باسم AD_Val ، الخطوة التالية هى نسخ هذه القيمة إلى متغير عداد التأخير الزمنى وهو باسم Delay_Val ، وذلك لتحديد سرعة العرض ، وهذا يعنى أنه يجب علينا إعلان هذه المتغيرات بنوع unsigned int فى بداية البرنامج وقبل استخدامها فى البرنامج الرئيسى .
2- فى نهاية البرنامج يتم تحديد دوال نماذج الإضاءة المطلوب عرضها ولتكن بالمسمى
.RunSeq_02(,RunSeq_01();,… RunSeq_00();, وهذا يستلزم إنشاء دالة التأخير المتغير بالمسمى Delay(); ثم دالة مستقلة لكل نموذج ، ومن ثم يكون البرنامج بالشكل التالى يلى :



كود:
//light chaser
//PIC12F675, Internal clock , MCLR disabled
//Eng.F.Abdelaziz 6/3/2016
// variables
unsigned int AD_Val,Delay_Val ,i;
///////variable delay function/////////////
void Delay(){

  for(i=0;i<=Delay_Val;i++){
      Delay_us(1000); // 0 to 1023ms as Delay_Val=AD_Val
  }
}
//////////////////////
void Init(){
  TRISIO=0b00001001;	//GP3can't be an output - always input
  CMCON = 0b00000111;   // comparators OFF
  ANSEL = 0b00000001;   // AN0 only is enabled (last 4 bits are enable bits {AN3:AN0}
  GPIO = 0b00000000;

  }
///////////////////////////////////////////////////
//////////////////////////////////////////////////
void RunSeq_00()
{
  GPIO = 0b00110110;
  Delay();
  GPIO = 0b00000000;
  Delay();


}
////////////////////

void RunSeq_01()
{
 //.................
}
////////////////////
void RunSeq_02()
{
  //....................
}
////////////////////////
void RunSeq_03()
{
  //...............
}
///////////////////////
void RunSeq_04()
{
  //.................
}
////////////////
void RunSeq_05()
{
  //....................
}
//////////////////
void RunSeq_06()
{
  //................
}
/////////////////
void RunSeq_07()
{
  //..................
}
////////////////
void RunSeq_08()
{
  ///////////////////
}
//////////////////////
void RunSeq_09()
{
  //..................
}
///////////////////
void RunSeq_10()
{
 //...................
}
///////////////////
// main program
void main()
{
  Init();
  while(1)
  {
    AD_Val = ADC_Read(0);
	Delay_Val = AD_Val ;



      RunSeq_00();
      RunSeq_01();
	 RunSeq_02();
	RunSeq_03();
	 RunSeq_04();
	 RunSeq_05();
	 RunSeq_06();
	RunSeq_07();
	 RunSeq_08();
	 RunSeq_09();
	 RunSeq_10();




  }
}

اعلانات

بوغنيم
:: مهندس ::
تاريخ التسجيل: Apr 2015
المشاركات: 29
نشاط [ بوغنيم ]
قوة السمعة:0
قديم 07-03-2016, 11:39 AM المشاركة 2   
افتراضي


بارك الله فيك أخي

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً F.Abdelaziz ( شكر العضو على هذه المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

حمد سيد
:: مهندس ::
تاريخ التسجيل: Jan 2015
المشاركات: 44
نشاط [ حمد سيد ]
قوة السمعة:0
قديم 08-03-2016, 02:41 AM المشاركة 3   
افتراضي


مشروع أضواء مبرمجة متحركة بعدة نماذج والميكروكونترولر PIC12F675 :
الدائرة الكهربية :




1- دالة الإعدادات و الدالة الرئيسية وداخلها الحلقة الغير منتهية ، نبدأ الحلقة الغير منتهية بقراءة الجهد التناظرى من على الطرف المتصل بطرف المقاومة المتغيرة GP0/AN0(pin 7) وتحويله إلى عدد من 0 إلى 1024 وحفظ هذه القيمة فى متغير باسم AD_Val ، الخطوة التالية هى نسخ هذه القيمة إلى متغير عداد التأخير الزمنى وهو باسم Delay_Val ، وذلك لتحديد سرعة العرض ، وهذا يعنى أنه يجب علينا إعلان هذه المتغيرات بنوع unsigned int فى بداية البرنامج وقبل استخدامها فى البرنامج الرئيسى .
2- فى نهاية البرنامج يتم تحديد دوال نماذج الإضاءة المطلوب عرضها ولتكن بالمسمى
.RunSeq_02(,RunSeq_01();,… RunSeq_00();, وهذا يستلزم إنشاء دالة التأخير المتغير بالمسمى Delay(); ثم دالة مستقلة لكل نموذج ، ومن ثم يكون البرنامج بالشكل التالى يلى :



كود:
//light chaser
//PIC12F675, Internal clock , MCLR disabled
//Eng.F.Abdelaziz 6/3/2016
// variables
unsigned int AD_Val,Delay_Val ,i;
///////variable delay function/////////////
void Delay(){

  for(i=0;i<=Delay_Val;i++){
      Delay_us(1000); // 0 to 1023ms as Delay_Val=AD_Val
  }
}
//////////////////////
void Init(){
  TRISIO=0b00001001;	//GP3can't be an output - always input
  CMCON = 0b00000111;   // comparators OFF
  ANSEL = 0b00000001;   // AN0 only is enabled (last 4 bits are enable bits {AN3:AN0}
  GPIO = 0b00000000;

  }
///////////////////////////////////////////////////
//////////////////////////////////////////////////
void RunSeq_00()
{
  GPIO = 0b00110110;
  Delay();
  GPIO = 0b00000000;
  Delay();


}
////////////////////

void RunSeq_01()
{
 //.................
}
////////////////////
void RunSeq_02()
{
  //....................
}
////////////////////////
void RunSeq_03()
{
  //...............
}
///////////////////////
void RunSeq_04()
{
  //.................
}
////////////////
void RunSeq_05()
{
  //....................
}
//////////////////
void RunSeq_06()
{
  //................
}
/////////////////
void RunSeq_07()
{
  //..................
}
////////////////
void RunSeq_08()
{
  ///////////////////
}
//////////////////////
void RunSeq_09()
{
  //..................
}
///////////////////
void RunSeq_10()
{
 //...................
}
///////////////////
// main program
void main()
{
  Init();
  while(1)
  {
    AD_Val = ADC_Read(0);
	Delay_Val = AD_Val ;



      RunSeq_00();
      RunSeq_01();
	 RunSeq_02();
	RunSeq_03();
	 RunSeq_04();
	 RunSeq_05();
	 RunSeq_06();
	RunSeq_07();
	 RunSeq_08();
	 RunSeq_09();
	 RunSeq_10();




  }
}
انا اخزت الملف وجربتو على البروتس عطانى اخطاء كتير ومشتغلش

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً F.Abdelaziz ( شكر العضو على هذه المشاركة )
اعجاب F.Abdelaziz ( أعجبته المشاركة )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-03-2016, 06:17 AM المشاركة 4   
افتراضي


انا اخزت الملف وجربتو على البروتس عطانى اخطاء كتير ومشتغلش

السلام عليكم ورحمة الله وبركاته
أخى الكريم شكرا جزيلا لك

1- تأكد من أننى لا أضع أى مشاركة قبل أن أجربها على البروتس على الأقل وأحصل على نتائج جيدة .
2- فكرة المفتاح الخاص بالبرنامج الخاص بك (فوليوم + مفتاح on - off ) وصلت تماما وجارى التنفيذ للحصول على أفضل النتائج .
مع تمنياتى بدوام التوفيق


الملف التالى يحتوى على ملف البروتيس والملف الهكس hex لتجربة النتائج الأولية :

http://www.mediafire.com/download/9j...75_chaser1.zip


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 08-03-2016 الساعة 06:44 AM

حمد سيد
:: مهندس ::
تاريخ التسجيل: Jan 2015
المشاركات: 44
نشاط [ حمد سيد ]
قوة السمعة:0
قديم 08-03-2016, 05:28 PM المشاركة 5   
افتراضي




السلام عليكم ورحمة الله وبركاته
أخى الكريم شكرا جزيلا لك

1- تأكد من أننى لا أضع أى مشاركة قبل أن أجربها على البروتس على الأقل وأحصل على نتائج جيدة .
2- فكرة المفتاح الخاص بالبرنامج الخاص بك (فوليوم + مفتاح on - off ) وصلت تماما وجارى التنفيذ للحصول على أفضل النتائج .
مع تمنياتى بدوام التوفيق


الملف التالى يحتوى على ملف البروتيس والملف الهكس hex لتجربة النتائج الأولية :

http://www.mediafire.com/download/9j...75_chaser1.zip
انا اسف جداا فعلا الملف المرفوع يعمل جيداا
وارجو منك ان تنفز ليه ملف hex اشتغل بيه لحد ما اتعلم الكتابه على الميكرو سى وجزاك الله خير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 08-03-2016, 05:49 PM المشاركة 6   
افتراضي


المذبذب / الساعة
المذبذب / الساعة والتي توفر توقيت تعليمات PIC لا تحتاج إلى أن تكون مستقرة جدا ، ودائرة شبكة RC بسيطة (C1 / R14 + RV1) يكون فيها الكفايةومن ثم توفير الكريستال .
طرق التحكم فى سرعة الإضاءة : يوجد طريقتان
- من خلال مقاومة متغيرة RV1 توضع فى دائرة RC ، والتي تؤثر بشكل مباشر على التردد الأساسى لتوقيت تعليمات PIC .
- عن طريق البرنامج ، مع دالة بمتغير يتزايد عند كل مقاطعة بالمؤقت Timer 0 .
عمليا يتم وضع RV1 في وضع الوسط، ويتم ضبط السرعة عن طريق أزرار الضغط Speedup "تسريع" و SpeedDown

إضافة رد

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

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

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


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

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