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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 02-06-2017, 05:26 PM المشاركة 49   
افتراضي



وحدات العرض (شاشات) السفن سيجمنت 7-segment displays :
وحدات العرض السفن سيجمنت كانت أقدم شاشات إلكترونية من نوع الليد تستخدم لعرض الأرقام . تستخدم هذه الأجهزة عادة فى الساعات الرقمية ، والعدادات (المبينات) الإلكترونية ، وأجهزة العد الإلكترونية ، وغيرها من المعدات المستخدمة لغرض البيانات الرقمية فقط .
تتكون وحدة العرض السفن سيجمنت من 7 عناصر (شرائح)مشعة للضوء مرتبة فى حاوية مستطيلة ، وبتوصيل ON وفصل OFF الشرائح المناسبة يمكننا الحصول على الأرقام من “0” إلى “9” .
الشكل التالى يبين وحدة عرض سفن سيجمنت . اختياريا ، تتوفر نقطة عشرية لعرض كسور الأعداد الغير صحيحة . يشار إلى شرائح وحدة الغرض بالحروف من “a” إلى “g” .





وحدات العرض السفن سيجمنت متوفرة فى شكلين : "الأنود المشترك" و "الكاثود المشترك" . الشكل التالى يبين توصيلات نوع الأنود المشترك ، أطراف الأنود لكل الشرائح يتم توصيلها معا لتشكيل طرف الأنود المشترك ، وعادة يتم توصيل هذا الطرف إلى مصدر القدرة . يتم توصيل ON الشرائح كل على حده عن طريق توصيل طرف كاثود الشريحة المطلوبة بالأرضى .



وبالمثل ، الشكل التالى يبين توصيلات نوع الكاثود المشترك . هنا ، يتم توصيل جميع كاثودات الشرائح معا لتشكيل طرف الكاثود المشترك ، وعادة ما يتم توصيل هذا الطرف بالأرضى . يتم توصيل ON الشرائح كل على حدة عن طريق تطبيق الجهد الموجب إلى طرف أنود الشريحة المطلوبة .




عرض الأرقام :
الشكل المبين أدناه يبين التوصيل بين الميكروكونترولر ووحدة العرض السفن سيجمنت . كما هو الحال مع الليدات القياسية ، من المطلوب استخدام مقاومات للحد من التيار فى كل شريحة . عادة تستخدم مجموعة (حزمة) المقاومات لسهولة البناء وخفض التكلفة وتوفير المساحة . تتكون هذه الحزمة من 8 أو 10 مقاومات من نفس القيمة وتكون فى شكل خط واحد .



الشكل التالى يبين كيفية عرض الأرقام من “0” إلى “9” بواسطة وحدة عرض سفن سيجمنت . لاحظ أنه يمكن أيضا عرض بعض الرموز والأحرف .




إن أسهل طريقة لعرض رقم على وحدة عرض سفن سيجمنت تكون أولا إنشاء جدول يوضح الأرقام والشرائح المناظرة التى تكون ON أو OFF لعرض الرقم المطلوب . ثم بعد ذلك ، يمكن تحديد نموذج البتات ( أو المكافىء السداسى عشرى) المطلوب لعرض رقم معين ، ويمكن عرض الرقم المطلوب عن طريق إرسال هذا النموذج إلى الجهاز .
الجدول التالى يبين تشفير وحدة العرض السفن سيجمنت ، وفيه الأرقام ، وحالات الشرائح المناظرة ، والأرقام السداسية عشر المطلوبة لإرسالها إلى المنفذ حيث توصل وحدة العرض بغرض عرض رقم معين .
فى بناء هذا الجدول ، يفترض أن البت الثامنة بصفر لأنها لا تستخدم فى العرض . على سبيل المثال ، لعرض الرقم “5” ، ينبغى علينا إرسال الغدد السداسى عشرى “0x6D” إلى المنفذ المتصل بوحدة العرض .




وحدات العرض السفن سيجمنت المتعددة :
وحدة العرض السفن سيجمنت المفردة يمكن أن تعرض فقط الأرقام من “0” إلى “9” . فى كثير من التطبيقات ، يتم دمج وحدات العرض معا لإنشاء شاشة عرض أكبر . وحدتى عرض خانتين 2-digit يمكنها عرض الأرقام بين 0 و 99 ، وثلاثة وحدات 3-digit تعرض الأرقام من 0 إلى 999 ، وأربعة وحدات 4-digit يمكنها عرض الأرقام من 0 إلى 9999 وهكذا .
الشكل أداه يبين وحدة عرض مكونة من وحدتين لعرض رقمين 2-digit . عادة يتم فى كل مرة اختيار تشغيل رقم (خانة) من الأرقام(الخانات) المتعددة وتسمى طريقة multiplexing . على سبيل المثال ، بدون نظام الاختيار ، شاشة برقمين (وحدتين) سوف تتطلب 14 طرف ، وشاشة بثلاثة أرقام سوف تتطلب 21 طرف ، وهكذا . مع استخدام الاختيار من متعدد ، الشاشة رقمين سوف تتطلب 9 أطراف ، والشاشة بثلاث أرقام سوف تتطلب 10 أطراف ، وهكذا . ميزة أخرى لنظام الانتخاب من متعدد ، هى تخفيض القدرة المستهلكة بشكل ملحوظ .



فى تطبيقات الانتخاب من متعدد ، جميع الشرائح يتم تشغيلها على التوازى فى نفس الوقت ، ولكن يتم تمكين الطرف المشترك فقط ( الأنود أو الكاثود ) للرقم المطلوب . يتم تمكين وعدم تمكين الأرقام (الوحدات) بسرعة لدرجة أنها تعطى الانطباع للعين بأن كلا من وحدتى العرض تكون موصلة ON فى نفس الوقت . على سبيل المثال ، افرض أننا نرغب فى عرض الرقم “25” على شاشة بوحدتين ،من نوع المهبط المشترك . تكون الخطوات كما يلى :
1- أرسال البيانات لعرض “2” على كلا من الوحدتين .
2- مكن Enable الوحدة اليسرى MSB ( خانة المئات) فقط عن طريق توصيل طرف الكاثود المشترك لها بالأرضى .
3- الانتظار لفترة قصيرة .
4- إرسال البيانات لعرض “5” على كلا من الوحدتين .
5- مكن Enable الوحدة اليمنى LSB (خانة الآحاد) فقط عن طريق توصيل طرف الكاثود المشترك لها بالأرضى .
6- الانتظار لفترة قصيرة .
7- العودة إلى الخطوة “1” .
الطرف المشترك لكل وحدة عادة يتم التحكم فيه باستخدام ترانزستور كمفتاح . الشكل التالى يبين شاشة بوحدتى عرض رقمين متصلة بالميكروكونترولر وتستخدم ترانزستورات NPN للتحكم فى الوحدات . لاحظ أن تحديد قاعدة الترانزستور بالمنطق المرتفع سوف يوصل ON الترانزستور وبالتالى سوف يمكن طرف الكاثود المشترك المتصل به .





اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:11 AM المشاركة 50   
افتراضي


تدريبات تمهيدية متدرجة على مفاهيم البرمجة بلغة السى :
الدائرة الكهربية :

سوف نستخدم الميكروكونترولر PIC16F877A ، ومذبذب ساعة بتردد 4MHz . يتم توصيل 8 ليدات إلى أطراف المنفذ PORTB المسماة RB0,RB1,….RB7 ، كما فى الشكل أدناه .
ملحوظة:
بتات السجل TRISB فى الحالة الافتراضية ، فى بداية التشغيل وعند كل إعادة تشغيل Reset ، تكون فى الحالة المرتفعة (آحاد) أى تكون أطراف المنفذ PORTB كمداخل ، لذلك يجب تهيئتها فى بداية الدالة الرئيسية بأصفار عند الرغبة فى أن تكون أطراف المنفذ PORTB مخارج Output .




التدريب الأول :
الغرض :
بيان ما يلى
• رأس البرنامج و نوعى التعليقات .
• الدالة الرئيسية .
• الكتابة إلى سجل التحكم فى الاتجاه TRISB ، وسجل المنفذ PORTB .
• تمثيل البيانات بالنظام العشرى والثنائى والسداسى عشر .


كود:
/* HEADER
*************************
***************
*/

void main()         		// بداية البرنامج بالدالة الرئيسية بهذه الصيغة 
{                  			// ثم قوس فتح الدالة الرئيسية 

				// نبدأبعد ذلك بجسم الدالة الرئيسية وهو محتوى البرنامج

TRISB=0b00000000;     //bin:0B  , dec:0 , hex:0x00    تهيئة المنفذ ليكون مخارج بالثنائى وبالعشرى وبالهكسا  

PORTB=0b00001111;    //dec= 15, hex = 0x0F        جعل الأربع خانات الأدنى مرتفعة والأقصى منخفضة 

}                    	       		 // قوس نهاية الدالة الرئيسية والبرنامج

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:15 AM المشاركة 51   
افتراضي


التدريب الثانى :
الغرض :
• وميض جميع الليدات المتصلة بأطراف المنفذ PORT B .
• التدريب على حلقة goto البسيطة .
• استخدام دالة التأخير .
1- حلقة goto تبدأ بعنوان أو اسم label يلية نقطتى تنصيص وهو هنا "start : " ثم جسم أو أوامر الحلقة . فى نهاية الحلقة نكتب الأمر "goto start ; " لتكرار الحلقة .
2- دالة التأخير هى "Delay_ms(250) " وهى تسبب إنتظار البرنامج فى مكانه للفترة الزمنية المدونة بين القوسين بالملى ثانية .


كود:
void main() 	// مرة أخرى هذه هى صيفة الدالة الرئيسية 
{		// وهذا هو قوس فتح الدالة الرئيسية 

   TRISB=0; 	// تهيئة جميع أطراف المنفذ الثمانية لتكون مخارج 
		// لا تنسى الفاصلة المنقوطة 
   PORTB=0;	// جميع المخارج بأصفار أى الحالة المنخفضة ، كحالة ابتدائية  

	// نبدأ الحلقة بوضع اسم لعنوان للعودة إليه عند ذكره فيما بعد 
   start:			// صيغة اسم العنوان لاحظ النقطتين 

	PORTB=0xFF;	// جعل جميع أطراف المنفذ آحاد أى فى الحالة المرتفعة  
				// نتيجة لذلك تضىء الليدات المتصلة بها  
	Delay_ms(250);	//  إنتظار أو تأخير لمدة 250 ملى ثانية 
 
	PORTB=0;		// جعل جميع أطراف المنفذ بأصفار أى فى الحالة المنخفضة 
				//نتيجة لذلك تنطفأ جميع الليدات 
	Delay_ms(250);	// فترة انتظار والليدات مطفأة قدرها 250 ملى ثانية أيضا 
 
	goto start;	// الذهاب إلى بداية الحلقة حيث يوجد العنوان المذكور لتكرار الحلقة مرة أخرى 

}		// وهذا هو قوس غلق الدالة الرئيسية والبرنامج


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:17 AM المشاركة 52   
افتراضي


التدريب الثالث :
الغرض :

• ما زلنا بصدد التعامل مع سجل التحكم فى الاتجاه TRISB وسجل المنفذ PORTB كمخارج بجميع أطرافه .
• هذا البرنامج يمثل أحد أشكال الأضواء المتحركة .
• بعد هذا البرنامج يمكنك تشكيل نماذج إضاءة متحركة مختلفة
كود:
void main()
{

       TRISB=0; PORTB=0;
       loop:
	PORTB=0B00000001; Delay_ms(250);  //  إضاءة الليد المتصل بالطرف الأول والانتظار 250 ملى ثانية 
	PORTB=0B00000011; Delay_ms(250);  // إضاءة الليدات المتصلة بالطرف الأول والثانى والانتظار
	PORTB=0B00000111; Delay_ms(250);  //  بالمثل 
	PORTB=0B00001111; Delay_ms(250);  //
	PORTB=0B00011111; Delay_ms(250);  //
	PORTB=0B00111111; Delay_ms(250);  //
	PORTB=0B01111111; Delay_ms(250);  //
	PORTB=0B11111111; Delay_ms(250);  //إضاءة جميع الليدات 

	PORTB=0B00000000; Delay_ms(250);  // إطفاء جميع الليدات 

	PORTB=0B00011000; Delay_ms(250);  // إضاءة الليد المتصل بالطرف  4 و 5 
	PORTB=0B00111100; Delay_ms(250);  // إضاءة ليدات الأطراف 3و4و5و6
	PORTB=0B01111110; Delay_ms(250);  //إضاءة ليدات الأطراف 2 و3و4و5و6و7
	PORTB=0B11111111; Delay_ms(250);  // إضاءة جميع الليدات من 1 إلى 8 

	PORTB=0B00000000; Delay_ms(250);  // إطفاء جميع الليدات 
	PORTB=0B11111111; Delay_ms(250);  // إضاءة جميع الليدات 
	PORTB=0B00000000; Delay_ms(250);  //إطفاء جميع الليدات 
	PORTB=0B11111111; Delay_ms(250);  //إضاءة جميع الليدات 
	PORTB=0B00000000; Delay_ms(250);  // إطفاء جميع الليدات 

	goto loop;                                                // تكرار حلقة البرنامج 
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:20 AM المشاركة 53   
افتراضي


التدريب الرابع :
الغرض :

• إستخدام مؤثر المكمل أو المعكوس “ ~ “ .
• هذا المؤثر يعكس جميع بتات المتغير (الوسيط ) الذى يأتى بعده .
كود:
void main()
{

      TRISB=0;
      PORTB=0;

      loop:

             PORTB=~PORTB; 	// تساوى "تخصيص" ، عكس بتات المنفذ ووضع النتيجة فى المنفذ مرة أخرى 
             Delay_ms(250);
             goto loop;
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:24 AM المشاركة 54   
افتراضي


التدريب الخامس :
الغرض :

• الغرض من التدريب استخدام أحد عبارات التحكم فى مسار البرنامج فى عمل حلقة غير منتهية .
كود:
void main()
{

	TRISB=0;
	PORTB=0;

	while(1) 		//  هذه الحلقة سوف تتكرر طالما ان نتيجة الشرط حقيقية أى غير صفرية 
			//  ونحن اجبرناها على أن تكون حقيقية دائما أى أن الحلقة سوف تتكرر دائما 
	{		// while قوس فتح حلقة  

	PORTB=~PORTB;
	Delay_ms(250);

	}	// while  قوس نهاية حلقة  
}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:26 AM المشاركة 55   
افتراضي



التدريب السادس
الغرض :

• التعامل مع بت واحدة من سجل به ثمانى بتات ، البت هى البت الأولى (الأدنى قيمة) bit0 بالمنفذ PORTB .
• مترجم الميكروسى يتعرف على البتات المفردة بالصيغة PORTB.B0 أو PORTB.F0 ، وبالمثل لباقى البتات B0,B1,…..B7 ، و F0,F1,….F7 .
• فى هذا التدريب يتم عمل وميض لليد متصل بهذه البت .
كود:
 void main()
{ 

	TRISB=0;		//تهيئة جميع أطراف المنفذ كمخارج  
	PORTB=0;	
	loop:

	PORTB.B0=1; 	// أكتب أو ضع فى البت الأولى بالمنفذ القيمة 1 أى الحالة المرتفعة 
				// يؤدى ذلك إلى إضاءة الليد 
	Delay_ms(250);

	PORTB.B0=0; 	// ضع فى البت الأولى للمنفذ القيمة 0 أى الحالة المنخفضة 
				// يؤدى ذلك إلى إطفاء الليد 
	Delay_ms(250); 

	goto loop;

}


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 04-06-2017, 01:29 AM المشاركة 56   
افتراضي


التدريب السابع :
الغرض :

• حلقة for ، هى حلقة تكرارية لحدث معين لعدد معين من المرات وبشرط معين .
• فإن تحقق الشرط يتم تكرار حدوث الحدث حتى نهاية العدد المحدد .
• وإن لم يتحقق تم الخروج من الحلقة .
• هذه الحلقة تستلزم وجود متغير لحفظ قيمة عداد دورات التكرار ، ويجب الإعلان عنه قبل الدخول فى الحلقة
• الصيغة العامة for(Part1;Condition;Part3) Action_Statement;
- الجزء الأول هو القيمة الأبتدائية للعداد حيث يتم تنفيذه أولا ومرة واحدة و قبل الدخول إلى الحلقة.
- الجزء الثانى هو شرط الحلقة حيث يتم اختبار هذا الشرط فإن كان صواب تستمر الحلقة
وإن كان خطأ يتم القفز إلى ما بعد نهاية الحلقة.
- الجزء الثالث هو الفعل الذى يتم تكراره فى كل حلقة .


كود:
void main()
{

	int x;		//الإعلان عن متغير عداد الحلقة قبل الدخول فى الحلقة ليتعرف عليه المترجم 
	TRISB=0;			// تهيئة أطراف المنفذ  لتكون مخارج 

	for(x=0;x<18;x++) 		// x=0 القيمة الابتدائية بصفر 
				// x<18 الشرط هو أن يتم التكرار لأقل من 18 أى من 0 إلى 17 أى 18 مرة 
				// x++ الفعل هو مؤثر التزايد ويعنى زيادة العداد بواحد بعد كل حلقة

	{					//البداية  

	PORTB=0xFF;			//جميع أطراف المنفذ فى الحالة المرتفعة 
	Delay_ms(1000);			// إنتظار 1000 مللى ثانية أى ثانية 
	PORTB=0;				// تحويل أطراف المنفذ إلى الحالة المنخفضة 
	Delay_ms(1000);			// الانتظار ثانية 
			
	}					// النهاية 

}						//نهاية الدالة الرئيسية والبرنامج



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